前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 知识点总结(简易版)

MySQL 知识点总结(简易版)

作者头像
不吃紫菜
发布2022-08-18 15:10:47
3650
发布2022-08-18 15:10:47
举报
文章被收录于专栏:每日一Java,进步一点点

MySQL 总结(简易版)

基本语法

0. 1基本语法

代码语言:javascript
复制
# 登录MySQL
$ mysql -u root -p12345612

# 退出MySQL数据库服务器
exit;

-- 显示所有数据库
show databases;

-- 创建数据库
CREATE DATABASE test;

-- 切换数据库
use test;

-- 显示数据库中的所有表
show tables;

-- 创建数据表
CREATE TABLE pet (
    name VARCHAR(20),
    owner VARCHAR(20),
    species VARCHAR(20),
    sex CHAR(1),
    birth DATE,
    death DATE
);

-- 查看数据表结构
-- describe pet;
desc pet;

-- 查询表
SELECT * from pet;

-- 插入数据
INSERT INTO pet VALUES ('puffball', 'Diane', 'hamster', 'f', '1990-03-30', NULL);

-- 修改数据
UPDATE pet SET name = 'squirrel' where owner = 'Diane';

-- 删除数据
DELETE FROM pet where name = 'squirrel';

-- 删除表
DROP TABLE myorder;

//更改表属性结构
【alter table xxx 动词 xxx】
-- 添加主键约束
-- 如果忘记设置主键,还可以通过SQL语句设置(两种方式):
ALTER TABLE user ADD PRIMARY KEY(id);
ALTER TABLE user MODIFY id INT PRIMARY KEY;

-- 删除主键
ALTER TABLE user drop PRIMARY KEY;

0. 2建表约束

约束类型:

  1. 主键primary key
  2. 唯一主键 unique(name)
  3. 非空约束 not null
  4. 默认约束 default ‘男’ or default 10
  5. 外键 foreign key (id)reference class(id)
代码语言:javascript
复制
--建表约束
1. 类型后面加约束
	id INT PRIMARY KEY
2. 单独一句
	① 单个约束
		paimary(id)
	② 多个约束
		primary(id,name)

0. 3 添加和删除约束

1、建表的时候可以添加约束 2、可以使用alter。。。add。。。 3、alter。。。modify。。。 4、删除用 alter。。。drop。。。

图表

1.查询语句结构

image
image

2.聚集函数

image
image

3.字符串中的通配符

image
image

4.where子句中的运算符

image
image

易错点

1. 数据库不分大小写

2. 数字和中文基本都用varchar(在有大量的英文以外的字符则用nvarchar)

3. 约束可以加在字段的后面,也可以换行单独描述字段的约束。

①(sno varchar(10) primary key); ②(sno varchar(10), ​ primary key(sno))

4. 数据库注释方法:--

5. 修改表名

ALTER TABLE table_name RENAME TO new_table_name

6.列的拼接 concat

CONCAT(last_name, ' ', first_name) as Name

7.列内容替换replace

代码语言:javascript
复制
SET emp_no = REPLACE(emp_no, 10001, 10005)
WHERE id = 5;
emp_no列中10001 替换成10005

5. 字段别名方法:constraint

5. 字段不重复方法:distinct department

5. 可以在查询后加 limit( start , number )

start:从哪开始查 (第一个下标为0) number:查几个出来

8. union用法:求并集【union前不用逗号】

select sno,sname from student where xxxxx union select sno,sname from student where xxxxx;

9. ANY 和 ALL

代码语言:javascript
复制
  > ANY	大于子查询结果中的某个值 ,即大于最小值     
   > ALL	大于子查询结果中的所有值,即大于最大值
  < ANY	小于子查询结果中的某个值 ,即小于最大值
  < ALL	小于子查询结果中的所有值,即小于最小值
  = ANY	等于子查询结果中的某个值 ,相当于in     
  =ALL  	等于子查询结果中的所有值(通常没有实际意义)
  !=(或<>)ANY	不等于子查询结果中的某个值,相当于not in
  !=(或<>)ALL	不等于子查询结果中的任何一个值,相当于not in

10.算时间差

代码语言:javascript
复制
year(now()) - year(birthday)

11. 三大范式

代码语言:javascript
复制
1. 1NF

   字段不可拆分 (可拆分的例子:中国广东广州xx街道)

2. 2NF

   列都完全依赖于主键,否则要拆分(如果出现不完全依赖,只可能发生在联合主键的情况下,此时也要拆分为多个表)

3. 3NF

   依赖不能有传递关系,否则要拆分

12. 连接

代码语言:javascript
复制
1. 内连接 

> A inner join B on A.sno=B.sno 
>
> 相当于
>
> where A.sno=B.sno

2. 左连接 (保留A中所有并且输出A∩B,无值填null)

> A left join B on A.sno=B.sno

3. 右链接(保留B中所有并且输出A∩B,无值填null)

> A right join B on A.sno=B.sno

4. 外连接(保留A B所有,无值填null)

> A full join B on A.sno=B.sno

12. 事务

代码语言:javascript
复制
1. 设置事务(默认 autocommit=1 开启自动提交)

> set autocommit = 0 or 1; (0的时候是关闭自动提交,开启手动提交)

2. 查看事务

> select @@AUTOCOMMIT;

3. 回滚到最后一次提交(撤销)

> rollback;

4. 事务开启后,需要手动提交数据(提交后则无法回滚)

> commit;

5. 事务的开启

> ① begin;
>
> ② start transaction;

代码语言:javascript
复制
事务的两种启动方法:

1. 当autocommit=0时

   ①set autocommit=0;

   ​	......

   ​	commit;

   (每次commit前的都算一次事务)

2. 当autocommit=1时(默认)

   ①begin; (start transaction;)

   ​	......

   ​	commit;

   (begin ~~~ 到 commit;才是一次事务)

   ②.........;(每次输入都是一次事务)

13. 事务的特性

代码语言:javascript
复制
1. 原子性

   事务是最小单位,不可再分割,要么一起成功,要么一起失败。

2. 一致性

   编写的程序某个特性要一致,如:not null。

3. 隔离性(**表中下面的隔离级别高,性能低**)

   并发事务之间是隔离的,在事务未提交之前不能被其他session查看

4. 持久性

   事务一旦提交则对数据的改变是无法回滚的。

14. 事务隔离级别操作

代码语言:javascript
复制
1. 查看

   > 系统级别
   >
   > SELECT@@GLOBAL.TRANSACTION_ISOLATIO;
   >
   > 会话级别
   >
   > SELECT @@TRANSACTION_ISOLATION;

2. 修改

   > -- 设置系统隔离级别,LEVEL 后面表示要设置的隔离级别 (READ UNCOMMITTED)。
   >
   > SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

15. 事务的隔离级别

事务的隔离性可分为四种 ( 性能从低到高 ) :(系统默认是REPEATABLE READ)

  1. READ UNCOMMITTED ( 读取未提交 ) 官方:如果有多个事务,那么任意事务都可以看见其他事务的未提交数据
  2. READ COMMITTED ( 读取已提交 ) 理解:自己操作的时候别人提交会影响我的数据。 官方:只能读取到其他事务已经提交的数据。 【事务A对表查询,事务B对表操作,事务A再查询表数据是不变的,但B提交后,A再次查询的数据就是B改变后的数据】
  3. REPEATABLE READ ( 可被重复读 ) 理解:事务间相互独立,只有完成了(提交)自己的部分才能看到别人的操作。 官方:如果有多个连接都开启了事务,那么事务之间不能共享数据记录,否则只能共享已提交的记录。 【事务A对表查询,事务B对表操作后提交,事务A在未提交前,A查到的表数据不变,一旦A提交后再次查询得到的表数据是B更改完的】
  4. SERIALIZABLE ( 串行化 ) 官方:所有的事务都会按照固定顺序执行,执行完一个事务后再继续执行下一个事务的写入操作。 (前一个事务未commit ,下一个事务将会等待)

16. 事务带来的问题

image
image
代码语言:javascript
复制
1. 脏读

   解释:一个事务读取到另外一个事务还未提交的数据

   例子:【小明赖账】小明买东西给了钱,商家发了货,小明回滚。

2. 不可重复读

   解释:在读取同一个表的数据时,可能会发生前后不一致的情况

   例子:【小明算账】小张在算A表平均值,小刘又正在改动A表,小张最后算出来的是小刘改动后的表的平均值。

3. 幻读

   解释:一个事务提交的数据,不能被其他事务读取到

   例子:【小明建q号】小明在a地创建x账号,恰好小刘在小明前几秒创建了x账号,此时小明创建不了x账号,因为已经存在了,但小明查表显示却无x账号。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL 总结(简易版)
    • 基本语法
      • 0. 1基本语法
      • 0. 2建表约束
      • 0. 3 添加和删除约束
    • 图表
      • 1.查询语句结构
      • 2.聚集函数
      • 3.字符串中的通配符
      • 4.where子句中的运算符
    • 易错点
      • 1. 数据库不分大小写
      • 2. 数字和中文基本都用varchar(在有大量的英文以外的字符则用nvarchar)
      • 3. 约束可以加在字段的后面,也可以换行单独描述字段的约束。
      • 4. 数据库注释方法:--
      • 5. 修改表名
      • 6.列的拼接 concat
      • 7.列内容替换replace
      • 5. 字段别名方法:constraint
      • 5. 字段不重复方法:distinct department
      • 5. 可以在查询后加 limit( start , number )
      • 8. union用法:求并集【union前不用逗号】
      • 9. ANY 和 ALL
      • 10.算时间差
      • 11. 三大范式
      • 12. 连接
      • 12. 事务
      • 13. 事务的特性
      • 14. 事务隔离级别操作
      • 15. 事务的隔离级别
      • 16. 事务带来的问题
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档