一、笛卡尔集
如:
t_mysql_beauty表:
t_mysql_boys表:
select * from t_mysql_beauty b,t_mysql_boys bo
也就是有17*5条数据
笛卡尔集会在下面条件下产生:
①、省略连接条件
②、连接条件无效
③、所有表中的所有行互相连接
数据过大,可能运行时使电脑卡顿,
为了避免笛卡尔集, 可以在 WHERE 加入有 效的连接条件。
二、等值/连接连接
1、交叉连接
如:
SELECT NAME,boyName FROM boys,beauty WHERE beauty.boyfriend_id= boys.id;
2、内连接 :
[inner] join on
3、左外连接
left [outer] join on
4、右外连接
right [outer] join on
5、等值连接
① 多表等值连接的结果为多表的交集部分
②n表连接,至少需要n-1个连接条件
③ 多表的顺序没有要求
④一般需要为表起别名
⑤可以搭配前面介绍的所有子句使用,比如排序、分组、筛选
如:查询女神名和对应的男神名
SELECT NAME,boyName FROM boys,beauty WHERE beauty.boyfriend_id= boys.id;
三、常见函数
1、字符函数:
作用 | 函数 | 结果 |
---|---|---|
转小写 | LOWER('SQL Course') | sql course |
转大写 | UPPER('SQL Course') | SQL COURSE |
拼接 | CONCAT('Hello', 'World') | HelloWorld |
截取 | SUBSTR('HelloWorld',1,5) | Hello |
长度 | LENGTH('HelloWorld') | 10 |
字符出现索引值 | INSTR('HelloWorld', 'W') | 6 |
字符截取后半段 | TRIM('H' FROM 'HelloWorld') | elloWorld |
字符替换 | REPLACE('abcd','b','m') | amcd |
如:将姓变大写,名变小写,然后拼接
SELECT CONCAT(UPPER(last_name),LOWER(first_name)) 姓名 FROM t_mysql_employees;
2、日期函数
作用 | 函数 | 结果 |
---|---|---|
获取当前日期 | now() | |
将日期格式的字符转换成指定格式的日期 | STR_TO_DATE('9-13-1999','%m-%d-%Y') | 1999-09-13 |
将日期转换成字符 | DATE_FORMAT(‘2018/6/6’,‘%Y年%m月%d日’) | 2018年06月06日 |
如:将字符通过指定的格式转换成日期
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put;
如:将日期转换成字符
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;
四、聚合函数
①、 SUM():求和
②、 AVG():求平均值
③、MAX():求最大值
④、 MIN():求最小值
⑤、 COUNT():统计记录的条数。常与GROUP BY一起使用,有筛选的条件加关键字having
五、合并
①、UNION:将所有的查询结果合并到一起,然后去除掉相同的记录
②、UNION ALL:将所有的查询结果合并到一起,不会去除掉相同的记录