有了MySQL的入门,今天就可以进一步学习SQL啦!
目录:
(一)SQL查询语言
包括多表连接查询、SQL复杂查询等
(二)SQL定义和操作语言
包括数据库和数据表的创建、删除和修改,以及数据表的插入等
(一)SQL查询语言
1.SQL多表连接查询
当查询结果的列来自多张不同的表时,需要将多张表连接成一张大的数据表,再选择合适的列返回。目前常用的连接类型有:左连接、右连接、内连接。
语法结构:
select
(1)左连接(LEFT JOIN):以左表为基准,查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充;
- 将两个学生表相连, 不满足连接条件的数据会以NULL填充
SELECT
(2)右连接(RIGHT JOIN):以右表为基准,查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充;
- right join 右外连接查询 使用的比较少,将数据表名字互换位置,用left join完成
(3)内连接(INNER JOIN):查询的结果为两个表中共有的数据。
- 将两个学生表使用INNER JOIN连接起来
SELECT
具体可参考
草莓女孩:SQL中常见的面试题zhuanlan.zhihu.com2.SQL复杂查询
2.1 条件查询
(1)case when
语法结构:
case
如获取有奖金的员工相关信息
select
(2)if
if适用于只有两种条件的情况,比如是、否
语法结构:
if
2.2 排序函数
排序函数常用的为row_number()、rank()、dense_rank()。
语法结构:
#
(1)仅按照成绩进行排名
SELECT
(2)按照课程号进行分组,然后再进行排序
SELECT
关于row_number()、rank()、dense_rank()的区别可以看我之前总结的面试题中的窗口排序函数。
草莓女孩:SQL中常见的面试题zhuanlan.zhihu.com2.3 嵌套查询
语法结构:
select
2.4 子查询
语法结构:
select
举栗子:在student_course表中查询每门课成绩都不低于80的学生id
SELECT
2.4 组合查询
语法结构:
select
union和union all的区别在于:(1)union做去重处理,返回去重后的结果;(2)union all不做去重处理,返回所有。具体的内容可参考
草莓女孩:SQL中常见的面试题zhuanlan.zhihu.com(二)SQL定义和操作语言
1.创建数据库/表
1.1 创建数据库
语法结构:
create
1.2 创建表
语法结构:
create
举栗子
create
关于主键和外键的知识,可以看
草莓女孩:SQL中常见的面试题zhuanlan.zhihu.com-- 查看表的创建语句
2.插入数据
2.1 普通插入数据
(1)插入一行
-- insert into 表名(字段1,字段2,字段3,...) values(值1,值2,值3,....)
(2)插入多行
-- insert into 表名(字段1,字段2,字段3,...) values(值1,值2,值3,....),(值1,值2,值3,....),(值1,值2,值3,....)
2.2 如果没有则插入,如果表中有数据,则忽略
insert
2.3 如果不存在就插入,存在就更新
insert
3.更新表内数据
语法结构:
-- update 表名 set 字段=新值 where 字段=旧值(更新的条件)
4.更新表结构
4.1 修改表名
-- alter table 旧表名 rename to/as 新表名
4.2 增加列
-- alter table 表名 add 列名 数据类型及约束
4.3 修改列
-- 修改表-修改字段类型:不重命名版
-- alter table 表名 modify 列名 类型及约束;
-- 修改表-修改字段名称:重命名版
-- alter table 表名 change 原列名 新列名 类型及约束;
4.4 删除列
-- alter table 表名 drop 列名
5.删除数据库/表/某列
5.1 删除数据库
-- drop database 数据库名;
5.2 删除表
-- drop table 表名;
5.3 清空表
-- truncate table 表名;
5.3 删除行
-- delete from 表名 where 条件;
5.5 delete和drop的区别
(1)delete删除表中的内容,不删除表;
(2)drop删除表或者数据库。
到这里,关于SQL的内容就学的差不多啦!第三篇主要以练习为主,加深大家对SQL的理解和应用。
tips:多练习、多刷题、多总结解题思路
码字不易,喜欢我 ,给我点赞哦!