黑马程序员学习笔记----sql学习笔记

本文介绍了如何使用SQL创建表,并探讨了确保数据完整性的多种方法,包括主键约束、唯一性约束、默认值、自动增长列及检查约束等。

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

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ---------------------- 

sql学习笔记

04.25

---先建一个表格:
create table tabuser
(
uid char(20),
uname varchar(30),
upwd varchar(30),
uage int,
uphone varchar(30),
---现在往表格里插入数据
insert into tabuser(uid,uname,upwd,uage,uphone)
values('id12345','username','password',20,'phone')
---插入数据的顺序要与声明的列的顺与一致
---上面的式子可以简写为:
insert into tabuser
values('id12345','username','password',20,'phone')
---也可以只对某些列进行插入,下面只对uname和uage插入
insert into tabuser(uname,uage)
values('username',20)
---我们把上面的式子执行两次,你会发现表格里有两行相同的数据,我们要避免这
---个问题就要通过主键约束来实现实体的完整性。主键是能代表这行数据,具有
---唯一性,有序,非空的。
例:
create table tabuser
(
uid char(20) primary key,
uname varchar(30),
upwd varchar(30),
uage int,
uphone varchar(30),
---在uid char(20)后面写上primary key就把uid声明为了一个主键,这样如果你
---再插入相同的数据时就会出现错误,因为uid是主键,主键具有唯一性。
---上面的语句也可以写为:
create table tabuser
(
uid char(20),
uname varchar(30),
upwd varchar(30),
uage int,
uphone varchar(30),
constraint tabuser_uid primary key (uid)
---这里的tabuser_uid是自己定义的,可以随便取。这个形式虽然看起来麻烦,但
---阅读起来方便,所以现在大部分都是用这种形式来声明主键约束。
---一个表中只允许有一个主键,但一个主键可以约束多个列
例:
create table tabuser
(
uid char(20),
uname varchar(30),
upwd varchar(30),
uage int,
uphone varchar(30),
constraint tabuser_uid primary key (uid,uname)
---这里uid和uname共同构成主键
注意:
具有主键约束的表默认是按照升序排列的,比如说一个表的主键id为1,2,4,6,那么表显示的时候是按照1,2,4,6从小到大排列的。这里需要注意的是如果你插入id为3的一行数据时,插入的数据会放在di为2的一行数据的后面而不是表的最后面,插入后id为4和6的数据会自动往后移一行,这样如果数据很多的话插入数据时会很慢。
 
 
---除了实体的完整性以外,表格的数据还应具有域完整性,域完整性又分为以下几
---各方面:
---1.NUll/not null
---我们可以定义表里的数据是NULL还是NOT NULL
例:
create table tabuser
(
uid char(20),
uname varchar(30) not null,
upwd varchar(30) null,
uage int,
uphone varchar(30),
constraint tabuser_uid primary key (uid)
2.default(缺省值)
---我们可以定义表里数据的缺省值
例:
create table tabuser
(
uid char(20),
uname varchar(30),
upwd varchar(30),
uage int default 18,
uphone varchar(30),
constraint tabuser_uid primary key (uid)
)
----定义了uage的默认值为18,这样我们在插入数据的时候可以这么写
insert into tabuser(uid,uage)
values('1101',default)
---这时uage的值为18
3.unique唯一性
---可以定义表里数据的唯一性,即不可有重复的值
例:
  create table tabuser
(
uid char(20),
uname varchar(30),
upwd varchar(30),
uage int default 18,
uphone varchar(30) unique,
)
---现在uphone具有唯一性,当向uphone插入相同的数据时会出错
4.identity()自动增加列,形式为indetitiy(m,n)表示从m开始每次增加n
例:
create table tabuser
(
uid char(20),
uname varchar(30),
upwd varchar(30),
uage int identity(1,1),
uphone varchar(30),
)
注意:自动增加的列一般不作为主键约束,因为比如说indetitiy(1,1)我插入三行数据,即1,2,3列,现在把2列删除,再添加一列数据时会继续往后加变成1,3,4,这样会造成数据混乱。
5.check():检查,括号里可以放入任何可以放在where语句中的句子
例:
create table tabuser
(
uid char(20),
uname varchar(30),
upwd varchar(30),
uage int check(uage between 18 and 35),
uphone varchar(30),
)
---这样uage就必须在18和35之间
 
引用完整性
create table class
(
cid char(4) primary key,
cname varchar(20)
)
create table student
(
sno char(6) primary key,
cname varchar(30),
cid char(4),
constraint fk_student
foreign key(cid) references class(cid)
)
----现在class的主键cid是student的一个外键
 
 

>---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ---------------------- 详细请查看:http://net.itheima.com/

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值