1、SQL
Structured Query Language,即结构化查询语言。 是关系数据库的标准语言。
2、sql对关系数据库模式的支持
3、数据定义
1、SQL 的数据定义语句
SQL 不提供修改模式定义、修改视图定义和修改索引定义的操作,若想修改需先删掉再重建。
2、模式的定义与删除
a、定义模式
create schema <模式名> authorization <用户名>;
如果没有指定 模式名,隐含为 用户名。
实例:
在 mysql 中定义模式(即创建数据库)语句为:
creater schema wtf;
/*或者使用:*/
creater database wtf; /*常用*/
b、删除模式
drop schema <模式名> <cascade | restrict>;
其中 cascade(级联)表示删除数据库及其中所有对象一起删除,restrict(限制)只有数据库中没有对象时才能删除。
实例:
在 mysql 中 删除数据库语句为:(mysql是直接删除整个数据库,相当于 cascade)
drop schema wtf;
/*或者使用: */
drop database wtf; /*常用*/
3、定义基本表
建表的同时通常还可以定义与该表有关的完整性约束条件,如
primary key 指示为主键,unique 指示取唯一值,not null 指示为非空。还可以指定外码如:
create table sc(
sno char(7),
cno char(4),
grade smallint,
primary key(sno,cno),/*主码*/
foreign key (sno) references student(sno),
/*表级完整性约束条件,标明外码及其被参照表*/
foreign key (cno) references course(cno)
);
4、SQL 数据类型
要注意,不同的 RDBMS 中支持的数据类型不完全相同
SQL主要数据类型如下:
数据类型 | 含义 |
char(n) | 长度为 n 的定长字符串 |
varchar(n) | 最大长度为 n 的变长字符串 |
int | 长整数(也可写作 integer) |
smallint | 短整数 |
numeric(p,d) | 定点数,由 p 位数字(不包括符号、小数点)组成,小数点后面有 d 位数字 |
real | 取决于机器精度的浮点数 |
double precision | 取决于机器精度的双精度浮点数 |
float(n) | 浮点数,精度至少为 n 位数字 |
date | 日期, 包含年月日,格式为 YYYY-MM-DD |
time | 时间,包含时分秒,格式为 HH:MM:SS |
5、模式与表
每一个基本表都属于某一个模式,一个模式包含多个基本表
定义基本表时,定义它所属的模式的方法如下:
a、在表名中明显的给出模式名
如:create table "S-T".student(......);
b、在创建模式语句中同时创建表
c、设置所属模式
如:设置搜索路径: set search_path to "S-T",public;
在 mysql 中可以使用: use 数据库名; 来指定使用哪个数据库
6、修改基本表
alter table <表名>
[ add <新列名> <数据类型> [完整性约束] ]
[ drop <完整性约束名> ]
[ alter column <列名> <数据类型> ];
实例:
alter table student add sage int;
alter table student alter column sage smallint;
mysql 中:
7、删除表
drop table < 表名 > [ cascade | restrict ];
mysql 中 则直接删除整个表数据,相当于 cascade
8、建立索引
建立索引是加快查询速度的有效手段,