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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 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 <条件>;
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
2月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
2月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
349 11
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
128 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。

推荐镜像

更多
下一篇
oss云网关配置