数据库标准语言SQL(3)
CHAR:定义的多长就是多长,多了放不进去,少了也不会减少
VACHAR:有最大限度长度,这个长度是自定义的,但实际长度可以变化,只是最大限度不变
INT:长整型
SMALLINT:短整数
NUMERIC(p, d):定点数,由p给出数字位数,d给出小数的位数,括号左边最长p位,右边最长d位
REAL:取决于机器的浮点数
FLOAT(n):浮点数,最短不少于n位
DATE:日期,包含年、月、日,YYYY-MM-DD
TIME:时间,包含时、分、秒,格式为HH:MM:SS
模式与表
每一个表属于一个模式,一个模式包含多个基本表
创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据搜索路径确定对象所属的模式
创建方法:
1.显示当前的搜索路径:
SHOW search-path;
2.搜索路径的当前默认值是:
$user,PUBLIC;
3.DBA用户可以设置搜索路径
SET search_path TO"S-T",PUBLIC;(第一个模式名为S-T)
创建基本表
一定义一个学生-课程模式S-T为例
1.创建表时给出模式名:
CREATE TABLE "S-T".Student(......);
CREATE TABLE "S-T".Course(......);
CREATE TABLE "S-T".SC(......);
后面跟的Student,Course,SC都是指代表名,再根据我们前面学的,填写属性。(这种情况用于,模式已经存在,后又再加表时使用)
2.在创建模式语句中同时创建表:
CREATE SCHEMA TEST AUTHORIZATION ZHANG//创建模式的同时,又
CREATE TABLE TAB1(//创建表TAB1,这个时候就会把表TAB1给模式TEST
....
....
....
....
)
3.设置所属模式,在创建表名中不必给出模式名(如同在1.中,设置了模式名)
eg.DBA用户设置搜索路径,然后定义基本表:
SET search_path TO "S-T",PUBLIC;//已经设置路径给S-T
CREATE TABLE Student(...);//那么在创建表时,就自动给了模式S-T
执行结果:建立了S-T.Student基本表
修改基本表
格式语句:
ALTER TABLE <表名>//明确要修改那个表
增加:
ADD在现有表的状态下,增加一列
[ADD[COLUMN]<新列名> <数据类型> [完整性约束]]
[ADD <表级完整性约束>]
删除:
ADD在现有表的状态下,删除一列
[DROP [COLUMN] <列名> [CASCADE|RESTRICT]]//CASCADE连带属性,被删除的表中的属性若在其他表中存在,那么其他表的这个属性也会被删除;RESTRICT是非连带属性,效果相反
[DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE]]//与上面相同,用于修改表的完整性约束条件
[ALTER COLUMN <列名><数据类型>]//用于修改原有列的定义,比如,原来属性名位123,现在改名为321
eg.向Student表增加“入学时间”列,其数据类型为日期型。
ALTER TABLE Student ADD S_entrance DATE
(修改) (Student表) (增加) (S_entrance列) (日期类型)
注意:
不论基本表中原来是否有数据,新增加的列一律为空值。这就要求再增加时一定要指定表的主码,因为主码使不能为空的
eg.将年龄的数据类型由字符型(假设原来的数据类型为字符型)修改为整型
ALTER TABLE Student ALTER COLUMN Sage INT;
(修改) (学生表) (修改列) (Sage列) 修改为(整型)
eg.增加课程名称必须取唯一值的约束条件
ALYER TABLE Course ADD UNIQUE (Cname);
(修改) (课程表) (增加) (唯一性) 给(属性name)
删除基本表
意思就是整个表都不要了
格式语句:
DROP TABLE <表名>[RESTRICT|CASCADE];
eg.删除Student表
DROP TABLE Student CASCADE;//CASCADE级联,与这个表相关的都删除
比如,SC表与Student表相关联,那么它就会被删除
1.RESTRICT:删除表是有限制的。如果其他的表对这个被删除的表有参照关系,那么这个表是不可以被删掉的
2.CASCADE:没有限制。在删除表的同时,相关的依赖关系的对象一起删除
3.8基本表的定义被删除,数据被删除,在表上建立的索引、视图、触发器等都被删除
DROP TABLE时,SQL2011与三个RDBMS的处理策略比较


浙公网安备 33010602011771号