我的GIS/CS学习笔记:https://github.com/yunwei37/ZJU-CS-GIS-ClassNotes
<一个浙江大学本科生的计算机、地理信息科学知识库 >
Lecture 3 关系数据库标准语言
SQL概述
SQL (stands for Structured Query Language)
- A standard language for querying and manipulating data
- A very high-level (optimized) programming language
Current standard is SQL-2016
内容:
- Data Definition Language (DDL)
- Data Manipulation Language (DML)
特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用
数据定义
定义功能包括:
-
定义基本表
CREATE TABLE <表名> (<列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] … [,<表级完整性约束条件> ] );
- 实体完整性:PRIMARY KEY (主码,主键)
- 参照完整性:FOREIGN KEY (外码,外键)
- 用户定义完整性:NOT NULL UNIQUE DEFAULT CHECK
- 域约束: SQL语言可以使用CREATE DOMAIN语句定义新的值域
创建Students\Enrolled关系
CREATE TABLE Students ( sid CHAR(10) PRIMARY KEY, name VARCHAR(20) NOT NULL, age INT CHECK(age > 0)); CREATE TABLE Enrolled ( student_id CHAR(10) REFERENCES Students(sid), cid CHAR(20), grade INT, PRIMARY KEY(student_id, cid));
-
修改和删除表
ALTER TABLE <表名> [ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ] [ MODIFY <列名> <数据类型> ] DROP TABLE <表名>
举例:
ALTER TABLE Students ADD Scome DATE; ALTER TABLE Students ALTER COLUMN Scome type timestamp; ALTER TABLE Students DROP Scome; ALTER TABLE Enrolled ADD CONSTRAINT grade_check ALTER TABLE Enrolled DROP CONSTRAINT pk_En; DROP TABLE Students;
数据更新
-
数据插入
INSERT INTO <表名> [(<属性列1>[,<属性列2 >] … )] VALUES (<常量1> [,<常量2>] … )
将新元组插入指定表中:
Insert into Students Values(‘200011’, ‘张三’, 19); Insert into Students(sid, age, name) Values(‘200012’, 20, ‘李四’); Insert into Students(sid, name) Values(‘200013’, ‘王五’);
-
数据修改
UPDATE <表名> SET <列名>=<表达式>[,<列名>=<表达式>]… [WHERE <条件>]
修改指定表中满足WHERE子句条件的元组:
Update Students Set age = 20 Where sid = ‘200011’ Update Students Set age = 21 Where name = ‘王五’ Update Students Set age = age + 1; Update Students Set sid = ‘200012’ Where sid = ‘200011’;
-
数据删除
DELETE FROM <表名> [WHERE <条件>];
删除指定表中满足WHERE子句条件的元组
Delete From Students Where sid = ‘200011’; Delete From Students Where sid = ‘200000’;