• Mysql基础


    一、DCL(数据库控制语言)

    1.1 管理用户

    查询用户

    select * from user;
    
    • 1

    创建用户

    create user 'username'@'主机' identified by 'password'
    
    • 1

    修改密码

    alter user '用户名'@'主机' indentified with mysql_native_password by 'newPassword'
    
    • 1

    删除用户

    drop user '用户名'@'主机'
    
    • 1

    1.2 权限控制

    查询权限

    show grants for '用户名'@'主机'
    
    • 1

    授予权限

    grant 权限列表 on 数据库.表名 to '用户名'@'主机'
    
    • 1

    撤销权限

    revoke 权限列表 on 数据库.表明 from '用户名'@'主机'
    
    • 1

    二、函数

    2.1 字符串函数

    在这里插入图片描述

    2.2 数值函数

    在这里插入图片描述

    2.3 日期函数

    在这里插入图片描述

    2.4

    在这里插入图片描述

    三、约束

    保证数据库中数据的正确性、有效性和完整性
    在这里插入图片描述
    例如:
    在这里插入图片描述
    添加外键

    alter table 表名 add constraint 外键名称 foreign key 外键字段名(id) references 主表(id)
    
    • 1

    删除外键

    alter table 表名 drop foreign key 外键字段名
    
    • 1

    外键约束删除/更新行为
    在这里插入图片描述

    alter table 表名 add constrain 外键名称 foreign key 外键字段名(id) references 主表(id) on update cascade on delete cascade 
    
    • 1

    四、多表查询

    分为一对一,一对多,多对多三种形式

    • 一对多的表在设计时采用在多的一方添加一个外键来管理
    • 多对多的表在设计时采用第三个表来存储其他两个表的主键来管理,通过中间表来维护
    • 一对一的表在任意一方加入外键, 关联另外一方的主键,并且设置外键为唯一的(UNIQUE)

    4.1 内连接查询

    select * from course,teacher where course.tid = teacher.tid; //隐式
    或
    select * from course join teacher on course.tid = teacher.tid;//显式
    
    • 1
    • 2
    • 3

    4.2 外连接

    //左连接:查询course表的数据和course,teacher 交集的部分
    select * from course left join teacher on course.tid = teacher.tid;
    //右连接:查询teacher 表的数据和course,teacher 交集的部分
    select * from course right join teacher on course.tid = teacher.tid;
    
    • 1
    • 2
    • 3
    • 4

    4.3 自然连接

    自己连接自己,必须起别名

    select a.name,b.name from emp a ,emp b where a.managerid =  b.id
    
    • 1

    4.4 联合查询

    select * from A
    union all //直接将两个表的数据合并
    select * from B
    
    select * from A
    union //将两个表的数据合并,并去重
    select * from B
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.5 子查询

    //标量子查询:返回单个值
    seLect * from emp where dept_ id = (select id from dept where name = ' 销售部');
    
    //列子查询:返回一列多行
    select * from emp where dept_ id in (select id from dept where name = ' 销售部' or name = '市场部');
    
    //行子查询:返回一行多列
    select * from emp where ( salary , managerid) = (seLect salary, managerid from emp where name = ' 张无忌')
    
    //表子查询:返回多行多列
    select * from emp where (job,salary) in (selectjob, salary from emp where name ='鹿杖客’ or name='宋远桥' );
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    五、事务

    5.1 事务操作

    //查看事务
    select @@autocommit
    //设置事务为手动
    set @@autocommit=0
    //提交事务
    commit
    //回滚事务
    rollback
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5.2 事务四大特性

    在这里插入图片描述

    5.3 并发事务问题

    在这里插入图片描述

    5.4 事务隔离级别

    在这里插入图片描述

    //查看事务隔离级别
     select @@transaction_isolation;
    //设置事务隔离级别
    set [session|global] transaction isolation level 隔离级别
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    NOIP 2013 普及组初赛试题
    MATLAB 与 Cruise 的联合仿真
    static学习
    Rasa:使用大语言模型进行意图分类
    十年架构五年生活-06 离职的冲动
    使用Keepalived实现双机热备(虚拟漂移IP地址)详细介绍
    实际应用效果不佳?来看看提升深度神经网络泛化能力的核心技术(附代码) ⛵
    四个offer,选择去外包?
    Git管理(Linux版本)
    史上最简洁Kotlin版EventBus的使用教程
  • 原文地址:https://blog.csdn.net/lx00000025/article/details/133700133