1. DML(增删改表中数据)
1.添加数据
语法:
Insert into 表名(列名1,列名2,。。。列名n) values(值1,值2.。。。值n)
注意:
列名和值一一对应
如果表名后不给出列名,就是要给所有列添加值
insert into 表名 values(值1,值2,。。。值n)
除了数字类型,其它数据类型需要用单引号或者双引号引起来
2.删除数据
语法:
delete from 表名 [where 条件]
truncate table 表名 先删除之后在创建一个一模一样的空表
注意:
1.如果不加条件(没有where)就会删除表中所有记录
2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
3.修改数据
* 语法:
* update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
* 注意:
如果不加任何条件,则会将表中所有记录全部修改。
2. DQL:查询语句
语法:
select
字段列表(想要查询那一列就写上哪一列)
from
表名的列表
where
条件列表
group by
分组字段
having
分组之后的条件限定
order by
排序
limit
分页
基础查询:
1.多个字段的查询
select 字段名1,字段名2... from 表名;
* 注意:
* 如果查询所有字段,则可以使用*来替代字段列表
2.去除重复
select distinct 字段 from 表名
* distinct
3.计算列
* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
* ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
* 表达式1:哪个字段需要判断是否为null
* 表达式2:如果该字段为null后的替换值。
4.起别名
* as:as也可以省略
条件查询
1.where子句后跟条件
2运算符
* > 、< 、<= 、>= 、= 、<>
* BETWEEN...AND
* IN( 集合)
* LIKE:模糊查询
* 占位符:
* _:单个任意字符
* %:多个任意字符
* IS NULL
* and 或 &&
* or 或 ||
* not 或 !
1.排序查询
语法:order by 子句
order by 排序字段1 排序方式1,排序字段2,排序方式2
排序方式:
ASC:升序,默认的
DESC:降序
2.聚合函数(在select后面)
将一列数据作为一个整体,进行纵向计算(计算完成后都是单行单列的值)
1.count:计算个数
2.max:计算最大值
3.min:计算最小值
4.sum:计算和
5.avg:计算平均值
注意:聚合函数的计算排除null的值
解决方案:
选择不包括非空的列进行计算
INFULL函数
3.分组查询
语法:group by 分组字段;
注意:
分组之后查询的字段:分组字段,聚合函数
在where和having区别:
where在分组之前进行限定,如果不满足条件不参与分组having在分组之后进行限定如果不满足结果就不会被查询出来
where不可以跟聚合函数判断,having可以跟聚合函数判断
4.分页查询
语法: limit 开始的索引,每页查询的条数
(公式)开始的索引=(当前的页面-1)*每页显示的条数
limit语法是一个mysql的方言
3.约束
概述:对表中的数据进行限定从而保证数据的正确性和有效性和完整性
分类:
1.主键约束:primary key
2.非空约束:not null
3.唯一约束:unique
4.外键约束:foreign key
详细介绍
非空约束:值不能为null not null
添加约束的方式
1.在创建表的时候添加约束---在数据类型后面空格写not null
2.创建表后添加非空约束---alter table 表名 modify 数据名 数据类型 not null
3.删除非空约束:alter table 表名 modify 数据名 数据类型
唯一约束:unique
表示了值不能重复
1.在创建表的时候添加唯一约束---在数据类型后面空格写unique
2.创建表后添加唯一约束---alter table 表名 modify 数据名 数据类型 unique
3.删除唯一约束 alter table 表名 drop index phone_number;
主键约束:primary key
注意:
含义:非空且唯一
一张表只能有一个字段为主键
主建就是一张表记录的唯一标识
创建表的时候如何添加主键约束
creat table stu(
id INT PRIMARY KEY,
);
创建表之后添加主键
alter table 表名 MODIFY 主键变量名 主键类型 PRMARY KEY
删除主键
alter table 表名 drop priary key;
自动增长:如果某一列是数值类型的,使用auto_increment 可以完成值的自动增长
--在创建表的时候添加主键约束并且完成主键的自增长
creat table stu(
id INT PRIMARY KEY AUTO_increment
);
删除自动增长:
ALTER TABLE 表名 MODIFY 主键变量名 主键变量数据类型;
添加自动增长
ALTER TABLE 表名 MODIFY 主键变量名 主键变量类型 PRIMARY KEY AUTO_increment
外键约束:foreign key
*创建表的时候,可以添加外键
语法
create table 表名(
...
外键列
constraint 外键名称 foreign key 外键列名称 references 主表的名称
(主表列的名称)
)
*创建表之后,添加外键
alter table 表名 add constraint 外键名称 foreign key 外键列名称 references 主
表的名称(主表列的名称)
*删除外键
alter table employee drop foreign key 外键名称
*级联操作(联动操作)
要在添加外键的时候设置级联
级联更新(当改了一共有外键的数据的时候就可以把别的表中的所有相关数据
一起修改)
语法:
在添加外键约束的语句中添加
on update cascade
级联删除(当删除一共外键的时候就会把相关表中这条数据一起删除):
语法:
在添加外键约束的语句中添加
on delete cascade
注:级联更新和级联删除是可以一起添加的,但是要谨慎使用,因为如果
很多表都关联在一起的时候,如果有误操作则将丢失所有表中的数据