day27 | 黑马程序员Java全程笔记 | 第二阶段MySQL基础2

目录

01.反馈

02.回顾

03.排序

04. 聚合函数

05.分组查询

06.分页查询

07.DCL-操作用户和权限(了解)

08.修改账号密码(了解)

09. 数据库备份与还原-图形化界面方式

10.数据库备份与还原-命令方式

11.上午总结

12.表约束概述和作用

13.主键约束-创建主键

14.主键约束-删除主键-主键自增

15.唯一-非空-默认值约束

16.多表关系-一对多

17.多表关系-多对多

18.多表关系-一对一(了解)

19.多表关系-一对多代码实现

20.多表关系-多对多代码实现


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. 聚合函数

作用:将数据聚集到一起,进行统计。

聚合函数:

  1. coun(字段值)t计数

  2. sum(字段名)求和

  3. max(字段名)

  4. min(字段名)

  5. avg(字段名)

语法:

select 聚合函数(*/字段名) from 表名 where 条件;

05.分组查询

作用:对分组后的数据进行统计

语法:select * from 表名 where 条件 group by 字段;

注意:分组查询时,展示的只是每个组中的一个代表,相当于只把组长(当前组的第一条数据)的信息展示出来。

如何让显示查询结果中有查询字段统计: select后就是显示查询结果的,例如 select sexcount(*)from 表 group by sex;

06.分页查询

作用:降低服务器压力,提高执行效率和用户体验感。

分页关键字:limit

语法:select * from 表名 where 条件 limit 起始索引,查询条数;

起始索引:从哪条数据开始查询

查询条数:从起始索引(包含此索引)开始往后查几条

索引:从零开始索引

07.DCL-操作用户和权限(了解)

1.创建用户

语法:create user‘用户名’@‘主机名’ identified by ‘密码’

  1. ‘主机名’:指定该用户在哪个主机上可以登陆,如果是本机用户可用localhost ,如果想让该用户可以从任意远程主机登陆,可以使用通配符%

  2. ‘密码’:该用户的登陆密码,密码可以为空

  3. localhost不是本机,是MySQL所在的服务器,只能在服务器本机登录。

2.授权用户

~ 需要在安装MySQL的那台电脑上进行 ~

语法:grant 权限1,权限2....on 数据库名.表名 to ‘用户名’@‘主机名’;

  1. 授权用户的权限:如 create ,alter,drop,insert,update,delete,select等如果要授权所有的权限用all

  2. 数据库名.表名:该用户可以操作哪个数据库的哪些表 如果授权所有数据库的所有表用‘*.*’

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. 数据库备份与还原-图形化界面方式

备份数据库

  1. 选中你需要备份的数据库右击

  2. 设置如图导出

还原数据库

  1. 假如删除数据库

  2. 右击空白处,点执行sql脚本

  3. 找到你的sql备份文件,打开后执行

  4. 刷新后就出来了

第二种方法,也可以直接把文件拖进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)

  1. 主键中的每一个字段都不能为空

  2. 联合主键字段,拼在一起整体是唯一的就可以

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.多表关系-一对多代码实现

实现用户和订单的一对多关系步骤:

  1. 创建主表:用户表user

  2. 创建从表:订单表orders

  3. 添加外键约束:

    1. 创建从表时,直接添加外键约束

    2. 创建完表后,通过修改表结构添加外键约束

      1. 语法: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.多表关系-多对多代码实现

实现订单和商品的多对多关系步骤:

  1. 创建主表:订单表orders /商品表product

  2. 创建从表:中间表 order_pro

  3. 添加外键约束:

    1. 创建从表时,直接添加外键约束

    2. 创建完表后,通过修改表结构添加外键约束

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 主表(主键字段名);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值