本篇目录
1.对表的操作
1.1.创建表
create table 表名 (
字段1 字段1类型 [comment 注释][约束] ,
字段2 字段2类型 [comment 注释][约束] - -最后一行无逗号
)[comment 注释][约束] ;
1.2.添加字段
#添加字段
alter table
表名
add
字段名 字段类型 (长度) [约束];
1.3查询表
show tables; --查询当前数据库的所有表
desc 表名; --查询表结构
show create table 表名; --查询指定表的建表语句
1.4.修改表
# 修改表名
alter table
表名
rename to
新表名;
---------------------------------------
# 修改字段名和数据类型
alter table
表名
change
旧字段名 新字段名 类型(长度) [约束];
---------------------------------------
# 修改数据类型
alter table
表名
modify
字段名 新字段类型(长度) [约束];
1.5.删除表
drop table 表名; -- 删除表
truncate table 表名; -- 初始化表
2.约束(对上一个一级标题的补充):
- 为什么要约束?
- 对数据进行验证,例如,身份证号不可以为空,故在存储时要先对其进行约束。
- 约束的使用:
- 如果你使用的是专门的软件,如:DataGrip, 那么在创建表的时候会自动生成建表语句和对应的约束。
- 如果你使用的是传统的方式,如cmd命令窗口,那么就需要在建表时手写约束。
- 常用的约束:
- 代码演示(这里使用的是中途添加,也可以在创建表的时候就使用约束):
- 主键:非空且唯一。
- 自增长:
- 唯一:数据不可以重复。
- 非空:添加的不能为空。
- 默认值:当不添加值时会自动赋予默认值。
- 代码演示(这里使用的是中途添加,也可以在创建表的时候就使用约束)
- 在创建字段时给约束:
#添加学号,非空且唯一 alter table student add id int primary key auto_increment comment '学号'; -------------------------------- #添加姓名,非空 alter table student add name varchar(20) not null comment '姓名'; -------------------------------- #英语成绩默认情况为0 alter table student add English int default 0 comment '英语成绩';
在创建表时给约束:
create table student ( id int primary key auto_increment comment '学号', name varchar(20) not null comment '姓名', English int default 0 comment '英语成绩' );
外键约束
- 概念:让两个表的数据之间建立连接。如学生表和班级表之间建立联系
- 语法:
# 创建表时建立,注意:要先创建主表和主表内的数据 create table 从表名 ( 列名1 数据1类型 ... constraint 外键约束名 foreign key 从表中要建立连接的列名 references 主表名 (主表中要建立连接的列名) ); ------------------------- # 将学生的班级与班级表建立外键约束(创建之后建立) alter table 从表名 add constraint 外键约束名 foreign key (从表中要建立连接的列名) references 主表名 (主表中要建立连接的列名); ------------------------- # 删除外键约束 alter table 从表名 drop foreign key 外键约束名;
- 代码演示:
# 将学生的班级与班级表建立外键约束(创建表时建立) create table students ( id int, name varchar(20), Class varchar(20), constraint classpoint foreign key (Class) references allclass (class) ); ------------------------- # 将学生的班级与班级表建立外键约束(创建之后建立) alter table student add constraint classpoint foreign key (Class) references allclass (class); ------------------------- # 删除外键约束 alter table student drop foreign key classpoint;
3.对数据的操作(增删改):
3.1.添加数据:
# 给指定列添加数据
insert into
表名 (列名1,列名2,…)
values
(值1,值2,…);
---------------------------------
# 给所有列添加数据,列名的列表可以省略的
insert into
表名
values
(值1,值2,…);
3.2.修改数据:
# 修改数据,没有加where条件,则会将表中所有数据全部修改!
update
表名
set
列名1=值1,列名2=值2,…
[where 条件] ;
3.3.删除数据:
# 删除数据
delete from
表名
[where 条件] ;
4.对数据的查询(查):
语法:
select 字段1,字段2,… from 表名列表 where 条件列表 group by 分组字段 having 分组后条件 order by 排序字段 limit 起始索引 , 每页显示个数;
4.1.去重(distinct):
# 在查询时按指定的数据去重
select distinct
要去重的数据名
from
表名;
4.2.起别名(as):
# 显示时用别名替代数组名
select
数据名1 as 别名1, --使用as
数据名2 别名2,… --as也可以省略
from
表名;
4.3.条件查询(where):
# 按所给条件查询
select from
表名
where
条件;
4.3.1 .补充:
![]()
条件语句基础知识
4.4.排序查询(order by):
# 按照排序查询数据
select
字段列表
from
表名
order by
要排序的字段名1 [排序方式],
要排序的字段名2 [排序方式],
…;
4.4.1.对排序方式的补充:
asc --升序排序(默认)
desc --降序排序
4.5.聚合查询:
- 概念:将一列数据进行纵向计算。
- 语法:
select 聚合函数名(列名) from 表名;
-
常用聚合函数:
函数名 功能 count(列名)
统计数量(一遍选用不为null的列) max/min(列名)
最大/最小值 sumi(列名)
求和函数 avg(列名)
求均值
4.6.分组查询(group dy)
- 语法:
select 字段列表 from 表名 [where 分组前的条件限定] group by 分组字段名 [having 分组后的条件过滤]
4.7.分页查询(limit)
- 语法:
select 字段列表 from 表名 limit 起始索引 , 每页显示个数;