### SQL语句大全实例知识点详解 #### 一、表操作 **1. 创建表** - **例1**:创建学生信息表 `STUDENTS`。 ```sql CREATE TABLE STUDENTS ( SNO NUMERIC(6, 0) NOT NULL, -- 学号 SNAME CHAR(8) NOT NULL, -- 姓名 AGE NUMERIC(3, 0), -- 年龄 SEX CHAR(2), -- 性别 BPLACE CHAR(20), -- 出生地 PRIMARY KEY (SNO) -- 主键 ); ``` **解析**:该示例创建了一个名为 `STUDENTS` 的表,包含了学生的学号、姓名、年龄、性别和出生地。其中学号是主键,不允许为空,且具有唯一性。姓名同样不允许为空。 - **例2**:创建选课记录表 `ENROLLS`。 ```sql CREATE TABLE ENROLLS ( SNO NUMERIC(6, 0) NOT NULL, -- 学号 CNO CHAR(4) NOT NULL, -- 课程号 GRADE INT, -- 成绩 PRIMARY KEY (SNO, CNO), -- 复合主键 FOREIGN KEY (SNO) REFERENCES STUDENTS(SNO), -- 学号外键参照学生表 FOREIGN KEY (CNO) REFERENCES COURSES(CNO), -- 课程号外键参照课程表 CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)) -- 成绩约束 ); ``` **解析**:此示例创建了一个选课记录表 `ENROLLS`,记录了学生的选课情况,包括学号、课程号和成绩。其中学号和课程号组合成为复合主键,确保了每个学生对每门课程的唯一记录。同时,学号和课程号分别参照学生表和课程表的主键,确保数据的一致性和完整性。此外,还添加了成绩的有效性检查,确保成绩在合理范围内。 - **例3**:根据 `STUDENTS` 表创建女学生表 `GIRL`。 ```sql CREATE TABLE GIRL AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX = '女'; ``` **解析**:此示例通过 `SELECT` 语句从 `STUDENTS` 表中筛选出女性学生的信息,并将其保存到新表 `GIRL` 中。 - **例4**:删除教师表 `TEACHER`。 ```sql DROP TABLE TEACHER; ``` **解析**:直接使用 `DROP TABLE` 命令删除指定的表。 - **例5**:在教师表中增加住址列。 ```sql ALTER TABLE TEACHERS ADD ADDR CHAR(50); ``` **解析**:使用 `ALTER TABLE` 添加一个新的列 `ADDR`。 - **例6**:删除 `STUDENTS` 表中的 `BPLACE` 列,并删除所有引用它的视图和约束。 ```sql ALTER TABLE STUDENTS DROP BPLACE CASCADE; ``` **解析**:通过 `ALTER TABLE` 删除指定列,并使用 `CASCADE` 关键字级联删除所有依赖于该列的对象。 - **例7**:补充定义 `ENROLLS` 表的主关键字。 ```sql ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO, CNO); ``` **解析**:使用 `ALTER TABLE` 添加复合主键。 #### 二、视图操作 - **例9**:创建只包含教师号、姓名和年龄的视图 `FACULTY`。 ```sql CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS; ``` **解析**:此示例创建了一个视图 `FACULTY`,仅展示教师表中的部分字段(教师号、姓名和年龄)。 - **例10**:创建一个视图 `GRADE_TABLE`,包括学生姓名、课程名和成绩。 ```sql CREATE VIEW GRADE_TABLE AS SELECT SNAME, CNAME, GRADE FROM STUDENTS, COURSES, ENROLLS WHERE STUDENTS.SNO = ENROLLS.SNO AND COURSES.CNO = ENROLLS.CNO; ``` **解析**:通过 `CREATE VIEW` 创建一个视图,用于展示学生、课程和成绩信息。使用 `JOIN` 语句连接多个表,并筛选出所需字段。 - **例11**:删除视图 `GRADE_TABLE`。 ```sql DROP VIEW GRADE_TABLE RESTRICT; ``` **解析**:使用 `DROP VIEW` 删除指定视图。使用 `RESTRICT` 关键字表示只有在没有其他对象依赖该视图时才能执行删除操作。 #### 三、索引操作 - **例12**:在学生表中按学号建立索引。 ```sql CREATE UNIQUE INDEX ST ON STUDENTS (SNO ASC); ``` **解析**:使用 `CREATE INDEX` 创建唯一索引 `ST`,按照学号升序排列。 - **例13**:删除按学号所建立的索引。 ```sql DROP INDEX ST; ``` **解析**:使用 `DROP INDEX` 删除先前创建的索引。 #### 四、数据库模式操作 - **例14**:创立一个简易教学数据库的数据库模式 `TEACHING_DB`,属主为 `ZHANG`。 ```sql CREATE SCHEMA TEACHING_DB AUTHORIZATION ZHANG; ``` **解析**:创建一个名为 `TEACHING_DB` 的数据库模式,属主设置为 `ZHANG`。 - **例15**:删除简易教学数据库模式 `TEACHING_DB`。 ```sql DROP SCHEMA TEACHING_DB CASCADE; ``` **解析**:使用 `DROP SCHEMA` 删除数据库模式及所有相关对象,使用 `CASCADE` 关键字确保级联删除所有依赖对象。 以上内容涵盖了基本的 SQL 操作,包括表的创建与修改、视图的创建与删除、索引的创建与删除以及数据库模式的操作,这些是进行数据库管理的基础技能。
剩余11页未读,继续阅读
- 粉丝: 30
- 资源: 5万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助