当前位置:Gxlcms > 数据库问题 > SQL语句中的表操作

SQL语句中的表操作

时间:2021-07-01 10:21:17 帮助过:3人阅读

table student(Sno char(10) PRIMARY KEY, Sname char(20), SSex char(2) UNIQUE, Sage int, Sdept char(20) );

 PRIMARY KEY表示将Sno做为这个表的主码;

另外除了这种形式的约束条件,还有一种表级约束条件,表级约束条件一般都放在表的所有属性之后定义,当某个属性是外码或者某个主属性由多个属性组成时,外码定义的格式一般为:FOREIGN KEY (作为外码的属性) 所引用的表 (被引用的属性名);外码的例子如下:

REATE TABLE Course(Cno char(4) PRIMARY KEY,
    Cname CHAR(20),
    Cpno char(4),--注意做外码时数据类型要与被引用的数据类型相同
    Ccredit smallint,
    FOREIGN KEY (Cpno) REFERENCES Course(Cno)--Cpno引用本表中的Cno
);

当有主码中包含多个属性时,主码的定义格式为:PRIMARY KEY (属性列,属性列,...)

比如现在我们有一个成绩表,表中课程号和学号为主码,并且学号引用学生表中的学号,课程号引用的是课程表中的课程号:

CREATE TABLE SC(
    Sno char(10),
    Cno char(4),
    Grade smallint,
    PRIMARY KEY(Sno, Cno),--表中有多个主码时必须使用表级约束条件
    FOREIGN KEY (Sno) REFERENCES student(Sno),
    FOREIGN KEY (Cno) REFERENCES Course(Cno) 
);

其中每个属性的取值范围称作域,我们可以根据实际情况定义出属性的域,根据域选择合适的数据类型,下面的表展示了主要的几种数据类型:

数据类型 含义
CHAR(n) 长度为n的字符串,所占内存固定,但是只显示用户存储的字符个数
VARCHAR(n) 最大长度为n的字符串,内存根据用户定义的字符串的长度来确定
INT 整型
SMALLINT 短整型
NUMBER(p, d) 小数,总位数为p(包括小数部分但是不包括小数点),小数位数为d
REAL   浮点数,取决于机器的浮点数精度
Double Precision 双进度浮点数,位数也取决于机器位数
FLOAT(n) 浮点数进度至少为n
DATA 日期,包含年、月、日。格式为YYYY-MM-DD
TIME 时间,包含时、分、秒。格式为HH:MM:SS

二、表定义的修改:

当我们定义好了一个表后,可能根据具体的需求变化需要更改表的定义,SQL同样提供了相关的操作,SQL一般用ALTER TABLE 语句修改,其格式如下:

ALTER TABLE 表名

[ADD 新列名 数据类型 [完整性约束条件]] //新增列

[DROP <完整性约束条件>]//删除某个完整性约束条件

[ALTER COLUMN <新列名><数据类型>]修改列

[DROP COLUMN <列名>]//删除某一属性

这些语句只能修改表结构,不能修改表中的数据,比如学号为00001,当我们将学号的一列的列名改为学生证号,这个00001不会改变。

下面是几个小例子:

ALTER TABLE student add Sentrance DATE;--向学生表中添加一个入学时间的选项

ALTER TABLE Course ADD UNIQUE(Cname);--向课程表中添加一个完整性约束条件
ALTER TABLE student DROP COLUMN Sentrance;--删除学生表中的入学时间选项

三、删除表:

删除表用到的语句为DROP TABLE 表名[RESTRICT | CASCADE]

其中选用RESTRICT选项时,删除表是有条件的,被删除的表不能被其他表的约束引用(CHECK FOREIGN KEY等约束),不能有视图、索引、触发器、存储过程

选用CASCADE时不关心这些限制条件,会将这些一并删除。

SQL语句中的表操作

标签:

人气教程排行