视图
是1个或几个基本表导出的表
1.创建
create view <视图名> as <子查询> with check option;
create view J_Stu as select * from Stu where Sdept = '计算机'
create view W_Stu(Snum,Savg) as select Stu.Sno,Cno,Grade from
Stu,SC where Stu.Sno = SC.Sno and Sdept = '网络'
create view AVG_Stu as select Sno,avg(Grade) from W_Stu group by Sno;
2.查询
select Sno,Cno from W_Stu;
先建立
create view S_AVG(Snum,Savg) as select Sno,AVG(Grade) from SC gruop by Sno;
再查
select * from S_SVG where Savg >= 90;
3.更新
update J_Stu set Sname ='张三' where Sno = '09003';
insert into J_Stu(Sno,Sname) values ('09007','李四');
delete from J_Stu where Sno = '09003';
更新的条件:
只有当创建时select语句没有聚集函数,没有通过计算得出的列,没有gruop by,union,distinct时,才能更新。
4.删除
drop view <视图名>
drop view W_Stu;
1.查询用户
use MySQL;
select * from user;
2.创建用户
create user '用户名'@'主机名' identified BY '密码';
3.修改用户密码
Alter user '用户名'@'主机名' identified with mysql_native_password BY '新密码';
'主机名' 只能在当前主机
'%'访问数据库
4.删除用户
Drop user '用户名'@'主机名';
函数
1.字符串函数
Concat 拼接
Lower(str) 将字符串全部转换为小写
lpad(str, n, pad) 左填充,用字符串pad,达到长度n
Trim(str); 去掉字符头和尾的空格
substring(str, start, len); 将从start开始截取长度为len的字符串
2.数值函数
cell(x)上取整
flooe(x)下取整
mod(x,y) x/y的模
rand() 0-1的随机数
round(x, y) x四舍五入的值,保留y位小数
3.日期函数
curdate() 当前日期
curtime() 当前时间
now() 当前时间与日期
yera(data) month(data) day(data) data的年,月,日
date_add(date, interval expr type) 返回一个日期/时间值加上时间间隔expr后的时间值 Type表示间隔的时间类型 70 day; 3 year;
datediff (date1,date2) 返回两个日期之间的天数
4.流程函数
if(value, t, f) 如果value为真,返回t,否则f
ifnull(value1, value2) 如果1不为空,返回1,否则2
case when[val1] then[res1] ... else[default] end; 如果1为真,返回res1
case [expr] when [val1] then [res1] .... else [default] end; 如果expr=val1,返回res1
约束
作用于字段上的规则,用于限制存储在表中的数据
目的:保证数据正确,有效,完整
分类:
1.非空 NOT NULL
2.唯一 UNIQUE
3.主键 PRIMARY KEY
4.默认 DEFAULT
5.检查 CHECK
6.外键 FOREIGN KEY
AUTO_INCREMENT自动增长
多个约束间用空格隔开就好
外键约束
让两张表建立联系
添加外键 alter table emp add constraint fk_emp_dept_id foreign key (dept_id) reference dept(id);
删除外键 alter table emp drop foreign key fk_emp_id;
删除/更新行为
NO ACTION 有外键不允许删
RESTRICT 有外键不允许删
CASSADE 有外键同时删子表父表
SET NULL 有外键设置子表外键为null(以上四点都是对父表删除,更新记录)
SET DEFAULT 父表变更,子表将外键列设置一个默认值
语法
Alter table 表名 add constraint 外键名称 foreign key (外键字段)references 主表名(主表字段名) on update cascade on delete cascade;
多表查询
1:n 在多的一方设外键
n:m 建立第三张表,至少包含两个外键,分别关联两个主键
1:1 单表拆分,将基础字段与其他分开,将任意加外键,关联另一个主键,并将外键unique
分类
连接查询 包含内连接,外连接,自连接
子查询
1.内连接
查询两张表交集部分
隐式内连接:select 字段列表 from 表1,表2 where 条件;
显式内连接:select 字段列表 from 表1 [inner] join 表2 on 连接条件;