SQL分类
DDL:操作数据库,表等
DML:对表中的数据进行增删改
DQL:对表中的数据进行查询
DCL:对数据库进行权限控制
DDL
DDL--操作数据库
1.查询
show databases;
2.创建数据库
create database 数据库名称;
3.创建数据库(判断,如果不存在则创建)
create database if not exists 数据库名称;
4.删除数据库
drop database 数据库名称;
5.删除数据库(判断,如果存在则删除)
drop database if exists 数据库名称;
6.查看当前使用的数据库
select database();
7.使用数据库
use 数据库名称;
DDL--操作表
1.查看当前数据库下所有的表名称
show tables;
2.查询表结构
desc 表名称;
3.创建表
create table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
...
字段名n 数据类型n
);
注意⚠️(最后一行末尾,不能加逗号)
4.删除表
drop table 表名;
5.删除表时判断表是否存在
drop table if exists 表名;
6.修改表名
alter table 表名 rename to 新的表名;
7.添加一列
alter table 表名 add 新列名 新数据类型;
8.修改数据类型
alter table 表名 modify 列名 新数据类型;
9.修改列名和数据类型
alter table change 列名 新列名 新数据类型;
10.删除列
alter table 表名 drop 列名;
11.数据类型
分类 数据类型 大小 描述
数值类型: tinyint 1 小整数值
smallint 2bytes 大整数值
mediumint 3bytes 大整数值
int 或 integer 4bytes 大整数值
bigint 8bytes 极大整数值
float 4bytes 单精度浮点数值
donble 8bytes 双精度浮点数值
score double(总长度,小数点后保留的位数)
0-100 2
总长度:最大值位数 + 小数位数
decimal 小数值
日期和时间类型: date 3 日期值
time 3 时间或持续时间
year 1 年份值
datetime 8 混合日期和时间值
字符串类型: char 0-255bytes 定长字符串
char:固定一个长度例如10个字符,如果大于10个字符,就会报错,如果小于10个字符,也会占用10个字符
(存储固定长度)(浪费空间)(存储性能高)
varchar 0-6535bytes 变长字符串
varchar:固定一个长度例如10个字符,输入“张三”然后占用的字符个数是2个
(存储不定长度)(节约空间)(存储性能低)
DML
添加数据
1.给指定列添加数据
insert into 表名(列名1,列名2,...) values(值1,值2,...);
2.给全部列添加数据
insert into 表名 values(值1,值2,...);
3.批量添加数据
insert into 表名(列名1,列名2,...) values(值1,值2,...),(值1,值2,...),...;
insert into 表名 values(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
修改数据
1.修改表数据
update 表名 set 列名1 = 值1,列名2 = 值2,... where 条件;
注意:如果update语句没有加where条件,则会将表中所有数据全部修改!
删除数据
1.删除表数据
delete from 表名 where 条件;
注意:删除语句中如果不加条件,则将所有数据删除!
DQL
DQL--基础查询
1.查询多个字段
- select 列名 from 表名;-- 查询指定数据
- select * from 表名;-- 查询所有数据 (不建议使用)
2.去除重复记录
select distinct 列名 from 表名;
3.起别名
AS:AS 也可以省略
例:math as 数学 english as 英语(有不认识的单词时,可以用别名起中文名)
DQL--条件查询(where)
1.条件查询语法
select 列名 from 表名 where 条件列名;
2.条件:
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<> or != | 不等于 |
between ... and ... | 在某个范围之内(都包含) |
in(...) | 多选一 |
like 点位符 | 模糊查询: _单个任意字符 %多个任意字符 |
is null | 是 null |
is not null | 不是 null |
and or && | 并且 |
or 或 || | 或者 |
not or ! | 不是 |
DQL--排序查询(order by)
1.排序查询语法
select 列名 from 表名 order by 排序列名1 [排序方式1],排序字段名2 [排序方式2] ...;
2.排序方式:
- ASC:升序排列(默认值)
- DESC:降序排列
3.注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
DQL--聚合函数
1.概念:将一列数据作为一个整体,进行纵向计算。
2.聚合函数分类:
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
3.聚合函数语法:
select 聚合函数名(列名)from 表;
注:null值不参与所有的聚合函数运算
DQL--分组查询(group by)
1.分组查询语法
select 查询的列名 或 聚合函数(列名) from 表名 [where 分组条件限定] group by 分组列名 [having 分组后条件过滤];
注:分组之后,查询的字段为聚合函数和分组字段。
2.where 和 having 区别:
- 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。
- 可判断的条件不一样:where 不能对聚合函数进行判断,having可以。
3.执行循序:where > 聚合函数 > having
DQL--分页查询(limit)
1.分页查询语法
select 列名 from 表名 limit 起始索引 ,查询条目数;
- 起始索引:从0开始
2.计算机公式:起始索引 = (当前页码 - 1)* 每页显示的条数
约束
1.约束的概念:
- 约束是作用于表中列上的规则,用于限制加入表的数据
- 约束的存在保证了数据库中数据的正确性,有效性和完整性
2.约束的分类
约束名称 | 描述 | 关键字 |
---|---|---|
非空约束 | 保证列中所有数据不能有 null 值 | not null |
唯一约束 | 保证列中所有数据不相同 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空唯一 | primary key |
检查约束 | 保证列中的值满足某一条件 | check |
默认约束 | 保存数据时,未指定值则采用默认值 | default |
外键约束 | 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性 | foreign key |
自动增长 | 当列是数字类型并且唯一约束 | auto_increment |
注意:Mysql不支持检查约束
非空约束
1.概念:非空约束用于保证列中所有数据不能有 null 值
(1) 添加约束
-- 创建表时添加非空约束
create table 表名(
列名 数据类型 not null,
...);
-- 建完表后添加非空约束
alter table 表名 modify 列名 数据类型 not null;
(2)删除约束
alter table 表名 modify 列名 数据类型;
唯一约束
1.概念:唯一约束用于保证列中所有数据各不相同
(1)添加约束
-- 创建表时添加唯一约束
create table 表名(
列名 数据类型 unique [auto_increment],
-- auto_increment:当不指定值时自动增长
...
);
create table 表名(
列名 数据类型,
...
[constraint] [约束名称] unique(列名)
-- 建完表后添加唯一约束
alter table 表名 modify 列名 数据类型 unique;
(2)删除约束
alter table 表名 drop index 列名;
主键约束
1.概念:
- 主键是一行数据的唯一标识,要求非空唯一
- 一张表只能有一个主键
(1)添加约束
-- 创建表时添加主键约束
create table 表名(
列名 数据类型 primary key [auto_increment],
...
);
create table 表名(
列名 数据类型,
[constraint] [约束名称] primary key(列名)
);
-- 建完表后添加唯一约束
alter table 表名 add primary key(列名);
(2)删除约束
alter table 表名 drop primary key;
默认约束
1.概念:保存数据时,未指定则采用默认值
(1)添加约束
-- 创建表时添加默认约束
create table 表名(
列名 数据类型 default 默认值,
...);
-- 建完表后添加默认约束
alter table 表名 alter 列名 set default 默认值;
(2)删除约束
alter table 表名 alter 列名 drop default;
外键约束
1.概念:外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性
(1)添加约束
-- 创建表时添加默认约束
create table 表名(
列名 数据类型,
...[constrint] [外键名称] foreign key(外键列名) references 主表(主表列名)
例子:constrint fk_表名1_表名2 foreign key(外键列名) references 主表(主表列名)
);
-- 建完表后添加外键约束
alter table 表名 add constraint 外键名称 foreign key (外键名称) references 主表名称 (主表列名称)
(2)删除约束
alter table 表名 drop foreign key 外键名称;