Zth's Blog

记录学习路上的点滴

0%

MySql语法笔记

MySql 语法笔记

视频链接

选择语句

Use语句

用于选择数据库

1
Use [数据库名]

Select语句

用于选择某个表中的某些列

1
2
Select [列名1, 列名2, ...]
From [表名]

如果要选择目标表中的所有列, 使用Select *

可以对查询后的数值显示进行更改(这里假设此列类型为数值)

1
Select [列名 * 10 + 1]

还可以在查询后的显示中将列重命名

1
Select [列名 As 显示的名字]

Where语句

用于选择表中的某些行

1
Where [条件]

可以结合Select语句使用, 从满足条件的行中提取列

1
2
3
Select []
From []
Where []

And, Or, Not运算符

记不清优先级就加括号

当要查询哪些行中的制定列是或不是Null时, 使用is (Not) Null而不是= Null

In运算符

1
列名1 = 1 Or 列名1 = 2 Or 列名1 = 3 Or ...

等价于

1
列名1 In [1, 2, ...]

Regexp运算符

正则表达式

Order By子句

常用于Select语句后, 将查询得到的行按某种顺序排序

1
2
3
4
Select []
From []
Where []
Order By [指定键值]

Limit语句

1
Limit [偏移量, 指定量]

跳过前偏移量的行并选择剩下的前制定量的行

连接

内连接

合并两张表的信息, 如果是多表连接, 就紧接着再写一个Join [] On[]就行了

1
2
3
4
Select []
From [表1]
Join [表2]
On [条件]

自连接

一个表和自己合并, 起两个别名就可以了

外连接

假设我们有两张表, 一张表的信息是哪些学生选了那些课, 另一张表是每个课程的详细信息, 现在我们要查询每个学生选的课以及课程的详细信息, 那么我们需要把两张表连接, 但是有的学生并没有选课, 那么使用内连接的话这些学生就不会被显示, 这时候就要使用外连接

1
2
3
4
Select []
From [表1]
[Left / Right] Join [表2]
On [条件]

如果是Left Join那么就表示表1的条件可以为空值, Right Join则表示表2的条件可以为空值, 同样可以多表连接, 建议使用Left Join

隐式连接

可以得到两张表(或多张表)的笛卡尔积

1
2
Select []
From [表1, 表2, ...]

Using字句

当两张表存在相同的列名字并且条件为这两列的值相等时可以用, 也可以指定多列值相同

1
2
3
4
Select []
From [表1]
Join [表2]
Using ([列名1, 列名2, ...])

自然连接

1
2
3
Select []
From [表1]
Natural Join [表2]

当两张表中有且仅有一列的名字相同时课根据此列进行连接

交叉连接

笛卡尔积的另一种写法

1
2
3
Select []
From [表1]
Cross Join [表2]

联合

将多行放在一起显示, 这些行的列数必须相同, 在两个Select语句中间加入Union即可

1
2
3
4
5
Select []
From []
Union
Select []
From []

插入, 删除, 更新数据

插入单行

每一列都插入

1
2
Insert Into [表名]
Values (列1数据, 列2数据, ...)

只插入指定列

1
2
Insert Into [表名] (列名1, 列名2, ...)
Values (列名1数据, 列名2数据, ...)

插入多行

1
2
3
4
Insert Into [表名] (列名1, 列名2, ...)
Values (列名1数据, 列名2数据, ...),
Values (列名1数据, 列名2数据, ...),
...

插入分层行

使用内置函数Last_Insert_id

创建表复制

将已存在的表的某些行或列复制到一张新表里

1
2
3
4
Create Table [新表名] As
Secect []
From [已存在的表名]
Where []

更新单行

1
2
3
Update [表名]
Set [赋值语句1, 赋值语句2, ...]
Where []

这里的Where语句用来选定我们要更改的那一行

也可以将Where语句改为Select语句

1
2
3
Update [表名]
Set [赋值语句1, 赋值语句2, ...]
(Select [])

删除行

1
2
Delete From [表名]
[Where 或 Select语句]

汇总数据

聚合函数

1
2
3
4
5
Max([列名]);
Min();
Avg();
Sum();
Count();

其中Count()默认不计算键值为Null的列, 想要算上空值的话写Count(*), 并且重复键值会被重复计算, 想要不重复就要使用Distinct关键字

1
Count(Distinct [列名])

Group By字句

将查询的数据按指定的某一列或多列键值分组,

1
2
3
4
5
Select []
From []
Where []
Group By [列名1, 列名2, ...]
Order By []

Having字句

对分组后的数据进行筛选

筛选方法如Where一致, 但是条件中只能出现Select选中的列(聚合函数可以无视这个条件)

1
2
3
4
5
6
Select []
From []
Where []
Group By [列名1, 列名2, ...]
Having []
Order By []

Rollup运算符

With跟在Group By之后, 用于汇总聚合函数

1
Group By [] With Rollup

编写复杂查询

All关键字

用于子查询前, 表示所有子查询

Any关键字

用于子查询前, 表示任意一个子查询

Exists运算符

不好解释