MySQL—常用语句汇总

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL—常用语句汇总

Do what you say,say what you do.


常用语句


创建-删除数据库


  1. 创建数据库
    CREAT DATABASE <表名>;

    CREAT DATABASE IF NOT EXISTS <表名>;
  2. 删除数据库
    DROP DATABASE <表名>;

    DROP DATABASE IF EXISTS <表名>;


创建-更改-删除表


  1. 创建表

方法一:直接创建表

CREATE TABLE +表名

CREATE TABLE IF NOT EXISTS +表名

CREATE TABLE <表名>
  列名 类型 其他属性,
  列名 类型 其他属性,
  列名 类型 其他属性
);

属性:

  • 默认:DEFAULT
  • 非空:NOT NULL
  • 唯一值:UNIQUE
  • 主键:PRIMARY KEY
  • 自动增加:AUTO_INCREMENT
CREATE TABLE
[IF NOT EXISTS] table_name -- 不存在才创建,存在就跳过
(column_name1 data_type1 -- 列名和类型必选
   [ PRIMARY KEY -- 可选的约束,主键
   | FOREIGN KEY -- 外键,引用其他表的键值
   | AUTO_INCREMENT -- 自增ID
   | COMMENT comment -- 列注释(评论)
   | DEFAULT default_value -- 默认值
   | UNIQUE -- 唯一性约束,不允许两条记录该列值相同
   | NOT NULL -- 该列非空
   ], ...
) [CHARACTER SET charset] -- 字符集编码
[COLLATE collate_value] -- 列排序和比较时的规则(是否区分大小写等)


5d27dff98cd74ec8a66a03696c8e8d8f.png

方法二:从另一张表复制表结构创建表

CREATE TABLE table_name LIKE table_name_old


方法三:从另一张表的查询结果创建表

CREATE TABLE table_name AS SELECT * FROM table_name_old WHERE options


2、更改表

ALTER TABLE +表名

添加列:ADD

修改:MODIFY

删除列:DROP
该列名:CHANGE

alter table user_info add school varchar(15) after level;
#增加列在某列之后
alter table 增加的表格 add 增加列的名称 数据类型 位置(after level 在level 之后)
alter table user_info change job profession varchar(10);
#更换列的名称及数据类型
alter table user_info change 原列名 修改列名 修改数据类型
alter table user_info modify achievement int(11) default 0;
#更改数据类型
alter table 表名 modify 修改列名称 数据类型 默认值等


  1. 删除表
    DROP TABLE [IF EXISTS] 表名1 [, 表名2]


插入-更新-删除数据


  1. 插入单行
    INSERT INTO +表名 VALUES (值1,值2,值3……)

注意:所有列字段都要赋值

INSERT INTO +表名(列名1,列名2,列名3……) VALUES (值1,值2,值3……)

2、插入多行

INSERT INTO <表名>(列1,列2,列3……) 
VALUES (值1,值2,值3……),
       (值1,值2,值3……),
     (值1,值2,值3……)
        ……;


  1. 更新单行
    UPDATE <表名> SET 列1 = 值1,列2 = 值2,…… WHERE+条件
update invoices 
set payment_total = default, payment_date = null 
where invoice_id = 1


4、更新多行
只需将“更新单行”WHERE语句修改即可


5、删除行

方法一:根据条件删除

delete from table_name where 条件 order by 列名 limit 行数

方法二:全部删除(表清空,包含自增计数器重置)
truncate table_name

delete from invoices 
where client_id = (
  select * 
  from clients 
  where name = 'Myworks'
)


常用聚合函数


  1. SUM()–求和
  2. AVG()–平均值
  3. MAX()–最大值
  4. MIN()–最小值
  5. COUNT()–计数,不计算空值
  6. COUNT(*)–计数,计算所有行
  7. COUNT(DISTINCT key word)–去除重复值计数
  8. ORDER BY --升序
  9. ORDER BY…DESC --降序
  10. WHERE --分组之前筛选数据
  1. HAVING --分组之后筛选数据
select 
  client_id,
  sum(invoice_total) as total_sales,
  count(*) as number_of_invoice
from invoices 
group by client_id 
having total_sales > 500 and number_of_invoices > 5;


  1. ROLLUP–在最后一行加一行每个组或者整个结果集的汇总值
select 
  state,
  city, 
  sum(invoice_total) as total_sales 
from invoices i 
join clients c using (client_id)
group by state,city with rollup


13、EXISTS–代替IN,效率高
——IN运算符中的子查询,会生成大量结果集;EXISTS中子查询的结果没有直接返回外部的查询,故而使用EXISTS效率更高。

select * 
from clients c 
where exists(
  select client_id 
  from invoices 
  where client_id = c.client_id
)


#--------Select clients that have an invoice
select *
from clients
where client_id in (
  select distinct client_id 
  from invoices
)

thank for your patience~

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
网络协议 数据安全/隐私保护 网络架构
【个人笔记】计算机网络五层结构理解
【个人笔记】计算机网络五层结构理解
|
网络协议 网络架构
【计算机网络】OSI、TCP/IP、五层模型
【计算机网络】OSI、TCP/IP、五层模型
KALI更新源问题解决方法
KALI更新源在更新软件包出现的问题解决方法,具体详情请看如下文
192 1
|
Kubernetes 容器 Perl
k8s查看日志命令—2023.02
k8s查看日志命令—2023.02
355 0
|
Prometheus 监控 Kubernetes
【云原生】k8s集群资源监控平台搭建—20230227
【云原生】k8s集群资源监控平台搭建—20230227
275 0
|
12月前
|
缓存 安全 Linux
使用macof发起MAC地址泛洪攻击
使用macof发起MAC地址泛洪攻击
216 2
|
SQL 关系型数据库 MySQL
SQLZOO 答案—完整版(上)
SQLZOO 答案—完整版(上)
1304 0
|
关系型数据库 MySQL
MySQL—数据类型
MySQL—数据类型
70 0
|
关系型数据库 MySQL
mysql—引号及concat() 使用
mysql—引号及concat() 使用
501 0
|
Web App开发
求最小函数依赖集:求候选键(例题讲解)超详细,易理解
求最小函数依赖集:求候选键(例题讲解)超详细,易理解
315 1