Mysql碎片整理:SQL语句的分类及简略概要

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: SQL语句的分类及简略概要。

数据库的操作

创建数据库

  • 创建数据库
CREATE DATABASE 数据库名;
  • 防止在创建重复的数据库时出错:IF NOT EXISTS
CREATE DATABASE IF NOT EXISTS 数据库名;

查看所有数据库

SHOW DATABASES;

切换数据库

USE 数据库的名称;

在数据库中看有哪些表

SHOW TABLES;

删除数据库

DROP DATABASE 数据库名;
  • 删除数据库如果它存在
DROP DATABASE IF EXISTS 数据库名;

表的操作

DDL

DDL(数据定义语言):用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。
  1. CREATE:创建数据库和表等对象
  2. DROP: 删除数据库和表等对象
  3. ALTER: 修改数据库和表等对象的结构

DML

DML(数据操纵语言):用来查询或者变更表中的记录。DML包含以下几种指令。
  1. SELECT:查询表中的数据。
  2. INSERT:向表中插入新数据。
  3. UPDATE:更新表中的数据。
  4. DELETE:删除表中的数据。

DCL

DCL(数据控制语言):用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL包含以下几种指令。
  1. COMMIT:确认对数据库中的数据进行的变更。
  2. ROLLBACK:取消对数据库中的数据进行的变更。
  3. GRANT:赋予用户操作权限。
  4. REVOKE:取消用户的操作权限。

各语句基本使用

DDL

CREATE

  • 创建product表,指定product_id为主键
CREATE TABLE Product
(product_id CHAR(4) NOT NULL,
 product_name VARCHAR(100) NOT NULL,
 PRIMARY KEY (product_id));
  • 建表时给表添加注释
CREATE TABLE 表名
(各个列的信息 ... )
COMMENT '表的注释信息';
  • 防止创建重复的表,我们可以加上IF NOT EXISTS
CREATE TABLE IF NOT EXISTS 表名
(列名 数据类型 [约束]);
  • 总结
CREATE TABLE <表名>
(列名 数据类型 [约束],
 .
 [该表的约束1],[该表的约束2],…)
列的约束信息

注意该内容可以用在创建表和修改表的时候,指定列的属性。

例如创建表时指定DEFAULT 'abc'是表示该列插入时如果不传值,则以abc填充。

CREATE TABLE 表名(
first_column INT, 
second_column VARCHAR(100) DEFAULT 'abc'
);

1. DEFAULT

在列允许为NULL的前提下,如果插入时没有给其某个字段赋值,则值用NULL填充。添加了DEFAULT后,则会以默认值填充。

2. NOT NULL

要求表中的某些列中必须有值,不能存放NULL

CREATE TABLE 表名(
列名 列类型 NOT NULL
);

3. PRIMARY KEY

自带NOT NULL属性

某条记录可以由一个字段确定,该字段可以称为候选键,一个表可以有多个候选键,主键可以由其中的一个候选键或多个结合指定,要注意一个表只能有一个主键,而且其值是唯一的。

CREATE TABLE 表名(
列名 列类型 PRIMARY KEY
);

或者这种用法(可以指定两个候选键为主键)

CREATE TABLE 表名(
列名 列类型,
PRIMARY KEY(列名,列名)
);

4. UNIQUE

UNIQUE可以存放NULL!!反复存放;UNIQUE在一个表中可以指定多次
CREATE TABLE 表名(
列名 列类型 UNIQUE
);

多列组合使用UNIQUE

CREATE TABLE 表名(
列名 列类型,
UNIQUE (列名,列名)
);

5. 外键

在子表中指定外键。 如果A表中的某个列依赖B表中的某个列或者某些列,那么就称A表为 子表,B表为 父表。子表和父表可以使用外键来关联起来。
CREATE TABLE 表名(
列名 类型 REFERENCES 父表名(父表字段)
)

或者

CREATE TABLE 表名(
列名 类型,
CONSTRAINT FOREIGN KEY(子表字段) REFERENCES 父表名(父表字段)
)

注意:【父表】中被子表依赖的【列或者列组合】必须【建立索引】,如果该【列或者列组合】已经是【主键或者有UNIQUE属性】,那么它们也就被默认建立了索引。

6. AUTO_INCREMENT

一个表一个;指定该属性的列需要建立索引;一般拥有AUTO_INCREMENT属性的列都是作为主键的属性

可以为字段类型是整型或者浮点型的设置该属性,设置该属性后,该字段在插入的时候可以忽略,因为它会自动增加。

7. 注释

CREATE TABLE 表名(
列名 类型 COMMENT '描述信息'
)

DROP

  • 删除product
DROP TABLE Product;
  • 防止删除不存在的表,报错,使用IF EXISTS
DROP TABLE TABLE IF EXISTS 表名;

ALTER

  • 【添加列】给Product表添加列product_name,并指定该列的类型是VARCHAR(50)
ALTER TABLE Product ADD COLUMN product_name VARCHAR(50);
  • 【添加列到指定的地方】
ALTER TABLE 表名 ADD COLUMN 列名 列的类型 [列的属性] AFTER 指定列名;
  • 【添加列到第一列】
ALTER TABLE 表名 ADD COLUMN 列名 列的类型 [列的属性] FIRST;

  • 【删除列】Product表删除列product_name
ALTER TABLE Product DROP COLUMN product_name;

  • 【修改表名】

mysql使用RENAME TABLE

RENAME TABLE 旧表名 to 新表名;
  • 【修改列的信息,方式一】
ALTER TABLE 表名 MODIFY 列名 新数据类型 [新属性];
  • 【修改列的信息,方式二】
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [新属性];
  • 修改列的排列位置,将指定列放到第一列
ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 FIRST;
  • 修改列的排列位置,列放到指定列的后边
ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 AFTER 指定的列名;

查看表的结构

下面三个效果是相同的。
  • DESCRIBE 表名;查看表的结构
DESCRIBE 表名;
  • DESC 表名;查看表的结构
DESC 表名;
  • EXPLAIN 表名;查看表的结构
EXPLAIN 表名;

以上是以表格的形式展示该表的结果,下面可以看该表创建时的sql

  • SHOW CREATE TABLE 表名;查看表的结构
SHOW CREATE TABLE 表名;

或者

SHOW CREATE TABLE book\G;

DML

SELECT

  • 查询所有
SELECT * FROM <表名>;
  • 查询某些列
SELECT <列名> FROM <表名>;
  • 查询类别的列,DISTINCT可以将一列中重复的数据去重
SELECT DISTINCT product_type from Product;
  • 条件查询
SELECT <列名>,
FROM <表名>
WHERE <条件表达式>;

INSERT

  • 核心语句模板
INSERT INTO <表名>
(列1, 列2, 列3, ……)
VALUES
(值1, 值2, 值3, ……),
(值1, 值2, 值3, ……)
;

UPDATE

  • 根据条件,进行多列的更新。
UPDATE <表名>
SET <列名> = <表达式>,
SET <列名> = <表达式>
...
WHERE <条件>;

DELETE

  • 删除表中所有的内容(不要尝试)
DELETE FROM <表名>;
  • 因为删除的操作是一行,可以捆绑条件进行删除
DELETE FROM <表名>
WHERE <条件>;
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
27天前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
26天前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
99 3
|
29天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
6月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
140 13
|
6月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
6月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
76 6
|
6月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
485 1