Mysql基础

目录

  • 一、DCL(数据库控制语言)
    • [1.1 管理用户](#1.1 管理用户)
    • [1.2 权限控制](#1.2 权限控制)
  • 二、函数
    • [2.1 字符串函数](#2.1 字符串函数)
    • [2.2 数值函数](#2.2 数值函数)
    • [2.3 日期函数](#2.3 日期函数)
    • 2.4
  • 三、约束
  • 四、多表查询
    • [4.1 内连接查询](#4.1 内连接查询)
    • [4.2 外连接](#4.2 外连接)
    • [4.3 自然连接](#4.3 自然连接)
    • [4.4 联合查询](#4.4 联合查询)
    • [4.5 子查询](#4.5 子查询)
  • 五、事务
  • [5.1 事务操作](#5.1 事务操作)
    • [5.2 事务四大特性](#5.2 事务四大特性)
    • [5.3 并发事务问题](#5.3 并发事务问题)
    • [5.4 事务隔离级别](#5.4 事务隔离级别)

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

1.1 管理用户

查询用户

bash 复制代码
select * from user;

创建用户

bash 复制代码
create user 'username'@'主机' identified by 'password'

修改密码

bash 复制代码
alter user '用户名'@'主机' indentified with mysql_native_password by 'newPassword'

删除用户

bash 复制代码
drop user '用户名'@'主机'

1.2 权限控制

查询权限

bash 复制代码
show grants for '用户名'@'主机'

授予权限

bash 复制代码
grant 权限列表 on 数据库.表名 to '用户名'@'主机'

撤销权限

bash 复制代码
revoke 权限列表 on 数据库.表明 from '用户名'@'主机'

二、函数

2.1 字符串函数

2.2 数值函数

2.3 日期函数

2.4

三、约束

保证数据库中数据的正确性、有效性和完整性

例如:

添加外键

复制代码
alter table 表名 add constraint 外键名称 foreign key 外键字段名(id) references 主表(id)

删除外键

复制代码
alter table 表名 drop foreign key 外键字段名

外键约束删除/更新行为

复制代码
alter table 表名 add constrain 外键名称 foreign key 外键字段名(id) references 主表(id) on update cascade on delete cascade 

四、多表查询

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

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

4.1 内连接查询

复制代码
select * from course,teacher where course.tid = teacher.tid; //隐式
或
select * from course join teacher on course.tid = teacher.tid;//显式

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;

4.3 自然连接

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

复制代码
select a.name,b.name from emp a ,emp b where a.managerid =  b.id

4.4 联合查询

复制代码
select * from A
union all //直接将两个表的数据合并
select * from B

select * from A
union //将两个表的数据合并,并去重
select * from B

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='宋远桥' );

五、事务

5.1 事务操作

复制代码
//查看事务
select @@autocommit
//设置事务为手动
set @@autocommit=0
//提交事务
commit
//回滚事务
rollback

5.2 事务四大特性

5.3 并发事务问题

5.4 事务隔离级别

复制代码
//查看事务隔离级别
 select @@transaction_isolation;
//设置事务隔离级别
set [session|global] transaction isolation level 隔离级别
相关推荐
2301_8135995523 分钟前
Go语言怎么做秒杀系统_Go语言秒杀系统实战教程【实用】
jvm·数据库·python
NCIN EXPE5 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台5 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路5 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家5 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE5 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow125 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO5 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_743623925 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python