Mysql语法复习总结

主键、联合主键

主键任意两行不可重复且不能为空。

主键可以定义在表的一列也可以一起使用多个列作为联合主键

Mysql不区分大小写

推荐对所有SQL关键字用大写,对所有的列和表名用小写

DISTINCT

DISTINCT关键字只返回指定列不同的行,但DISTINCT运用于所有列而不仅是前置他的列

LIMIT

LIMIT 9,5 指示Mysql返回从第9行开始的5行

LIMIT 5 OFFSET 9 和上面的sql语句等价。

ORDER BY

ORDER BY中使用的列不一定是SELECT正在检索的列

如果有ORDER BY后面有多个列,按照ORDER BY后面指定的列的顺序依次排序,如果前面列的值相同,再按后面的列的顺序排列。

排序默认是升序的

DESC

ORDER BY prod_price DESC。降序排列。

DESC只作用于它前面的一个列。

结合LIMIT

ORDER BY prod_price (DESC) LIMIT 1

可以找出表中的最值

WHERE

BETWEEN AND

WHERE prod_price BETWEEN 5 AND 10;

查询5 <= prod_price <= 10的列

AND、OR

WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10

IN

WHERE vend_id IN (1002, 1003) AND prod_price >= 10

NOT

WHERE vend_id NOT IN (1002, 1003) AND prod_price >= 10

LIKE

%通配符

WHERE prod_name LIKE '%jet' 表示查询prod_name中以jet为结尾的行

WHERE prod_name LIKE '%jet%' 表示查询prod_name中任意位置包含jet的行。

_通配符

WHERE prod_name LIKE '_ jet' _匹配单个字符。%匹配任意数量的字符。

CONCAT

AS

表和字段都可以取别名

SELECT * FROM 表名 [AS] 别名; 

SELECT 字段名 [AS] 别名 [,字段名 [AS] 别名,……] FROM 表名; 

注意,为表和字段指定别名,AS关键字可以省略不写

聚集函数  

AVG():返回某列平均值

COUNT():返回某列的行数

MAX():返回某列的最大值

MIN():返回某列的最小值

SUM():返回某列之和

分组数据(GROUP BY、HAVING)

除聚集函数外,SELECT中的每个列都必须在GROUP BY子句中给出,但是这种语法在mysql中是被允许的,只不过查出来的是一行随着分组的随机数据https://blog.csdn.net/jingshaozhi/article/details/78119749

WHERE的语法适用于HAVING,WHERE过滤行,HAVING过滤分组。

子查询

WHERE中的子查询

WHERE子句中可以使用子查询,有一点需要注意:列必须匹配

SELECT字段中的子查询(相关子查询)

SELECT的一个字段也可以使用子查询,注意完全限定的列名的使用(表明.列名

 

联结(JOIN)

没有WHERE子句(联结条件)限定的结果返回的是两个表的笛卡尔积,检索出的行数是第一个表的行数*第二个表的行数。

INNER JOIN

以下两个语句是等价的,后者使用了INNER JOIN,也是推荐使用的语法

 

OUTER JOIN

联结中包含了那些在相关表中没有关联的行,成为外连接

必须指定使用左连接还是右连接。

  • INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。
  • LEFT JOIN(左连接):取得左表(table1)完全记录,即使右表(table2)并无对应匹配记录。
  • RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表(table2)完全记录,即使左表(table1)并无匹配对应记录。

组合查询(UNION)

union :用于合并多个 select 语句的结果集,并去掉重复的值。 union all :作用和 union 类似,但不会去掉重复的值。

插入(INSERT)

除插入自定义的数据外,还可插入SELECT语句的查询结果,INSERT INTO 后面的列名可以和SELECT后的列名不同,根据位置匹配插入

 

 

参考:

《mysql必知必会》

posted @ 2018-11-23 18:02  Allegro  阅读(237)  评论(0编辑  收藏  举报