SQL复习:建表、更新与查询操作详解
需积分: 5 32 浏览量
更新于2024-06-16
收藏 444KB DOCX 举报
"这篇资料主要涵盖了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)等。
2022-01-11 上传
2024-03-25 上传
2023-03-16 上传
2022-04-04 上传
2020-12-04 上传
2022-01-05 上传
2024-07-15 上传
一杯水果茶!
- 粉丝: 2489
- 资源: 26
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析