本节内容也只是简单概括一下, 后面在更新收录; 毕竟DDL DML 内容很多

DDL 操作

数据库

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合

查询数据库

  1. -- 查询数据库
  2. SHOW DATABASES;
  3. -- 过滤数据库
  4. SHOW DATABASES LIKE 'c%';

创建数据库

-- 创建数据库 company
CREATE DATABASE IF NOT EXISTS company DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;

修改数据库

-- 修改数据库 company; 不支持修改数据库名称
ALTER DATABASE company DEFAULT CHARACTER SET [数据库编码] DEFAULT COLLATE [排序规则];

删除数据库

-- 删除数据库 company 这是一个非常危险的操作请谨慎操作
DROP DATABASE IF EXISTS company;

关于数据库字符集 OR 排序规则

数据库字符集; 暂无

表是数据库最基本的组成对象,用来组织和存储数据。表由行和列组成,每个列包含特定类型的数据信息,一个列就是一个字段。一个数据库可以包含一个或多个表。

查询库中的表

-- 显示所有表
SHOW TABLES;

创建表

CREATE TABLE [表名] ( 
  id INT(11),
  name VARCHAR(25),
  deptId INT(11), 
  salary FLOAT
);

查看表结构

DESCRIBE <表名>;

修改表

-- 修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名>;

-- 修改字符集
ALTER TABLE <表名> DEFAULT CHARACTER SET <字符集名> DEFAULT COLLATE <校对规则名>;

-- 修改字段名称
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

-- 修改字段类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;

-- 删除字段
ALTER TABLE <表名> DROP <字段名>;

-- 在结尾添加字段
ALTER TABLE <表名> ADD <字段名> <数据类型>;

-- 在开头添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;

-- 在任何地方添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;

删除表

DROP TABLE [IF EXISTS] <表名1, 表名2>

DML 操作

插入

一般插入

INSERT INTO table_name ( field1, field2,...fieldN ) 
VALUES ( value1, value2,...valueN );

如果插入数据存在则执行UPDATE

INSERT INTO table (a,b,c) VALUES (1,2,3) 
ON DUPLICATE KEY UPDATE c = c + 1;

如果插入的数据存在则什么也不做

INSERT INTO table (a,b,c) VALUES (1,2,3) 
ON DUPLICATE KEY;

如果插入的数据存在则删除重新插入

REPLACE INTO table(a,b,c) VALUES (1,2,3);

更新

-- 更新与删除语句必须带Where 避免全表更新或者删除
UPDATE table SET field1=new-value1, field2=new-value2 WHERE id = 1

-- 限制更新条数
UPDATE table SET field1=new-value1, field2=new-value2 WHERE id = 1 LIMIT 1

删除

-- 更新与删除语句必须带Where 避免全表更新或者删除
DELETE FROM table WHERE id = 1

-- 限制删除条数
DELETE FROM table WHERE id = 1 LIMIT 1

查询

普通查询

SELECT * FROM table;

条件查询

条件查询通过 AND OR 关键字将条件表达式连接 条件表达式可以通过

  1. 大于符号 小于符号 大于等于符号 小于等于符号
  2. IN( 1, 2, 3) NOT IN (1, 2, 3)
  3. IS 判断NULL
  4. IS NOT NULL
-- 条件通过 AND OR 将表达式连接; 通过 > = < <= IS NOT IN 组合表达式
SELECT * FROM table WHERE 条件;

连接查询

连接查询有

  1. 左连接 LEFT JOIN; 将连接符号左边的表中关联的数据提取出来进行合并成一个新表
  2. 右连接 RIGHT JOIN; 将连接符号右边的表中关联的数据提取出来进行合并成一个新表
  3. 全连接 FULL JOIN; 将二个表中都关联的数据提取出来进行合并成一个新表
  4. 上下连接 UNION ALL; 上下连接是将二个一样字段类型的二张表通过上下拼接的方式组合成一个表
-- 左连接
SELECT * FROM a LEFT JOIN b ON a.id = b.id;

-- 右连接
SELECT * FROM a RIGHT JOIN b ON a.id = b.id;

-- 全连接
SELECT * FROM a FULL JOIN b ON a.id = b.id;

-- 上下连接
SELECT * FROM a 
UNION ALL
SELECT * FROM b

聚合搜索

子查询

当一个查询是另一个查询的条件时,这个查询称之为子查询

SELECT * FROM a WHERE a.id IN (SELECT id FROM b WHERE b.age > 10)