Mysql语法复习总结
Posted kukri
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql语法复习总结相关的知识,希望对你有一定的参考价值。
主键、联合主键
主键任意两行不可重复且不能为空。
主键可以定义在表的一列也可以一起使用多个列作为联合主键
mysql不区分大小写
推荐对所有SQL关键字用大写,对所有的列和表名用小写
DISTINCT
DISTINCT关键字只返回指定列不同的行,但DISTINCT运用于所有列而不仅是前置他的列
LIMIT
LIMIT 5,5 指示Mysql返回从第5行开始的5行
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子句中给出。
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必知必会》
以上是关于Mysql语法复习总结的主要内容,如果未能解决你的问题,请参考以下文章