SQL语句(二)创建带主键和约束的数据表

本文介绍如何使用SQL创建带有主键及多种约束条件的数据表,包括非空约束、默认值、检查约束等,并演示如何创建包含组合主键与外键引用的表。此外,还探讨了四种数据完整性概念。

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

SQL语句(二)创建带主键和约束的数据表

内容摘要

创建带主键和约束的表

创建带组合主键和外键的表

1. 创建带主键和约束的表

  • Student (学生表) 

  • CREATE TABLE Student
    (
    sclass varchar(10) NOT NULL,      ---  限制非空
    snumb varchar(10) PRIMARY KEY,    ---  设置为主键
    sname varchar(40) NOT NULL,       ---  (下)设置默认值男,约束选项为男女
    sgender varchar(4) DEFAULT ''  CONSTRAINT consgender CHECK (sgender IN('', '')),
    sbirthday date,
    sage int CONSTRAINT consage CHECK (sage >= 0 and sage <= 150)
    )
    CONSTRAINT 约束名 CHECK (条件)
  • SELECT INTO Student VALUES('电气51', '10002', '王涛', '', '1993-2-1', 18)
    INSERT INTO Student(sclass, snumb, sname)
    VALUES('电气51', '10004', '王涛')          --->   产生默认性别男
    SELECT * FROM Student
    INSERT INTO Student(sclass, snumb)
    VALUES('电气51', '10005')          ----  出现错误: 不能将值 NULL 插入列 'sname'

    以上为,加了约束之后的效果

  • Course (课程)

CREATE TABLE Course
(
cnumb varchar(10) PRIMARY KEY,              ---  设为主键
cname varchar(40) NOT NULL,                 ---  非空
chours int CONSTRAINT conshour CHECK(chours >= 0 and chours <= 300),
credit decimal(5,2) CONSTRAINT conscredit CHECK(credit >= 0 and credit < 20),
intro text                                  --- text字段存放一段文字
)
INSERT INTO Course
VALUES('ENP09001', '理论力学', 56, 3, '研究物体机械运动的基本规律')

SELECT * FROM Course

2. 创建带组合约束和外键的表

  • study (选课表)

 

CREATE TABLE Study
(
snumb varchar(10),
cnumb varchar(10),
score decimal(5,2),
PRIMARY KEY (snumb, cnumb),                      ----   设为组合主键
FOREIGN KEY (snumb) REFERENCES Student(snumb),   ----   (参照完整性)声明是什么表中的外键(即:插入数据时,必须要在Student和Course存在才可以)
FOREIGN KEY (cnumb) REFERENCES Course (cnumb)
)
INSERT INTO Study
VALUES('10001', 'ENP09001', 90)         --- snumb和cnumb必须要在Student和Course存在才可以

SELECT * FROM Student
SELECT * FROM Course
SELECT * FROM Study

3.总结:

 //添加内容

四类数据完整性: 

     实体完整性,确保不出现完全相同的数据记录
     区域完整性, 通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空等体现
     参考完整性,避免因一个数据表的记录改变而造成相关数据表内的数据变成无效值。
     用户自定义完整性,用户自定义由用户根据实际应用中的需要自行定义。

 

posted @ 2017-02-18 16:46 douzujun 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值