1.DQL --重点
1.1基础查询
基本语法:[]可有可无 只要写了 前后顺序不能颠倒
select 查询的字段,字段2,... from 表名或者视图名
[where 分组前条件]
[group by 分组的字段]
[having 分组后条件]
[order by 排序的字段 升序(ASC)或降序(DESC)]
[limit [起始下标,]行数];
1.2 where子句
就是将前面的查询结果做第一次筛选
1.查询范围 mysql逻辑运算符: and or not
select * from 表 where 成绩>60;
select * frmo 表 where 成绩>60 and 成绩<80
-- 属于闭区间 包括80和90
select * frmo 表 where between 60 and 80
2.筛选是否为null值
select * from 表 where 字段 is null
select * from 表 where 字段 is not null
3.筛选不等于
select * from 表 where 科目编号 !='java';
select * from 表 where 科目编号 <>'java'; --不存在 ><
4.筛选等于 或者等于多个值
select * from 表 where 部门编号=20;
-- 统计10 30 50部门的员工信息
select * from 表 where 部门编号=10 or 部门编号=20 or 部门编号=50
-- 简化写法 in()函数 等价于或者的意思
select * from 表 where 部门编号 in(10,30,50);
1.3 like子句
如果做查询时,这个条件如果不具体
语法:
select 查询字段 from 表 where 字段 like ???;
- :表示一个字符 一般情况确定 位数时使用
% :可以表示0-n个字符 一般情况下不确定位数时使用
比如:
'%a' : 是a字符结尾
'a%' : 是a字符开头的
'a__': 长度是3 以a字符开头
'%a_': 倒数第二个字符是a
'%a%': 包含a字符的内容 后期做搜索功能最多的实现
1.4 union子句
mysql中union用于链接多个select语句的结果集 最终合并成一个结果集
特点: 浙西select语句如果有重复的数据会自动去重,并且还可以实现数据库列转行
语法:
select 字段1,字段2 from 表
union
select 字段1,字段2 from 表
语法2:如果不想去除多个结果集重复数据 使用union all
注:要求多个查询语句的个数必须是一样的,跟字段类型没有关系
1.5 order by子句
数据库本身的数据默认无序的,因为不知道该用什么规则排序,如果想排序 需要通过关键字order by来实现,并且排序关键字是有先后顺序的 一般是写在除了limit语句的最后
语法:
order by 排序的字段 排序规则:
排序规则: ASC升序(默认值) DESC降序
1.6 limit子句
limit是mysql中用于通过下标(索引值)来限定查询条数的一种方式,它后期也是实现数据分页非常重要的途径,并且limit一般要写在sql语句末尾
语法:
limit [起始索引值,]查询条数;
比如:查询一张表 每页实现5条 查询第三页数据
limit 10,5 //10表示下标为10的数据开始查询,查询5条
比如:查询一张表 前10条数据
limit 0,10;或者 limit 10;
2.mysql约束
约束:
-
非空约束:not null 保证字段不能为空
-
默认约束:default保证字段一定会有值,如果没有插入 设置成默认值 如果插入null也算插入了值
-
唯一约束:unique 保证字段唯一性 但是数据是可以为空的,并且 唯一约束 还会自动添加唯一索引
-
检查性约束:check 是用于给字段做一些简单校验 但是mysql会失效,语法是通过的 但是没有效果
-
主键约束:primary key(pk) 用于控制数据唯一的方式,主键约束自带唯一和非空两种功能 但是主键约束每张表只能写一个 并且主键约束也会自动添加索引 叫做主键索引
-
外键约束:foreign key(fk) 定义在具有父子关系的子表中,子表中的外键必须对应父表中的主键(或者唯一键) 目的是为了确保数据的完整性 并且外键可以重复可以为null
前提:添加外键时,一定是先创建父表再创建子表
1.
2.表已存在 添加约束
alter table
alter table 表名 modify 字段 加字段类型 not null;
alter table 表名 add 字段 check();
alter table 表名 alter column 字段 set default 12;
alter table 表名 add foreign key(city_id) references city(id);