SQL语句(二)创建带主键和约束的数据表
内容摘要
创建带主键和约束的表
创建带组合主键和外键的表
1. 创建带主键和约束的表
Student (学生表)
- CREATE TABLE Student
- (
- sclass varchar() NOT NULL, --- 限制非空
- snumb varchar() PRIMARY KEY, --- 设置为主键
- sname varchar() NOT NULL, --- (下)设置默认值男,约束选项为男女
- sgender varchar() DEFAULT '男' CONSTRAINT consgender CHECK (sgender IN('男', '女')),
- sbirthday date,
- sage int CONSTRAINT consage CHECK (sage >= and sage <= )
- )
- CONSTRAINT 约束名 CHECK (条件)
- CREATE TABLE Student
- SELECT INTO Student VALUES('电气51', '', '王涛', '男', '1993-2-1', )
- INSERT INTO Student(sclass, snumb, sname)
- VALUES('电气51', '', '王涛') ---> 产生默认性别男
- SELECT * FROM Student
- INSERT INTO Student(sclass, snumb)
- VALUES('电气51', '') ---- 出现错误: 不能将值 NULL 插入列 'sname'
以上为,加了约束之后的效果
- Course (课程)
- CREATE TABLE Course
- (
- cnumb varchar() PRIMARY KEY, --- 设为主键
- cname varchar() NOT NULL, --- 非空
- chours int CONSTRAINT conshour CHECK(chours >= and chours <= ),
- credit decimal(,) CONSTRAINT conscredit CHECK(credit >= and credit < ),
- intro text --- text字段存放一段文字
- )
- INSERT INTO Course
- VALUES('ENP09001', '理论力学', , , '研究物体机械运动的基本规律')
- SELECT * FROM Course
2. 创建带组合约束和外键的表
study (选课表)
- CREATE TABLE Study
- (
- snumb varchar(),
- cnumb varchar(),
- score decimal(,),
- PRIMARY KEY (snumb, cnumb), ---- 设为组合主键
- FOREIGN KEY (snumb) REFERENCES Student(snumb), ---- (参照完整性)声明是什么表中的外键(即:插入数据时,必须要在Student和Course存在才可以)
- FOREIGN KEY (cnumb) REFERENCES Course (cnumb)
- )
- INSERT INTO Study
- VALUES('', 'ENP09001', ) --- snumb和cnumb必须要在Student和Course存在才可以
- SELECT * FROM Student
- SELECT * FROM Course
- SELECT * FROM Study
3.总结:
//添加内容
- 四类数据完整性:
- 实体完整性,确保不出现完全相同的数据记录
- 区域完整性, 通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空等体现
- 参考完整性,避免因一个数据表的记录改变而造成相关数据表内的数据变成无效值。
- 用户自定义完整性,用户自定义由用户根据实际应用中的需要自行定义。
SQL语句(二)创建带主键和约束的数据表的更多相关文章
- SQL语句添加,删除主键
IF EXISTS (SELECT * FROM sys.all_objects WHERE type_desc= N'主键名')begin --删除主键 alter table 表名 drop ...
- Sql Server中的游标最好只用于有主键或唯一键的表
游标cursor,我想大多数人都在sql server里面用过.当一个表数据量不太大的时候,游标还是可以用的,毕竟游标是循环一个表中每一行数据的最简便办法.但是如果你用一个游标去循环一个没有主键或唯一 ...
- SQL Server学习之路(二):主键和外键
0.目录 1.定义 1.1 什么是主键和外键 1.2 主键和外键的作用 1.3 主键.外键和索引的区别 2.主键(primary key) 2.1 通过SSMS设置主键 2.2 通过SQL语句设置主键 ...
- SQL语句删除和添加外键、主键的方法
--删除外键 语法:alter table 表名 drop constraint 外键约束名 如: alter table Stu_PkFk_Sc drop constraint FK_s alter ...
- 【转】SQL语句删除和添加外键、主键
--删除外键 语法:alter table 表名 drop constraint 外键约束名 如: alter table Stu_PkFk_Sc drop constraint FK_s alter ...
- mysql创建,添加主键
primary key 1.最简单的: CREATE TABLE t1( id int not null, name char(20)); 2.带主键的: a:CREATE TABLE t1( id ...
- (转)Mybatis高级映射、动态SQL及获得自增主键
原文:http://www.cnblogs.com/edwinchen/p/4105278.html?utm_source=tuicool&utm_medium=referral 一.动态SQ ...
- Oracle中SQL查询表字段基本信息、主键、外键(转)
select utc.column_name, utc.data_type, utc.data_length, utc.data_precision, utc.data_Scale, utc.null ...
- SQLServer 自增主键创建, 指定自增主键列值插入数据,插入主键
http://blog.csdn.net/zh2qiang/article/details/5323981 SQLServer 中含自增主键的表,通常不能直接指定ID值插入,可以采用以下方法插入. 1 ...
随机推荐
- 好文章系列C/C++——图说C++对象模型:对象内存布局详解
注:收藏好文章,得出自己的笔记,以查漏补缺! ------>原文链接:http://blog.jobbole.com/101583/ 前言 本文可加深对C++对象的内存布局.虚表指针.虚 ...
- JavaScript中的Date对象在IOS中的“大坑”
在IOS5以上版本(不包含IOS5)中的Safari浏览器能正确解释出Javascript中的 new Date('2013-10-21') 的日期对象. 但是在IOS5版本里面的Safari解释ne ...
- 洛谷P2698 [USACO12MAR]花盆Flowerpot
P2698 [USACO12MAR]花盆Flowerpot 题目描述 Farmer John has been having trouble making his plants grow, and n ...
- LOJ6045 雅礼集训 2017 Day8 价(最小割)
由Hall定理,任意k种减肥药对应的药材数量>=k.考虑如何限制其恰好为k,可以将其看作是使对应的药材数量尽量少. 考虑最小割.建一个二分图,左边的点表示减肥药,右边的点表示药材.减肥药和其使用 ...
- HDU5387-模拟水题
模拟钟表的时分秒针的走动,给出时间求出夹角.注意每组输出要有一个空格 以后要想好再写代码,这样一个水题做了50分钟,太弱了... #include<cstdio> #include< ...
- hdu 4348 To the moon (主席树 区间更新)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4348 题意: 4种操作: C l r c 区间[l,r]加c,时间+1 Q l r 询问当前时 ...
- ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 i题 Minimum(线段树)
描述 You are given a list of integers a0, a1, …, a2^k-1. You need to support two types of queries: 1. ...
- java项目http变更https
1. 创建 keystore 文件 执行keytool -genkey -v -alias tomcat -keyalg RSA -validity 3650 -keystore c:\tomc ...
- 【BZOJ1879】[SDOI2009]Bill的挑战(动态规划)
[BZOJ1879][SDOI2009]Bill的挑战(动态规划) 题面 BZOJ 洛谷 题解 本来还想着容斥来着,这个数据范围直接暴力就好.设\(f[i][S]\)表示当前填到了第\(i\)位,和\ ...
- Prometheus-operator架构详解
Prometheus是一个开源的系统监视和警报工具.一款非常优秀的监控工具.监控方案:Prometheus 提供了数据搜集.存储.处理.可视化和告警一套完整的解决方案. Prometheus的关键特性 ...