结构化查询语言(SQL)------定义语句

本文详细介绍了数据库中基本表的定义、修改和删除操作。包括CREATE TABLE语句的使用,如定义数据类型、约束条件(主键、外键、唯一性、非空和默认值),以及ALTER TABLE语句进行增加、删除和修改列的操作。此外,还提到了DROP TABLE语句删除表的注意事项,强调了删除表可能带来的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一.基本表的定义

1.1定义语句

 1.2语句细节

1.2.1数据类型

 1.2.2约束条件

 二.基本表的修改

 三.基本表的删除


一.基本表的定义

1.1定义语句

CREATE TABLE <表名>
(
<属性列名1> <数据类型> [列级约束条件],
<属性列名2> <数据类型> [列级约束条件],
..................................,
[表级约束条件]
)

举个例子,我们建三个表STUDENT,COURSE,SC来理解定义,并且下面所有SQL语句都是基于下面的表

/*建立STUDENT*/
CREATE TABLE STUDENT
(SNO CHAR(7) NOT NULL PRIMARY KEY(SNO),/*列级完整性约束,SNO是主键*/
SNAME VARCHAR(8) NOT NULL,
SEX CHAR(2) NOT NULL,
BDATE DATE NOT NULL,
HEIGHT DEC(5,2) DEFAULT 000.00,
);

/*建立COURSE*/
CREATE TABLE COURSE
(CNO CHAR(6) NOT NULL PRIMARY KEY(CNO),/*列级完整性约束,CNO是主键*/
LHOUR SMALLINT NOT NULL,
CREDIT DEC(1,0) NOT NULL,
SEMESTER CHAR(2) NOT NULL,
);

/*建立SC*/
CREATE TABLE SC
(SNO CHAR(7) NOT NULL,
CNO CHAR(6) NOT NULL,
GRADE DEC(4,1) DEFAULT NULL,
PRIMARY KEY(SNO,CNO),/*主键由两个(多个)属性构成,必须作为表级完整性约束*/
FOREIGN KEY(SNO) REFERENCES STUDENT(SNO),
/*表级完整性约束条件,SNO是外键,被参照表是STUDENT*/
FOREIGN KEY(CNO) REFERENCES COURSE(CNO)
/*表级完整性约束条件,CNO是外键,被参照表是COURSE*/
);

 1.2语句细节

1.2.1数据类型

CHARACTER(n)字符/字符串。固定长度 n。
VARCHAR(n) 或
CHARACTER VARYING(n)
字符/字符串。可变长度。最大长度 n。
BINARY(n)二进制串。固定长度 n。
BOOLEAN存储 TRUE 或 FALSE 值
VARBINARY(n) 或
BINARY VARYING(n)
二进制串。可变长度。最大长度 n。
INTEGER(p)整数值(没有小数点)。精度 p。
SMALLINT整数值(没有小数点)。精度 5。
INTEGER整数值(没有小数点)。精度 10。
BIGINT整数值(没有小数点)。精度 19。
DECIMAL(p,s)精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数,小数点后有 2 位数的数字。
NUMERIC(p,s)精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同)
FLOAT(p)近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。
REAL近似数值,尾数精度 7。
FLOAT近似数值,尾数精度 16。
DOUBLE PRECISION近似数值,尾数精度 16。
DATE存储年、月、日的值。
TIME存储小时、分、秒的值。
TIMESTAMP存储年、月、日、小时、分、秒的值。
INTERVAL由一些整数字段组成,代表一段时间,取决于区间的类型。
ARRAY元素的固定长度的有序集合
MULTISET元素的可变长度的无序集合
XML存储 XML 数据

 1.2.2约束条件

  • 主键
    • 代码:PRIMARY KEY
    • 一旦该字段被确定为主键时,该字段不能为空,也不能有重复属性值
    • 当主键只有一个字段,采用列级约束条件进行约束
    • 当主键有多个字段,采用表级约束条件进行约束
    • /*创建表时主键约束*/
      SNO CHAR(7) NOT NULL PRIMARY KEY(SNO),/*一个主键,列级完整性约束,SNO是主键*/
      
      SNO CHAR(7) NOT NULL,
      CNO CHAR(6) NOT NULL,
      PRIMARY KEY(SNO,CNO),/*主键由两个(多个)属性构成,必须作为表级完整性约束*/
      
      /*创建表后,添加主键约束*/
      ALTER TABLE STUDENT ADD PRIMARY KEY(HEIGHT);/*创建表后,添加主键约束,其实不正确,因为主键约束要非空、唯一*/
      ALTER TABLE STUDENT DROP PRIMARY KEY;/*删除主键约束*/
  • 外键
    • 代码

      FOREIGN KEY [<外键>] REFERENCES (被参照表)(<与外键对应的主键名>)

    • 外键不一定要与主键同名,但是为了方便识别,通常采用同名方式。

    • 外键与对应的主键必须定义在同一值域上,即数据类型和长度要完全一致

    • /*创建表时的外键约束*/
      FOREIGN KEY(CNO) REFERENCES COURSE(CNO)
      /*表级完整性约束条件,CNO是外键,被参照表是COURSE*/
      
      /*创建表后添加外键约束*/
      ALTER TABLE SC ADD FOREIGN KEY(CNO) REFERENCES COURSE(CNO)
      
      /*删除外键约束*/
      ALTER TABLE SC DROP CONSTRAINT FK__SC__CNO__2B3F6F97

  • NOT NULL或NULL约束
    • 约束关系主属性必须限定为NOT NULL。
  • UNIQUE约束
    • 唯一性约束条件,不允许出现重复的属性值
  • DEFAULT约束
    • 默认值约束
  • CHECK约束
    • 检查约束条件表达式设置属性值应该满足的条件

录入数据,后面用于查找修改

SNOSNAMESEXBDATEHEIGHT
10104421周远行1983-07-161.83
20208123    王义平1984-08-201.71
30209120王大力1983-08-101.75
40309119李维1986-08-10 1.68
50309203欧阳美林1985-06-031.62

 STUDENT表

SNOCNOGRADE
10104421CS-11091.0
20104421 EE-201100.0
30208123EE-12291.0
40208123EE-20183.0
50209120CS-221NULL
60309119CS-11072.0
70309119CS-20165.0
80309203CS-11082.5
90309203CS-20180.0
100309203EE-20180.0

SC表

CNOLHOURCREDITSEMESTER
1CS-110603
2CS-201804
3CS-221402
4EE-1221065
5EE-201452

 COURSE表

 二.基本表的修改

基本表的修改包括增加、删除、修改

  • 增加
    • 语句:
      ALTER TABLE <表名> ADD <属性列名><数据类型>[完整性约束条件]|<完整性约束>
    • 例子

      ALTER TABLE STUDENT ADD Tel Varchar(15);
      /*在STUDENT表中加入Tel(电话)*/
  • 删除
    • 语句
      ALTER TABLE <表名> ALTER COLUMN <属性列名><数据类型>
    • 例子

      ALTER TABLE STUDENT DROP COLUMN Tel;
      /*删除属性列,例如删除STUDENT表中的Tel(COLUMN表示列)*/
  • 修改
    • 语句
      ALTER TABLE<表名> DROP {[CONSTRAINT]<完整性条件>|COLUMN<列名>[CASCADE|RESTRICT]}
    • 例子
      ALTER TABLE STUDENT ALTER COLUMN Sex int;
      

修改原有的列定义可能会破坏已有数据

 三.基本表的删除

  • 删除语句:
    DROP TABLE <表名>[CASCADE|RESTRICT]
  • 例子
    /*删除SC表*/
    DROP TABLE SC;

注意:

1.基本表的删除是有限制条件的,要删除的表不能被其他表的约束所引用,如果存在这些依赖该表的对象,则表不能删除

2.删除表不仅把表里的数据和定义删除,该表上建立的索引、视图、触发器等有关对象也将被删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值