【SQL】期末复习SQL语法详细总结

1. 创建数据库

sql 复制代码
CREATE DATABASE 数据库名;
  • 用于创建一个新的数据库。

  • 可以使用选项设置字符集、排序规则等:

    sql 复制代码
    CREATE DATABASE 数据库名 CHARACTER SET utf8 COLLATE utf8_general_ci;

2. 创建表

sql 复制代码
CREATE TABLE 表名 (
    列名 数据类型 [列级完整性约束],
    [列名 数据类型 [列级完整性约束], ...]
    [表级完整性约束]
);
  • 数据类型 :如 INT, VARCHAR(255), DATE 等。
  • 列级完整性约束 :如 NOT NULL, DEFAULT, UNIQUE 等。
  • 表级完整性约束 :如 PRIMARY KEY, FOREIGN KEY, CHECK 等。

例如:

sql 复制代码
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT CHECK (age > 0)
);

3. 修改表结构

sql 复制代码
ALTER TABLE 表名
    ADD COLUMN 列名 数据类型 [列级完整性约束],
    ADD CONSTRAINT 约束名 约束类型,
    DROP COLUMN 列名,
    DROP CONSTRAINT 约束名,
    MODIFY COLUMN 列名 数据类型;
  • ADD COLUMN:添加新的列。
  • ADD CONSTRAINT:添加约束(如主键、外键等)。
  • DROP COLUMN:删除某一列。
  • DROP CONSTRAINT:删除约束。
  • MODIFY COLUMN:修改列的数据类型或约束。

例如:

sql 复制代码
ALTER TABLE employees
    ADD COLUMN email VARCHAR(100),
    MODIFY COLUMN age INT NOT NULL;

4. 查询语句

sql 复制代码
SELECT [ALL | DISTINCT] 目标列表达式 [AS 别名], ...
FROM 表名 [AS 别名], ...
[WHERE 条件表达式]
[GROUP BY 列名1, ...]
[HAVING 条件表达式]
[ORDER BY 列名2 [ASC | DESC]];
  • ALL:默认,返回所有记录。
  • DISTINCT:去重,返回不同的记录。
  • WHERE:过滤条件。
  • GROUP BY:分组,通常与聚合函数(如 COUNT, SUM)一起使用。
  • HAVING:对分组结果进行过滤。
  • ORDER BY :排序,ASC 表示升序,DESC 表示降序。

例如:

sql 复制代码
SELECT name, age
FROM employees
WHERE age > 30
ORDER BY name DESC;

5. 修改表数据

sql 复制代码
UPDATE 表名
SET 列名 = 表达式 [, 列名 = 表达式, ...]
WHERE 条件;
  • 更新指定列的值,使用 WHERE 子句限制更新范围。

例如:

sql 复制代码
UPDATE employees
SET age = age + 1
WHERE name = 'John';

6. 插入表数据(两种形式)

1) 使用常量值插入

sql 复制代码
INSERT INTO 表名 (属性列1, 属性列2, ...)
VALUES (常量1, 常量2, ...);

2) 使用子查询插入

sql 复制代码
INSERT INTO 表名 (属性列1, 属性列2, ...)
SELECT 列1, 列2, ...
FROM 另一个表;

例如:

sql 复制代码
INSERT INTO employees (id, name, age)
VALUES (1, 'Alice', 25);

INSERT INTO employees (id, name, age)
SELECT id, name, age
FROM temp_employees;

7. 删除表

sql 复制代码
DROP TABLE 表名;
  • 删除表及其中的所有数据、结构及约束。

8. 删除表数据

sql 复制代码
DELETE FROM 表名
[WHERE 条件];
  • 删除表中的数据,不删除表结构。
  • 如果没有 WHERE 条件,则删除表中所有数据。

例如:

sql 复制代码
DELETE FROM employees
WHERE age < 20;

9. 创建视图

sql 复制代码
CREATE VIEW 视图名 [(列名1, 列名2, ...)] AS 子查询 [WITH CHECK OPTION];
  • WITH CHECK OPTION:限制通过视图进行的数据更新操作,确保更新后符合视图的条件。

例如:

sql 复制代码
CREATE VIEW senior_employees AS
SELECT name, age
FROM employees
WHERE age >= 40;

10. 创建索引

sql 复制代码
CREATE [UNIQUE] [FULLTEXT] [SPATIAL] INDEX 索引名 ON 表名 (列名 [ASC|DESC], ...);
  • UNIQUE:创建唯一索引,确保索引列的值唯一。
  • FULLTEXT:创建全文索引,适用于文本字段。
  • SPATIAL:空间索引,用于地理信息系统(GIS)数据。
  • ASC | DESC :排序顺序,默认为升序 ASC

例如:

sql 复制代码
CREATE INDEX idx_name ON employees (name);
CREATE UNIQUE INDEX idx_email ON employees (email);
相关推荐
理智的煎蛋12 小时前
MySQL高可用架构:MHA
linux·数据库·mysql·架构·可用性测试
罗光记12 小时前
苹果内部 AI聊天机器人“Asa”曝光,为零售员工打造专属A
数据库·经验分享·百度·微信公众平台·新浪微博
zz-zjx12 小时前
进程与线程详解, IPC通信与RPC通信对比,Linux前台与后台作业
linux·网络协议·rpc
li357414 小时前
从“内存操作”到“原子更新”:一次代码思维的跃迁
数据库·oracle
大筒木老辈子14 小时前
Linux笔记---计算机网络概述
linux·笔记·计算机网络
瀚高PG实验室14 小时前
执行select * from a where rownum<1;,数据库子进程崩溃,业务中断。
数据库·sql·瀚高数据库
小白考证进阶中14 小时前
终于赶在考试券过期前把Oracle OCP证书考下来了!
运维·数据库·oracle·dba·开闭原则·数据库管理员
DCTANT15 小时前
【报错记录】OpenGauss/磐维数据库连接报:org.postgresql.util.PSQLException: 致命错误: 账户被锁定
数据库·postgresql
KING BOB!!!15 小时前
Leetcode高频 SQL 50 题(基础版)题目记录
sql·mysql·算法·leetcode
keep__go15 小时前
postgresql9.2.4 跨版本升级14.6
linux·运维·数据库·postgresql