DDL
DDL
Data-Definition Language
数据定义语言
DML
DML
Data-Manipulation Language
数据操纵语言
数据类型
char(n) 定长字符串 character
varchar(n) 具有指定长度最长的变长字符串 character varying
int 整数 integer
smallint 小整数
numeric(p,d) 有用户指定精度的定点数 有p位长,小数点后有p中的d位
real ,double precision 浮点数与 双精度浮点数 精度取决于机器
float(n) 精度至少为 n 位数字的 浮点数
char
型比较时 会在短值的后面添加额外的空格使得长度一致
char
varchar
比较时不一定 添加额外的 空格
SQL
提供 nvarchar
存储 Unicode
其他很多数据库支持varchar
存储 Unicode (UTF-8)
primary key
primary key($A_{j1},A_{j2},\dots,A_{jm}$)
主码声明表示 属性$A_{j1},A_{j2},\dots,A_{jm}$ 构成关系的主码
主码必须 非空且唯一
没有元组会在主码上 取空值
foreign key
foreign key($A_{j1},A_{j2},\dots,A_{jm}$) references s
任意元组在属性$key(A_{j1},A_{j2},\dots,A_{jm})$ 上的关系必须对应于 关系 s 中某元组 在 主码属性上的 取值
not null
not null 约束表明 该属性将 空值排除在 属性域外
基本语法
drop table r; 去掉一个关系
delete from r; 保留关系 r 删除 r 的所有元组
alter table r add A D; r 是现有关系, A是待添加属性的名称,D是待添加属性的类型
alter table r drop A; 从关系 r 中 删除 属性 A
基本模式定义
CREATE DATABASE T;
use T;
create table department
(
dept_name varchar(20),
building varchar (15),
budget numeric(12,2),
primary key(dept_name)
);
insert into department values ('1depart' , '1edifice',15.5);
select * from department;
基本查询
单关系查询
select name from instructor;
select dept_name from instrutor;
select distinct dept_name from instrutor;
%distinct 可以强行去重
select all dept_name from instructor;
%all 显式指明不去除重复
select 可带有 算术表达式
select ID, name ,dept_name, salary*1.1 from instrutor;
%不会对原数据发生改变
where 只选出 符合 if 语句中的 元组
where 语句中 可以使用 and or not
$$ select \quad A_1, A_2,\dots A_n\\ from \quad r_1, r_2,\dots r_m\\ where \quad P; $$
A
代表属性
r
代表元组
P
代表谓词
ex1
select name ,course_id
from instructor,teaches
where instructor.ID=teaches.ID;
ex2
select name ,course_id
from instructor,teaches
where instructor.ID=teaches.ID and instructor.dept_name='Comp.Sci';
简而言之
- 为from 语句产生 笛卡尔积
- 在1的结果上 应用 where 中指定的谓词
- 在2的结果中的每个元组 输出select 子句中指定的属性