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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 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 <条件>;
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11天前
|
SQL 关系型数据库 MySQL
【MySQL系列笔记】常用SQL
常用SQL分为三种类型,分别为DDL,DML和DQL;这三种类型的SQL语句分别用于管理数据库结构、操作数据、以及查询数据,是数据库操作中最常用的语句类型。 在后面学习的多表联查中,SQL是分析业务后业务后能否实现的基础,以及后面如何书写动态SQL,以及完成级联查询的关键。
167 6
|
11天前
|
SQL 关系型数据库 MySQL
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
|
11天前
|
SQL 存储 关系型数据库
【MySQL系列笔记】SQL优化
SQL优化是通过调整数据库查询、索引、表结构和配置参数等方式,提高SQL查询性能和效率的过程。它旨在减少查询执行时间、减少系统资源消耗,从而提升数据库系统整体性能。优化方法包括索引优化、查询重写、表分区、适当选择和调整数据库引擎等。
189 3
|
12天前
|
SQL 关系型数据库 MySQL
MySQL SQL error: #1271 - Illegal mix of collations for operation ‘UNION‘
MySQL SQL error: #1271 - Illegal mix of collations for operation ‘UNION‘
|
13天前
|
SQL 关系型数据库 MySQL
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
【MySQL】:探秘主流关系型数据库管理系统及SQL语言
26 0
|
16天前
|
SQL 关系型数据库 MySQL
【MySQL】SQL优化
【MySQL】SQL优化
|
17天前
|
SQL 存储 关系型数据库
MySQL SQL优化
MySQL SQL优化
16 0
|
19天前
|
SQL 关系型数据库 MySQL
快速学习MySQL SQL语句
快速学习MySQL SQL语句
|
24天前
|
SQL Oracle 关系型数据库
常用数据库的分页语句(mySQL、oracle、PostgreSQL、SQL Server)
常用数据库的分页语句(mySQL、oracle、PostgreSQL、SQL Server)
|
26天前
|
SQL NoSQL 关系型数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?-02
【4月更文挑战第13天】该文介绍了几个数据库查询优化技巧。首先,创建覆盖索引如&lt;A,B,C&gt;能加速`select A,B,C from student where A=? and B=? and C=?`的执行。其次,为常用于排序的列建立索引,如在`id,update_time`上建索引,可避免数据排序,显著提高查询速度。优化`count(*)`可通过预估值或使用Redis记录总数,但需注意数据一致性问题。使用索引提示如FORCE INDEX可强制使用特定索引,但应谨慎。将`having`的非聚合条件移到`where`里可提升效率。最后,处理深度分页时
23 3