目录
01.反馈
无
02.回顾
char,varchar这两个类型必须要写长度,char(5) 是指固定五个字符,varchar(5)是指小于等于5个字符都可以。
比如:
sex char(2),必须两个字符
card varchar(18),可以18个字符及以下
(了解) alter table 表名 add 字段名称 字段类型 约束; (了解) alter table 表名 modify 字段名称 字段类型 新类型; (了解) alter table 表名 change 旧字段名称 新字段名称 类型; (了解) alert table 表名 drop 字段名; (了解) rename table 旧表名 to 新表名;
insert into 表名 values(值1,值2,值3...); (了解) insert into 表名 set 字段名=值,字段名=值;
DQL: 这个分类不是sql官方提供的,是因为在日常使用中查询使用的频次最高,所以程序员将查询的sql单独的分了一类. 简单查询: select * from 表名 where 条件; 条件: > < >= <= = != <> in between 值1 and 值2 like 逻辑 and or not
03.排序
select * from 表名
where 条件
order by 字段名 [asc/desc], 字段名 [asc/desc];
先根据第一排序字段排,如果相同再在此基础上根据第二排序字段排
04. 聚合函数
作用:将数据聚集到一起,进行统计。
聚合函数:
-
coun(字段值)t计数
-
sum(字段名)求和
-
max(字段名)
-
min(字段名)
-
avg(字段名)
语法:
select 聚合函数(*/字段名) from 表名 where 条件;
05.分组查询
作用:对分组后的数据进行统计
语法:select * from 表名 where 条件 group by 字段;
注意:分组查询时,展示的只是每个组中的一个代表,相当于只把组长(当前组的第一条数据)的信息展示出来。
如何让显示查询结果中有查询字段和统计: select后就是显示查询结果的,例如 select sex,count(*)from 表 group by sex;
06.分页查询
作用:降低服务器压力,提高执行效率和用户体验感。
分页关键字:limit
语法:select * from 表名 where 条件 limit 起始索引,查询条数;
起始索引:从哪条数据开始查询
查询条数:从起始索引(包含此索引)开始往后查几条
索引:从零开始索引
07.DCL-操作用户和权限(了解)
1.创建用户
语法:create user‘用户名’@‘主机名’ identified by ‘密码’
-
‘主机名’:指定该用户在哪个主机上可以登陆,如果是本机用户可用localhost ,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
-
‘密码’:该用户的登陆密码,密码可以为空
-
localhost不是本机,是MySQL所在的服务器,只能在服务器本机登录。
2.授权用户
~ 需要在安装MySQL的那台电脑上进行 ~
语法:grant 权限1,权限2....on 数据库名.表名 to ‘用户名’@‘主机名’;
-
授权用户的权限:如 create ,alter,drop,insert,update,delete,select等如果要授权所有的权限用all
-
数据库名.表名:该用户可以操作哪个数据库的哪些表 如果授权所有数据库的所有表用‘*.*’
3.撤销权限(了解)
语法:revoke all on *.* from '用户名'@'主机名';
4.查看权限(了解)
show grants for '用户名'@'主机名';
5.删除用户(了解)
drop user '用户名'@'主机名';
08.修改账号密码(了解)
1.修改管理员密码
需要在未登录MySQL的情况下操作
语法:mysqladmin -h主机地址 -uroot -p password 新密码
输入原始密码
2.修改普通用户的密码
需要在登录MySQL的情况下操作
语法:set password for '用户名'@'主机名'=password('新密码');
09. 数据库备份与还原-图形化界面方式
备份数据库
-
选中你需要备份的数据库右击
-
设置如图导出
还原数据库
-
假如删除数据库
-
右击空白处,点执行sql脚本
-
找到你的sql备份文件,打开后执行
-
刷新后就出来了
第二种方法,也可以直接把文件拖进sqlyog,然后全选语句执行,刷新就出来了。
10.数据库备份与还原-命令方式
备份格式: mysqldump -u用户名 -p密码 数据库名 > 文件的路径
注意: 备份的sql文件中,没有创建数据库的语句,在恢复数据时需要手动创建数据库
还原格式: source 导入文件的路径;
注意:还原的时候需要先登录MySQL,并选中对应的数据库
11.上午总结
DQL: 查询 ★★★★★ 基本查询: ★ select *,字段名 from 表名 where 条件 别名查询 查询结果参与运算 去重复查询 条件: 比较运算符 逻辑运算符 and or not in between 值1 and 值2 like _ % 排序: 作用: 对查询结果进行排序 select * from 表名 where 条件 order by 字段名 [asc|desc],字段名 聚合函数: ★ 作用: 对数据进行统计 count(字段名) sum(字段名) min(字段名) max(字段名) avg(字段名) 分组: select * from 表名 where 分组前筛选条件 group by 字段 having 分组后条件 where和having区别: where用在分组前,对分组前的数据进行筛选 having用在分组后,对分组后的数据进行筛选 where后不能使用聚合函数 having后可以使用聚合函数 limit: 分页 ★ 作用: 降低服务器压力,提高服务器指定效率,提高用户体验度 语法: select * from 表名 where 条件 limit 起始索引,每页显示条数 已知条件: 当前页页码 每页显示条数 必须条件: sql执行时需要的参数 起始索引 = (当前页页码-1)*每页显示条数 每页显示条数 DCL: 数据控制语言(了解) 操作用户和权限 数据库备份与还原: ★ 命令方式: 备份: mysqldump -uroot -proot db1 > /db1.sql 还原: source /db1.sql; 注意: 命令方式备份的数据库不会有建库语句,还原时,需要手动创建数据库,并进入 图形化界面: 使用sqlyog进行备份与还原 表约束: ★ 主键约束 非空约束 唯一约束 默认值约束 多表关系: 外键约束 一对一 一对多 多对多
12.表约束概述和作用
概述:
约束就是一种限制,通过这种限制来保证表中数据的正确性,有效性和完整性。
主键约束:
primary key
特征:被修饰的字段非空,唯一
非空约束:
not null
特征:被约束的字段不可为空
唯一约束:
unique
特征:被修饰字段唯一
默认值约束:
default
特征:给一个字段设置默认值
13.主键约束-创建主键
特征:被修饰的字段唯一,非空,一个表只能有一个主键,但是主键可以由多个字段组成
语法1:创建表时,在字段约束区添加主键约束
create table 表名(
id int(11)primary key,
name varchar(3)
);
语法2:创建表时,在表的约束区添加主键约束
create table 表名(
id int(11),
name varchar(3),
primary key(id,name)
);
语法3:创建完表后,通过修改表结构,添加主键约束
alter table 表名 add primary key(字段名称);
联合主键
primary key(id,name)
-
主键中的每一个字段都不能为空
-
联合主键字段,拼在一起整体是唯一的就可以
14.主键约束-删除主键-主键自增
删除主键:
alter table 表名 drop primary key;
主键自增:
create table 表名(
id int(11)primary key auto_increment,
name varchar(3)
);
默认从1开始不断自增
修改自增的主键的值
alter table 表名 auto_increment=1;
15.唯一-非空-默认值约束
主键约束的三种方式,以下约束基本都可以用,但是我们学一种就可以了,用不到那么多。
唯一约束:
字段 字段类型 unique,
特征:被修饰字段唯一,对null值无效
非空约束:
字段 字段类型 not null,
特征:被约束的字段不可为空
默认值约束:
字段 字段类型 default 默认值,
特征:给一个字段设置默认值,如果添加时没有给值,就使用默认值
16.多表关系-一对多
表关系概述:
在MySQL中存放表与表之间的关系,让MySQL维护多表数据之间的关系。
一对多:
比如:用户表和订单表之间的一对多的所属关系如何存放在MySQL中呢?
我们管1的一方称之为主表或1表,(用户表)
我们管多的一方称之为从表或多表。(订单表)
在从表中添加一个字段,字段名自定义(一般为主表名_id),类型要和主表的主键类型保持一致,我们管这个字段叫外键字段。
外键字段作用:存放主表主键的值。
17.多表关系-多对多
如何在MySQL中描述两张表中数据的多对多关系?
多对多:也就是两个一对多
在工作中,我们会在MySQL中创建一张中间表,中间表的名称自定义(一般为两张主表名,中间加下划线)
中间表有两个外键字段,分别存放两张主表主键的值
外键字段名:主表名_id,外键类型与主表主键类型保持一致。比如oid,pid等价于orders_id,product_id。
18.多表关系-一对一(了解)
一般情况下,直接将数据存放在一张表中。
特殊情况,比如:早期qq登录表很多字段,登录不方便,就拆成一张常用的用户登陆表和一张不常用的用户详情表。给他们建立一对一的关系(两张表主键id一致)。提高了登录效率。
19.多表关系-一对多代码实现
实现用户和订单的一对多关系步骤:
-
创建主表:用户表user
-
创建从表:订单表orders
-
添加外键约束:
-
创建从表时,直接添加外键约束
-
创建完表后,通过修改表结构添加外键约束
-
语法:alter table 从表 add foreign key (外键名) references 主表(主键字段名);
-
-
create table `user`( id int(11) primary key auto_increment, `name` varchar(20) ); create table orders( id int(11) primary key auto_increment, money double(7,2),# 整数位是7位,小数位是2位。 user_id int(11), #创建从表时,直接添加外键约束 foreign key (user_id) references user(id); ); #创建完表后,通过修改表结构添加外键约束 alter table orders add foreign key (user_id) references user(id);
20.多表关系-多对多代码实现
实现订单和商品的多对多关系步骤:
-
创建主表:订单表orders /商品表product
-
创建从表:中间表 order_pro
-
添加外键约束:
-
创建从表时,直接添加外键约束
-
创建完表后,通过修改表结构添加外键约束
-
create table product( id int(11) primary key auto_increment, `name` varchar(20), price double(7,2) ); create table order_pro( id int(11) primary key auto_increment, oid int(11), pid int(11), #创建从表时,直接添加外键约束 foreign key (oid) references orders(id); ), foreign key (pid) references product(id) ); #创建完表后,通过修改表结构添加外键约束 alter table order_pro add foreign key (oid) references orders(id);
删除外键约束
alter table 从表 drop foreign key 外键名称;
查看外键名称:右击表名,点击改变表,点击外部键,约束名就是外键名称。自动生成的是类似于ibfk_1。
如果想自己命名:alter table 从表 add constraint 外键约束名称 foreign key (外键字段名) references 主表(主键字段名);