SQL语言初步知识点与考点归纳
一、SQL概述
- SQL简介
-
- 定义:结构化查询语言(Structured Query Language),用于管理关系型数据库的标准语言。
- 历史与标准化:
- 1970年,E.F.Codd提出关系模型;1974年由Boyce和Chamberlin设计初版(SEQUEL)。
- 1986年ANSI发布首个标准(SQL-86),后续版本包括
SQL-92
正在使用的标准(SQL2)、SQL:1999(支持面向对象)、SQL:2003(支持XML)等。
- 特点:
- 一体化:集DDL、DML、DCL于一体。
- 非过程化:用户只需说明“做什么”,无需指定“怎么做”。
- 面向集合:操作对象是数据集合而非单条记录。
- 两种使用方式:自含式语言(独立使用)和嵌入式语言(嵌入其他编程语言)。
- SQL语言分类
类别 | 功能 | 关键语句 |
DDL | 数据定义 | CREATE, ALTER, DROP |
DML | 数据操作 | SELECT, INSERT, UPDATE, DELETE |
DCL | 数据控制 | GRANT, REVOKE |
二、数据定义语言(DDL)
- 基本表操作
-
- 创建表:
- CREATETABLE表名 (
列名1 数据类型 [约束],
列名2 数据类型 [约束],
…
[PRIMARY KEY (列名),]
[FOREIGN KEY (列名) REFERENCES 父表名(列名),]
[CHECK (条件),]
);
-
-
- 示例:
-
- CREATETABLE Student (
sno CHAR(8) NOT NULL,
sname VARCHAR(20) NOT NULL,
sage NUMERIC(3,0),
ssex CHAR(2),
clno CHAR(6),
PRIMARY KEY (sno)
);
-
- 修改表:
- 添加列:ALTER TABLE 表名 ADD 列名 数据类型 [约束];
- 删除列:ALTER TABLE 表名 DROP COLUMN 列名;
- 修改列类型:ALTER TABLE 表名 ALTER COLUMN 列名 新数据类型;
- 删除表:DROP TABLE 表名;(删除表结构及数据,不可逆)。
- 修改表:
- 索引操作
-
- 创建索引:
- CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX索引名
ON 表名 (列名 [ASC|DESC], …);
-
-
- 聚集索引:数据行物理存储顺序与索引顺序一致(每表仅一个)。
- 非聚集索引:独立于数据存储的B树结构(默认类型)。
- 删除索引:DROP INDEX 表名.索引名;
-
三、数据操作语言(DML)
- 插入数据
- INSERTINTO表名 [(列名1, 列名2, …)]
VALUES (值1, 值2, …);
-
- 批量插入:INSERT INTO 表名 SELECT …(从其他表导入数据)。
- 更新数据
- UPDATE表名
SET 列名1 = 表达式1, 列名2 = 表达式2, …
[WHERE 条件];
-
- 示例:UPDATE Employee SET salary = salary * 1.1 WHERE dept = 'IT';
- 删除数据
- DELETEFROM表名 [WHERE条件];
-
- 清空表:TRUNCATE TABLE 表名;(删除所有数据,保留结构,效率高于DELETE)。
四、数据查询(SELECT)
- 基础语法
- SELECT [DISTINCT] 列名1, 列名2, …
FROM 表名
[WHERE 条件]
[GROUP BY 分组列]
[HAVING 分组条件]
[ORDER BY 排序列];
-
- 示例:SELECT sno, sname FROM Student WHERE ssex = '男';
- 子查询
-
- 嵌套查询:在WHERE或HAVING子句中使用另一个SELECT语句。
- 示例:查找年龄大于平均年龄的学生:
- SELECT*FROM Student
WHERE sage > (SELECT AVG(sage) FROM Student);
五、视图(View)
- 定义与特点
-
- 视图:虚拟表,基于SELECT查询结果生成,不存储数据。
- 作用:简化复杂查询、增强安全性(限制数据访问)、逻辑数据独立性。
- 创建与删除
- CREATEVIEW视图名 AS SELECT语句;
DROP VIEW 视图名;
-
- 示例:创建女生视图:
- CREATEVIEW Girl_Student AS
SELECT * FROM Student WHERE ssex = '女';
六、考点总结
- 高频考点:
-
- SQL语句分类:区分DDL、DML、DCL的语句。
- 索引类型:聚集索引与非聚集索引的区别。
- 约束类型:主键、外键、唯一性约束、检查约束的定义。
- 子查询与连接:IN、EXISTS、JOIN的使用场景。
- 数据类型选择:CHAR与VARCHAR、NUMERIC与FLOAT的适用场景。
- 易错点:
-
- DROP TABLE与DELETE的区别(结构 vs 数据)。
- 修改表结构时,新增列必须允许NULL或设置默认值。
- 索引的维护成本(过多索引影响写性能)。
这是一条测试评论