前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL基础

MySQL基础

作者头像
TagBug
发布2023-03-17 11:40:16
9800
发布2023-03-17 11:40:16
举报
文章被收录于专栏:TagBug

SQL 语法(DDL/DML/DQL/DCL)、函数、约束、多表查询、事务

# MySQL 基础

# SQL 语法

# 数据定义(DDL)

数据库操作

代码语言:javascript
复制
SHOW DATABASES;
CREATE DATABASE [IF NOT EXISTS] 数据库名;
USE 数据库名;
SELECT DATABASE();
DROP DATABASE [IF EXISTS] 数据库名;

表操作

代码语言:javascript
复制
SHOW TABLES;
CREATE TABLE 表名(字段 字段类型,字段 字段类型,...);
DESC 表名;
SHOW CREATE TABLE 表名;
ALTER TABLE 表名 [ADD/MODIFY/CHANGE/DROP/RENAME TO] ...;
DROP TABLE 表名;

# 增删改(DML)

增加数据

代码语言:javascript
复制
INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...)[,(值1,值2,...)...];

修改数据

代码语言:javascript
复制
UPDATE 表名 SET 字段1=值1, 字段2=值2,... [WHERE 条件];

删除数据

代码语言:javascript
复制
DELETE FROM 表名 [WHERE 条件];

# 数据查询(DQL)

DQL 语句

代码语言:javascript
复制
SELECT 字段列表 -> 字段名[AS]别名
FROM 表名
WHERE 条件列表 -> (> >= < <= = <> like between...and in and or)
GROUP BY 分组字段列表
HAVING 分组后条件列表 -> 分组后过滤
ORDER BY 排序字段列表 -> 升序ASC,降序DESC
LIMIT 分页参数 -> 起始索引(从0开始),每页展示记录数

# 用户管理(DCL)

用户管路

代码语言:javascript
复制
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '密码';
DROP USER '用户名'@'主机名';

权限控制

代码语言:javascript
复制
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

# 函数

字符串函数

代码语言:javascript
复制
CONCAT, LOWER, UPPER, LPAD, RPAD, TRIM, SUBSTRING

数值函数

代码语言:javascript
复制
CEIL, FLOOR, MOD, RAND, ROUND

日期函数

代码语言:javascript
复制
CURDATE, CURTIME, NOW, YEAR, MONTH, DAY, DATE_ADD, DATEDIFF

流程函数

代码语言:javascript
复制
IF, IFNULL, CASE [...] WHEN ... THEN ... ELSE ... END

# 约束

  1. 非空约束: NOT NULL
  2. 唯一约束: UNIQUE
  3. 主键约束: PRIMARY KEY (自增:AUTO_INCREMENT)
  4. 默认约束: DEFAULT
  5. 检查约束: CHECK
  6. 外键约束: FOREIGN KEY

# 外键约束语法

添加外键

代码语言:javascript
复制
CREATE TABLE 表名(
    字段名 数据类型,
    ...
    [CONSTRAINT] [外键名称] FOREIGN KEY(外键字段) REFERENCES 主表(主表列名)
);

代码语言:javascript
复制
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名);

删除外键

代码语言:javascript
复制
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

删除 / 更新行为

行为

说明

NO ACTION

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与 RESTRICT 一致)

RESTRICT

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与 NO ACTION 一致)

CASCADE

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。

SET NULL

当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为 null(这就要求该外键允许取 null)。

SET DEFAULT

父表有变更时,子表将外键列设置成一个默认的值(Innodb 不支持)

# 多表查询

多表关系

  • 一对多:在多的一方设置外键,关联一的一方的主键
  • 多对多:建立中间表,中间表包含两个外键,关联两张表的主键
  • 一对一:用于表结构拆分,在其中任何一方设置外键(UNIQUE),关联另一方的主键

多表查询

内连接

代码语言:javascript
复制
隐式:
SELECT...FROM 表A,表B WHERE 条件... 
显式:
SELECT...FROM 表A INNER JOIN 表B ON 条件...

外连接

代码语言:javascript
复制
左外:
SELECT...FROM 表A LEFT JOIN 表B ON 条件...
右外:
SELECT...FROM 表A RIGHT JOIN 表B ON 条件...

自连接:

代码语言:javascript
复制
SELECT...FROM 表A 别名1,表A 别名2 WHERE 条件...

子查询:标量子查询、列子查询、行子查询、表子查询

# 事务

事务简介:事务是一组操作的集合,这组操作,要么全部执行成功,要么全部执行失败。

事务操作

代码语言:javascript
复制
START TRANSACTION;  -- 开启事务
COMMIT/ROLLBACK;    -- 提交/回滚事务

事务四大特性 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

并发事务问题 赃读、不可重复读、幻读

事务隔离级别 READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-252,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # MySQL 基础
    • # SQL 语法
      • # 数据定义(DDL)
      • # 增删改(DML)
      • # 数据查询(DQL)
      • # 用户管理(DCL)
    • # 函数
      • # 约束
        • # 外键约束语法
      • # 多表查询
        • # 事务
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档