MySql
一、DDL(操作数据库、数据表)
-
创建数据库
-
create database 数据库名称
-
-
查询数据库
-
show databases create database if not exists 数据库名称
-
-
删除数据库
-
drop database 数据库名称 drop database if exists 数据库名称
-
-
使用数据库
-
select database() --查看当前使用的数据库 use 数据库名称 --使用数据库
-
-
创建表
-
create table 表名( 字段名1 数据类型1, 字段名2 数据类型2, …… 字段名n 数据类型n );
-
数据类型
-
用法以及类型百度
-
例子 create table student( id int, name varchar(10), gender char(1), birthday date, score double(5,2), email varchar(64), tel varchar(15), status tinyint );
-
-
-
查询表
-
show tables desc 表名 --查询表结构
-
-
删除表
-
drop table 表名 drop table if exists 表名
-
-
修改表
-
①修改表名 alter table 表名 rename to 新表名 ②添加一列 alter table 表名 add 列名 数据类型 ③修改数据类型 alter table 表名 modify 列名 新数据类型 ④修改列名和数据类型 alter table 表名 change 列名 新列名 新数据类型 ⑤删除列 alter table 表名 drop 列名
-
二、DML(数据库管理语言)
-
添加数据
-
--指定列添加 insert into 表名(列名,……) values(值,……) --给所有列添加数据 insert into 表名(列名,……包括所有列名) values(值,……所有值)
- 批量添加数据:使用逗号
-
-
修改数据
-
update 表名 set 列名1=值1,列名2=值2,……[where 条件]
-
-
删除数据
-
delete from 表名 [where 条件]
-
-
注意点
- 不加where会删除所有数据
三、DQL(查询数据)
-
基础语法
-
select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组后列表 order by 排序字段 limit 分页限定 distinct #去除关键字 as #在列名处起别名
-
-
条件查询
-
select 字段列表 from 表名 where 条件列表 1 查询年龄大于20岁的学员信息 select * from stu where age > 20 2 查询年龄大于等于20岁的学员信息 select * from stu where age >= 20 3 查询年龄大于等于20岁并且年龄小于30岁的学员信息 select * from stu where age >= 20 && age <=30 select * from stu where age >= 20 and age <=30 select * from stu where age between 20 and 30 4 查询入学日期在 1998-01-01 到 1999-09-01 之间的学员的信息 select * from stu where hire_date between '1998-09-01' and '1999-09-01' 5 查询年龄等于18岁的学员的信息 select * from stu where age = 18 6 查询年龄不等于28岁的学员的信息 select* from stu where age != 18 select* from stu where age <> 18 7 查询年龄等于18岁 或者年龄等于20岁 或者年龄等于22岁的学员信息 select * from stu where age = 18 or age = 20 or age = 22 select * from stu where age in (18,20,22) 8 查询英语成绩为 null 的学员信息 #不能用==,判断null只能用is null 或者 is not null select* from stu where english is null 前面的所有查询都是精准的查询 还有一个 Like 模糊查询 LIke _单个字符 %代表任意字符个数 1 查询姓'马'的学员信息 select * from stu where name like '马%' 2 查询第二个字是'花'的学员信息 select * from stu where name like '_花%' 3 查询名字中包含'德'的学员信息 select * from stu where name like '%德%'
-
-
排序查询
-
select 字段列表 from 表名 order by 排序字段名1[排序方式1],排序字段名2[排序方式2],…… 1 查询学生信息,按照年龄升序排列 select * from stu order by age asc #按照年龄升序排列,默认asc 2 查询学生信息,按照数学成绩降序排列 select * from stu order by math desc #降序 3 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列 select * from stu order by math desc, english asc
-
-
分组查询
-
聚合函数
- 概念:将一列作为一个整体,进行纵向计算
- 聚合函数分类
- count:统计数量
- max:最大值
- min:最小值
- sum:求和
- avg:平均值
-
select 聚合函数名(列名) from 表名 null 不参加聚合函数运算 1 统计一个班有多少学生 select count(id) from stu #count统计的列名不能为空 取值:主键 或者 * 2 查询数学成绩的最低分 select max(math) from stu 3 查询数学成绩的最低分 select min(math) from stu 4 查询数学成绩的总分 select sum(math) from stu 5 查询数学成绩的平均分 select avg(math) from stu 6 查询英语成绩的最低分 select min(english) from stu #null不参加运算
-
分组查询
-
1 查询男同学和女同学各自的平均分 select sex, avg(math) from stu group by sex 2 查询男同学和女同学各自的数学平均分,以及各自人数 select sex ,count(*),avg(math) from stu group by sex 3 查询男同学和女同学各自的数学平均分,以及各自人数,低于70分的不参与运算 select sex ,count(*),avg(math) from stu where math > 70 group by sex 3 查询男同学和女同学各自的数学平均分,以及各自人数,低于70分的不参与运算,分组后人数大于2 select sex ,count(*),avg(math) from stu where math > 70 group by sex having count(*) > 2
- where 和 having 的区别
- 执行时机:where 是分组前进行判定,不满足where条件不参与分组,having是分组之后的结果进行过滤
- 可判断条件:where不能对聚合函数进行判断,having可以
- 执行顺序: where > 聚合函数 > having
- where 和 having 的区别
-
-
-
分页查询
-
select 字段列表 from 表名 limit 起始索引,查询条目数 1 从0开始查询,查询三条数据 select * from stu limit 0,3 2 每页显示3条数据,查询第一页数据 select * from stu limit 0,3 3 每页显示3条数据,查询第二页数据 select * from stu limit 3,3 4 每页显示3条数据,查询第三页数据 select * from stu limit 6,3 #起始索引 = (当前页码-1) * 每页显示条数 # 分页查寻 limit 是 MYSQL 专用 # Oracle 分页查询使用 rownumber # SQL server使用的是 top
-