关系数据库标准语言SQL
3.1 SQL概述
3.1.2 SQL的特点
-
高度非过程化
-
功能完并且一体化
-
统一的语法结构
-
语言简洁,易学易用
数据查询:
SELECT
数据定义:
CREATE
,DROP
数据操作:
INSERT
,UPDATE
,DELETE
数据控制:
GRANT
,REVOKE
3.2 SQL的定义功能
3.2.1基本表的定义
1.表结构的定义
CREATE TABLE<表名>
(<列名><数据类型>[列表完整性约束条件]
[,<列名><数据类型>[列表完整性约束条件]···]
[,<表级完整性约束条件>]
);
- 表名是所要定义的基本表的名字,表可以由一个或多个属性(列)组成
- 定义表的各个列时需要指明其数据类型及长度
类型 | 数据类型举例及缩写 | 说明 |
---|---|---|
Binary | BLOB | 以十六进制格式存储二进制字符串的值 |
BitString | BIT(n) BIT VARYING(n) |
这两种数据类型可以存储二进制和十六进制数据 |
Boolean | BOOLEAN | true、false或unknow |
Character | CHAR(n) VARCHAR(n) |
存储适宜的字符集中的任意字符组合 |
Numeric | INTEGER SMALLINT DECIMAL(i,j) FLOAT(p,s) REAL DOUBLE PERCISION |
这些数据类型存储数据的准确值(整数或小数)或近似值 |
Temporal | DATE TIME TIMESTAMP INTERVAL |
这些数据类型处理时间的值 |
- 完整性约束条件:
Primary Key
Foreign Key
【例3-1】
CREATE TABLE 学生
(学号 char(8) NOT NULL UNIQUE,
姓名 char(8),
性别 char(2),
出生年份 SMALLINT,
籍贯 char(8),
学院 char(15));
2.主关键词的定义
(1)在列出关系模型的属性时,在属性及其类型后加上保留字PRIMARY KEY
(2)在列出关系模型的所有属性后,再附加一个声明:
PRIMARY KEY(<属性1>[,<属性2>,···])
【例3-2】
- 方法一
CREATE TABLE 学生
(学号 char(8) PRIMARY KEY,
姓名 char(8),
性别 char(2),
出生年份 SMALLINT,
籍贯 char(8),
学院 char(15));
- 方法二
CREATE TABLE 学生
(学号 char(8),
姓名 char(8),
性别 char(2),
出生年份 SMALLINT,
籍贯 char(8),
学院 char(15)
PRIMARY KEY(学号));
【例3-3】
CREATE TABLE 课程
(课程号 SMALLINT NOT NULL UNIQUE,
课程名 char(15),
学时 SMALLINT,
开课学期 char(4),
课程性质 char(15),
primary key(课程号));
【例3-4】
CREATE TABLE 学习
(学号 char(8),
课程号 char(8),
成绩 smallint,
primary key(学习,课程号));
3. 外部关键字的定义
(1)如果外部关键词只有一个属性,可以在它的属性名和类型后面直接用REFERENCES
说明它参照了某个表的某些属性(必须是PRIMARY KEY
)
REFERENCES <表名> (<属性>)
(2) 在属性列后面添加
FOREIGN KEY(<属性 1>REFERENCES<表名>(<属性2>))
【例3-5】
CREATE TABLE 学习
(学号 char(8),
课程号 char(8),
成绩 smallint,
primary key(学习,课程号)
FOREIGN KEY(学号 references 学生(学号))
FOREIGN KEY(课程号 references 课程(课程号));
4.默认值的定义
性别 char(2) default '男';
年龄 smallint default 19;
3.2.2 基本表的修改和删除
ALTER TABLE 学生 ADD COLUMN 年龄