文章目录
🍑SQL
- DDL :操作数据库,表
- DML :对表中数据进行增删改
- DQL :对表中数据进行查询
- DCL :对数据库进行权限访问
🍃SQL中数据类型
- 数值:整数,小数
- double(5,2) 表示这个小数一共五位,小数点后有两位
- 日期:data ’ - - - ’ 也是用单引号和 - 共同表示
- 字符串 用 ’ ’ 单引号表示
🍃DDL----操作数据库
- 查询: Show databases;
- 创建:
- Creat databases 数据库名称;
- Creat databases if not exists 数据库名称;
- 删除
- Drop databases 数据库名称;
- Drop databases if exists 数据库名称;
- 使用数据库
- 查看当前使用的数据库
- Select database();
- 使用数据库
- use 数据库名称;
- 查看当前使用的数据库
🍃DDL–操作表
-
查询表(retrieve)
- 查询当前数据库下所有表名称;show tables;
- 查询表结构:desc 表名称;
-
创建(Create)
# 创建表
create table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
字段名n 数据类型n
);
# 1.表名和字段名都是自己起的
# 2.最后一行末尾不能加逗号
- 删除表
- Drop table 表名
- Drop table if exist 表名
- 修改表
- 修改表名: Alter table 表名 rename to 新表名;
- 添加一行:Alter table 表名 add 列名 数据类型;
- 修改数据类型:Alter table 表名 Modify 列名 数据类型;
- 修改列名和数据类型:Alter table 表名 change 列名 新列名 数据类型;
- 删除列:Alter table 表名 Drop 列名;
🍃DML–数据增删改
-
查看数据: Select * from 表名;
-
添加:(insert)
- 给指定列添加数据:insert into 表名(列名1,列名2…)
student(id,name)values(值1,值2…)(1,‘张三’); - 给全部列添加数据:insert into 表名 values(值1,值2,值3,值4,值5…);
- 批量添加数据:insert into 表名(列1) values(值1),(值2),值(3)…;
- 给指定列添加数据:insert into 表名(列名1,列名2…)
-
修改:(updata)
- 带where的是修改指定的行,update student set sex=‘女’,state=‘0’ where name =‘李四’;
- 不带where判断的是修改所有的行,update student set state=‘0’;
-
删除:(delete)
- delete from student where name =‘张三’;
- delete from student ;删除语句中如果不加条件,则会把表中所有数据全部删除完!
DQL 数据查询
基础查询:
- 查询多个字段
- select 字段列表 from 表名 fg:select id,name from stu;
- select from 表名; 查询所有数据*(在公司不建议使用)**
- 去除重复记录
- select distinct 字段列表 from 表名
- 起别名
- as as也可以省略 但是字段列表和自己起的名字之间至少留一个空格
- fg:select distinct name as 姓名 from stu;
条件查询(while):
-
语法: Select * from 表名 where 条件列表
-
常见的条件:
-
🍎大于 <小于 >= 大于等于 <= 小于等于 = 等于 <> != 不等于
between … and …在某个范围之内都包含(都包括) in(…)多选一
Like 占位符(模糊查询 _ 单个任意字符 % 多个任意字符 )
is null 是空 is not null 不是空
and && 并且
or || 或者
not ! 非/不是
-
Like Fg:
-
select * from stu where name like ‘马%’; 所有名字中:第一个字为马的
select * from stu where name like ‘%马’; 所有名字中: 最后一个字为马的
select * from stu where name like ‘__马%’; 所有名字中:第三个字为马的
分组查询(group by):
🌳聚合函数
将一列作为一个整体,进行纵向计算
- 聚合函数分类
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选择不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 总和 |
avg(列名) | 平均数 |
聚合函数的用法: select 聚合函数名(列名) from 表名
null值不参与所有聚合函数的运算
- Fg: select max(score)from stu;
🐖分组查询
语法: Select 字段列表 from 表名 [Where 分组前条件限定] Group by 分组字段名 [Having 分组后条件过滤];
注意:分组之后查询的字段为 聚合函数和分组字段 查询其他字段无任何意义
🙅**where和having 的区别**
- 执行的时机不一样,where是在分组之前进行限定,不满足where条件的不参与分组,而having是在分组之后对结果进行过滤
- 可判断的条件不一样,where不能对聚合函数进行判断,而having可以
- 原因:执行顺序: where > group by > having
- Fg:select sex,count(*),sum(score),avg(score) from stu where score >70 group by sex having sum(score)>250;
排序查询(order by):
-
select 字段列表 from 表名 Orfer by 排序字段名1[排序方式1],排序字段名2[排序方式2]…;
-
排序方式 升序: asc 降序 : desc
如果有多个排序条件,当前面条件值一样是,才会根据第二条件进行排序
-
fg: select * from stu order by score desc;
🍃分页查询(limit):
语法:Select 字段列表 From 表名 Limit 起始索引,查询条目数
起始索引从0开始
起始索引=(当前页码-1)*查询条目数
- 不同数据库中分页查询的限定符不同
- 分页查询 limit 是MySql的方言
- Qracle分页查询使用 rownumber