"这篇资料主要涵盖了SQL语言的基础知识,包括创建表、更新表结构、管理表内容以及查询数据等核心概念。"
在SQL(Structured Query Language)中,数据库管理和操作的核心在于对数据的创建、修改和查询。以下是针对标题和描述中的知识点的详细解释:
1. 创建表(建表)
SQL中创建表的语法是`CREATE TABLE`,用于定义表的结构,包括列名(Attributes)和数据类型(Data Types)。例如,创建一个名为`instructor`的表,包含`ID`、`name`、`dept_name`和`salary`四个字段。`ID`作为主键,`dept_name`作为外键关联到`department`表。完整的创建语句如下:
```
CREATE TABLE instructor (
ID char(5),
name varchar(20) NOT NULL,
dept_name varchar(20),
salary numeric(8,2),
PRIMARY KEY (ID),
FOREIGN KEY (dept_name) REFERENCES department
);
```
2. 更新表结构
- `ALTER TABLE R ADD A`:向表`R`中添加属性`A`。
- `ALTER TABLE R DROP A`:从表`R`中删除属性`A`。
- `DROP TABLE R`:删除表`R`。
3. 更新表的内容
- `INSERT INTO R VALUES (v1, v2, ..., vn)`:向表`R`中插入一个新的元组(行),值分别为`v1`到`vn`。
- `DELETE FROM R`:删除表`R`中的所有元组。
- `UPDATE R SET A = v WHERE P`:更新表`R`中满足条件`P`的元组,将属性`A`设置为`v`。
4. 查询数据
- `SELECT A1, A2, ..., An FROM R1, R2, ..., Rm WHERE P`:从关系`R1`, `R2`, ..., `Rm`中选择满足条件`P`的属性`A1`, `A2`, ..., `An`。
- `SELECT DISTINCT dept_name FROM instructor`:从`instructor`表中去除重复的`dept_name`信息。
- `SELECT ID, name, salary/12 FROM instructor`:查询所有老师的工号、姓名和月薪。
- `SELECT ID, name, salary/12 AS monthly_salary FROM instructor`:同上,但`salary/12`别名为`monthly_salary`。
- `SELECT name FROM instructor WHERE dept_name = 'Comp.Sci.' AND salary > 80000`:找出计算机科学系薪水超过80000的老师名字。
- `SELECT names_of_instructors, course_id FROM instructor, courses WHERE instructor.dept_name = 'Art' AND instructor.ID = courses.professor_id`:找到艺术系所有教过课程的老师名字和课程编号(笛卡尔积)。
这些基本的SQL操作是数据库管理的基础,掌握了它们,就能有效地管理和操作数据库中的数据。在实际应用中,还需要学习更复杂的查询,如联接(JOIN)、子查询(Subquery)、分组(GROUP BY)和排序(ORDER BY)等。