SELECT语句:
1 | SELECT * FROM tb_name; |
WHERE字句:要查询的关系
= > < >= <=
逻辑关系:
AND
OR
NOT
BETWEEN … AND …
LIKE
%:任意长度任意字符
_:任意单个字符
REGEXP,RLIKE 支持正则表达式
IN(18,20,22) 离散取值
IS NULL
IS NOT NULL
正则表达式:
.:表示正则表达式语言中的特殊字符
|:OR
[]:匹配多个字符中的一个
拼接字段:
concat(拼接):将值连接起来(通过追加的方式),构成一个单一的更长的值;
rtrim:去掉值右边的所有的空格
执行全文本搜索
例如:
1 | CREATE TABLE productnotes |
需要注意的是,应该在导入完数据后,进行修改note_text支持全文索引,因为导入数据时还要进行建立索引,会消耗大量时间。
1 | alter table productnotes add fulltext(note_text); |
1 | 建立索引之后,使用两个函数进行全文本搜索,match()指定需要搜索的列,against()指定需要使用的搜索的搜索表达式 |
查询后的语句进行排序:
ORDER BY field_name [DESC|ASC]
DESC:降序
ASC:生序(默认)
1 | SELECT Name,Age FROM students WHERE Age>=20 AND Age <=25 ORDER BY Name DESC; |
字段别名: AS
1 | SELECT Name AS Student_name FROM students; |
LIMIT [offset,]count
SELECT * FROM tb_name WHERE Age LIMIT 2;
SELECT * FROM tb_name WHERE Age LIMIT 2,3;
聚合运算:
AVG()
SUM()
MIN()
MAX()
COUNT()
1 | 计算男同学的平均年龄: |
计算男女同学的平均年龄:
1 | GROUP BY:分组 |
例如:
SELECT sex FROM users GROUP BY 1 HAVING age > 35;
多表查询:
连接:
交叉连接:也叫笛卡尔乘积
自然连接:仅保留具有等值关系的
SELECT prod_name FROM vendors INNER JOIN products ON vendors.vend_id= products.vend_id WHERE vend_name=’ACME’;
外连接:
左外连接:…LEFT JOIN…ON…
右外连接:…RIGHT JOIN…ON…
自连接:
1
2 SELECT student.Name,course.Cname FROM students AS s LEFT JOIN courses AS c ON s.CID1=c.CID;
SELECT student.Name,course.Cname FROM students AS s RIGHT JOIN courses AS c ON s.CID1=c.CID;
子查询:
比较操作中使用子查询:子查询只能返回单个值;
1 | SELECT Name FROM students WHERE Age > (SELECT AVG(age)FROM students); |