Mysql

目录

入门一、mysql库的管理

1、查看所有数据库

2、 创建数据库

3、查看数据库,创建数据语句

4、删除数据库

二、表的管理

1、查看所有的表

2、创建表

3、 查看表sql格式

4、查看表格格式

5、删除表

6、管理数据-增删改

 7、查询数据

三、数据库约束

(1)默认约束 default

(2)非空约束 not null​(3) 唯一约束 nuique ( 唯一约束 :可以有null值,不能重复)

(4)主键约束 primary key (非空+唯一特点)

(5)外键约束- foreign key

四、数据库备份和还原

 五、数据库的三大范式

六、多表查询

 内连接

外连接

子查询

 七、mysql事务

1、什么是事务

2、 开启事务

3、特点

4、隔离级别

5、隔离级别的不同,会出现不同问题

6、查看隔离级别

7、设置隔离级别


入门
一、mysql库的管理


1、查看所有数据库

show databases;

2、 创建数据库

create database 库名;

3、查看数据库,创建数据语句

show create database 库名;

4、删除数据库

drop database 库名;

二、表的管理


1、查看所有的表

show tables;

2、创建表

create table 表名(    -- 内容
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20),
    age INT
    );

3、 查看表sql格式

show create table 表名 ;

4、查看表格格式

desc 表名 ;

5、删除表

drop table 表名 ;

6、管理数据-增删改

        插入数据

-- insert into 表名 values (值);
INSERT INTO stydent92class VALUES (1,'王彦登',24,'男',98,56,85);

        修改数据

-- update 表名 set 列明=值 where 条件;
UPDATE stydent92class SET math = 145 WHERE id = 1 ;

        删除数据

-- delete from 表名 where 条件;   带条件删除数据
-- delete from 表名 ;删除全表数据,表的结构还存在
-- truncate table 表名;-- 删除所有数据,再创建一张一模一样的表

        删除全表的语法

    delete from 表名
    truncate table  表名; 两个区别
    
    1)delete from 表名:只是删除全表数据;表的结构还存在,
                如果表中 存在主键并且自增长约束,那么不会受影响,下一次在插入数据
                继续在之前的基础上继续自增长! 
    2)truncate table 表名 ; 
                将表中数据删除的同时删除了表,然后在创建一张一模一样空表,
                影响自增长主键的值,再次插入数据,自增长从1开始...
        
        等价于
            create table my_use;
            创建一个当前一模一样的表结构

 7、查询数据

        DQL带条件查询

-- where条件查询
--  可以基本运算符:比较运算符(<,>,<=,>=,!=)/逻辑运算符(|| && /and /or)/赋值运算符 =
--  where后面多个or ,in(数据1,数据2) ,在两个值之间 between 值1 and 值2
--  mysql 判断某个字段为null :is null  /is not null

        模糊查询 like        

-- 聚合函数 count(列名)/max(列名)/min(列名)/sum(列名)/avg(列名)
-- 排序查询 order by
-- 分组查询 group by
-- 筛选查询 having
-- 分页查询 limit

-------------------------------------------------------------------------------------------------------------------------------- 

1)查询所有列

-- select * from 表名 ;

2)as 可以省略 -- 查询时指定别名

SELECT
            id AS 92班,
            SUM(IFNULL(chinese,0)) AS 语文总分,
            AVG(math) AS 数学平均分,
            MAX(english) AS 英语最高分,
            MIN(english) AS 英语最低分
FROM
            stydent92class;

3)distinct -- 去除重复数据 “select distinct name from emp”

4)查询年龄大于 20 的总数 : <> !=

5)模糊查询 like

-- select 字段列表  from 表名 where 字段名称 like  '%字符%' ;

-- 查询第二个字符包含化的学生信息
SELECT * FROM student WHERE  NAME LIKE '_%化%' ;


% :包含的指定的字符  使用'%字符值%' 模糊查询包含指定字符的信息
_ :代表单个字符(一个_下划线代表一个字符)
    两个相结合使用: '_%字符值%_'  三个字符:中间字符包含指定的值进行模糊查询

6) 聚合函数查询--单行单列的数据

-- count(列名) :总记录数
-- max(列名): 最大值
-- min(列名字段):最小值
-- sum(字段名称):求和
-- avg(列名):平均分
-- select 聚合函数(列名) from 表名;

-- ifnull (列名 ,0);
-- 查询英语成绩的最高成绩
SELECT  MAX(IFNULL(english,0)) 英语最高分 FROM  student ;

8)排序查询- order by 

order by 字段名称  asc/desc (升序/降序)
-- select 字段列表 from 表名 order by 字段名 排序规则; -- 单个字段进排序

9)分组查询-  group  by

group by 后面不能使用聚合函数

10)筛选- having

-- group by不能聚合函数,但是having后面可以聚合函数

11)分页查询- limit

-- select 字段列表 from 表名  limit 起始行数,每页显示多少条;

-- limit 起始行数=(当前页码数-1)*每页显示的条数,每页显示条数;

三、数据库约束

(1)默认约束 default

default  默认约束 防止出现非法数据null(没有插入造成null值) 


-- 添加约束
ALTER TABLE  test MODIFY gender VARCHAR(2)  DEFAULT '女' ;
-- 通过sql语句修改表的类型,删除默认约束
ALTER TABLE  test MODIFY gender VARCHAR(2) ;

(2)非空约束 not null
​(3) 唯一约束 nuique ( 唯一约束 :可以有null值,不能重复)

-- 通过语句删除唯一约束
-- 删除唯一约束的sql  alter table test drop index 字段名称;  
ALTER TABLE test DROP INDEX phone ;

-- 添加唯一约束
ALTER TABLE test MODIFY phone VARCHAR(11) UNIQUE ;   -- unique

(4)主键约束 primary key (非空+唯一特点)

(5)外键约束- foreign key

1、foreign key

外键所在的表称为从表

例:

cerate table emp (

        id int primary key auto_increment,

        gender Varchar(20),

        dept_id,  --  部门id

        constraint  fk_demp_emp   --- 声明外键

        foreign key (demp_id)  -- 作用在指定从表字段

        references -- 关联

        dept(id) -- 部门表的主键id

2、添加外键

1、创建表的时候直接添加

2、通过alter table 表名 add 添加方式     

3、 删除外键

alter table 表名 drop foreign key 外键名称

 4、级联操作

级联修改  on update cascade  

                当前修改主表的数据,那么从表和主表相关关联的数据一会被随着更改掉

级联删除 on delete cascade

                当删除主表的数据,那么从表和主表关联的数据一会被随着删除掉

通过sql语句删除外键
alter table 表名 drop froeign key 外键名称;

ALTER TABLE emp ADD 
            CONSTRAINT fk_dept_emp
            FOREIGN KEY  (dept_id)
            REFERENCES 
            dept(id) 
ON UPDATE CASCADE -- 添加级联修改
ON DELETE CASCADE ; -- 添加级联删除

 5、mysql中设置外键约束的语法(创建表时添加)

create table 表名(
    字段列表...
    ....,
    constraint 外键名称(fk_主表_从表)
    foreign key (外键字段名称)
    references 主表(主键字段) 
)

通过sql语句删除外键
alter table 表名 drop froeign key 外键名称;
通过sql语句添加外键以及级联操作
alter table 表名 add     constraint 外键名称(fk_主表_从表)
    foreign key (外键字段名称)
    references 主表(主键字段) 
    on update cascade     -- 级联修改
    on delete cascade   -- 级联删除

四、数据库备份和还原

备份:

1、图形界面话:简单直观
  -- 选择数据库---右键----备份---->选择导出的路径(结构以及数据都保存)
  -- 将之前存在库,然后选择 执行指定sql脚本----> 选择指定的sql脚本---进行执行即可!
2、命令行方式
-- 备份:mysqldump -uroot -p密码 备份数据库名称 >  保存的本地地址
还原:
    -- 将原来删除,新建库,使用库, source 将保存的本地地址

 五、数据库的三大范式

1NF :数据库表的每一列都是不可分割的原子数据项,不能出现复合项

2NF:在第一范式的基础上所有列完全依赖于主键列

3NF:在第二范式的基础上,非主键字段不能传递依赖于主键(外键解决)

六、多表查询

内连接、外连接、子查询 

 内连接

1)隐式内连接

操作步骤:
-- 1)查询哪张表
-- 2)要查询的是指定表中的哪个字段
-- 3)表和表之间的关联关系问题

SELECT
    e.name  '员工姓名' ,    
    e.`gender` '性别',
    e.`salary` '工资',
    e.`dept_id` ,
    d.id ,
    d.`name` '部门名称'   


FROM    
    emp  e,dept d -- 员工表的别名e  ,部门表的别名d

WHERE 
    e.`dept_id` = d.`id` ;

 2)显示内连接

-- select <字段列表> 
-- from 表名1 
-- (inner) join 
--  表名2  
-- on 关联关系(连接条件);

SELECT 
            t1.*,-- 员工表中的所有字段 (实际开发中,* 不建议使用!)
            t2.`name` -- 部门表的部门名称
FROM    emp t1
INNER  JOIN       dept t2
ON 
            t1.`dept_id` = t2.`id` ; 

外连接

左外链接:left(outer) join

右外连接:right(outer)join

-- 语法格式 
-- select
 -- 字段列表
 -- from
 -- 表名1 -- 左表
 -- left outer join 表名2 
 -- on 连接条件 ;

子查询

OR  、  、IN   、 not in  、 exists /not exists /any(sql)  

 七、mysql事务

1、什么是事务

在业务操作中,一次性可能同时操作多个sql语句,防止操作多个sql语句时出现问题,将业务看成一个整体进行处理,要么一次性执行成功,要么同时失败!

2、 开启事务

  --开启手动提交事务

start transaction;

--执行操作

update cccount set balance = balance-500 where  name= “22”;

update account set balabce = balance+500 where name= “36”;

--事务回滚 : 回滚到操作之前的状态

rollback ;

--如果没问题,手动提交事务

commit;

3、特点

原子性 : 事务造作业务中,要么同时执行成功,要么同时失败

一致性: 操作语句前后,总量保持不变

隔离性: 将业务使用事务管理,业务和业务之间分离;事务与事务之间不能相互影响,事务是独立的

持久性:一但事务被提交,将是永久储存 

4、隔离级别

 read uncommitted    读未提交,安全性最差,不能有效防止脏读

read  committed    读已提交,安全相对较高,不能防止重复读

reteatable read  可重复读 ,能够防止脏读,可重复读

serializable  串行话

5、隔离级别的不同,会出现不同问题

脏读:一个事务读取另一个没有提交的事务(最严重的问题)
不可重复读: 一般都是update语句影响,两个事务中,一个事务读取的前后的内容不一致!
幻读:一般insert/delete :影响两个事务中,前后数量不一致!

6、查看隔离级别

查询隔离级别 select @@tx_isolation;  mysql5.5/5.7都可以 
SELECT @@transaction_isolation; mysql8.0

7、设置隔离级别

 设置隔离级别 set global transaction isolation level 级别字符串;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彦登的登

动力来源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值