【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);
相关推荐
程序员老舅几秒前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华13 分钟前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
IvorySQL20 分钟前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·29 分钟前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
野生技术架构师31 分钟前
SQL语句性能优化分析及解决方案
android·sql·性能优化
IT邦德32 分钟前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
爱吃生蚝的于勒42 分钟前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森1 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
惊讶的猫1 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写