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 隔离级别
相关推荐
lv__pf12 分钟前
【TL mysql 3】
数据库
xiaomici1 小时前
Datasphere的数据merge
数据库
小林ixn2 小时前
从零设计一个博客系统的数据库:表结构、索引与约束的实战思考
数据库·后端·mysql
Yang96112 小时前
一台顶三台:鼎讯DLJ-1在不同故障类型中的模式切换数据复盘
服务器·网络·数据库
潘正翔2 小时前
Memcached构建缓存服务器
运维·服务器·数据库·缓存·云原生·memcached
NineData2 小时前
NineData 与平凯数据库(TiDB 企业版)完成产品兼容性互认证
数据库·tidb·ninedata·玖章算术·平凯数据库·产品兼容性认证·tidb企业版
咖啡星人k2 小时前
2026 Text-to-SQL:一句话让 AI 写 SQL,自然语言直接查数据库(MonkeyCode 云端实战)
数据库·机器学习·语言模型·自然语言处理
GreatSQL社区2 小时前
少敲一个字母,GreatSQL 对所有查询“已读不回”
数据库·mysql·greatsql
wangchunyu1143 小时前
PostgreSQL 入门与实践:从零搭建一个 CRUD 应用
数据库·postgresql
涛思数据(TDengine)3 小时前
从_找根因_到_搭系统_:工业 AI 实战直播(十、十一期)
大数据·数据库·人工智能·时序数据库·tdengine