数据库中的修改表结构、增删改查、用户权限操作
DDL ==》数据库定义语言 create database,create table drop table
DML ==》数据库操作语言 insert into,delete from,update set,
DQL ==》数据库查询语言 select .... from....
create database dcs;
use dcs;
show tables; 查看所有的表
desc 表名; ==》description描述一个表的结构
mysql数据库的基本的数据类型:
1)文本型 varchar,char
2)数值型 int,bigint(存手机号码),float浮点
3)日期型 date,date_format(日期格式化)
mysql数据库的约束类型:
1)主键约束 primary key
2)自增长约束 auto_increment
3)非空约束 not null
4)默认值约束 default
5)外键约束 foreign key
修改表结构
alter table dcs rename dcs1
altar table dcs add age int(20)
altar table dcs add age int(20) after id
alter table dcs change age sex int(1) primary key auto_increment
alter table dcs modify sex int(1) after id
alter table dcs drop sex ==》删除一个字段
mysql数据库里面的增
insert into 表名(字段1,字段2,字段3)values(值1,值2,值3) ==》增加一个
insert into 表名(字段1,字段2,字段3)values(值1,值2,值3),(值1,值2,值3) ==》增加多个值
insert into 表名 value (值1,值2,值3) ==》值对应的数量和字段的数量必须是一致
insert into 表名 value (值1,值2,值3),(值1,值2,值3)==》增加多个值
mysql数据库里面的删
delete from表名 where id =xxx
truncate 表名
drop table 表名
区别:delete只删除符合条件的数据,不删除表结构和定义,truncate快速删除表的所有数据,不删除表的结构,drop table是删除表结构和定义等等
mysql数据库里面的改 (同一个字段和就是用or,不同的字段和就是用and)
面试题:需要把student表当中成绩不合格和没有成绩的改为80分
update student set score=80 where score <60 or score is null
mysql数据库里面的查
select * from student ==》查所有的数据
select id,age,name from student ==》通过字段进行过滤
select * from student where age >25 and age <30
select * from student where age >=25 and age <=30
select * from student where age between 25 and 30
select * from student limit 10 ==》查表的前10行
select * from student limit 0,10
select * from student limit 1,4 ==》查2-5行
select * from student limit 18,6 ==》查19-24行
select * from student order by score desc limit 10; ==》通过分数降序排序并且查前10行
select * from student where name like “zhang%” ==》张姓开头的
select * from student where name like “%zhang%” ==》张姓在中间的
select * from student where name like “%zhang” ==》张姓结尾的
mysql数据库当中的聚合函数
count ==》count(*)和 count(1),count(字段) ==》count(1)性能会好点
distinct ==》去重
sum ==》求和
avg ==》求平均
max ==》最大
min ==》最小
排序函数 desc ==》descend下降 asc ==》ascend上升
select * from student order by score desc ==》降序排序
select * from student order by score asc ==》升序排序
分组函数 ==》看到每一个班级,每一个部门,每一个开头的都需要分组
select class,count(*) from student group by class ==》查每一个班级的人数总数和班级名称
1)先分组再筛选
求出每一个班级的数学成绩总分大于300分的班级名称和总分数
select class,sum(score) from student group by class having sum(score)>300
2)先筛选再分组
求出每一个班级中男生的班级名称和总分数
select class,sum(score) from student where sex=”男” group by class
3)先筛选再分组再筛选
求出每一个班级中男生的数学成绩总分大于300分的班级名称和总分数
select class,sum(score) from student where sex=”男” group by class having sum(score)>300
where和having之间的区别:
1)group by后面只能接having不能接where
2)where后面是可以接group by,表示先筛选再分组
3)where和having的作用非常相似,都是用来过滤条件的
多表连接【超级重点-需要背诵】
1)基本连接
select * from aa,cc where aa.id = cc.sid
2)内连接(求出2个表的交集部分)
select * from aa inner join cc on aa.id = cc.sid
3)左连接(以左表为主,左表数据会全部显示,然后右边没有的数据会补null处理)
select * from aa left join cc on aa.id = cc.sid
4)右连接(以右表为主,右表数据会全部显示,然后左边没有的数据会补null处理)
select * from aa right join cc on aa.id = cc.sid
5)硬连接(机械的拼接,aa表的字段数量必须和cc表的字段数量需要一致)
select * from aa union select * from cc
6)嵌套=(子查询)
求出张三的成绩?
aa表 ==》有张三的学号id,姓名name
cc表 ==》有张三的学号sid,成绩score
select id from aa where name = “zhangsan” ==》求出张三的id
select score from cc where sid = (select id from aa where name = “zhangsan”)
7)嵌套in(子查询,in后面可以接一个集合)
select score from cc where sid in (select id from aa where name = “zhangsan”)
8)临时表
select * from aa inner cc on aa.id = cc.sid ==》设置为临时表t
select t.score from (select * from aa inner cc on aa.id = cc.sid)t where t.name = “zhangsan”
用户权限操作
grant all privileges on *.* to “root”@”%” identified by “123456”
5. 数据库中的视图、索引、存储过程
视图
面试题:你对于视图的理解?
1)视图是基于基础表创建的,然后对视图进行增删改查的操作也会影响到基础表,对基础表进行增删改查的操作也会影响到视图
2)视图的作用? ==》可以对一些敏感信息和数据进行屏蔽,保护数据的安全
索引
分为普通索引,唯一索引,主键索引,联合索引
索引的作用:加快表数据查询的速度,像书的目录一样做一个检索的功能
存储过程
存储过程的作用:可以通过自定义存储过程写sql语句和逻辑,批量的造测试的数据
存储过程的语法:
create procedure dcs()
begin
#关于sql语句,增删改查的逻辑
end
call dcs() #调用存储过程