阅读 111

sql数据库从零开始学习(一)

sql数据库从零开始学习(一)

开始学习数据库了,学的有点混乱,做个笔记来梳理一下


创建表


create table student

(Sno char(9) primary key,

 Sname varchar(20) unique,

 Ssex char(2),

 Sage smallint,

 Sdept char(20),

);


1.主码约束: primary key

primary key ,顾名思义,即主键,也称主码。在表中一行称一个元组,如果存在某个属性或几个属性,其值能唯一标识表中的某一行,这样的一个属性或多个属性就能作为表的primary key。


2.唯一性约束: unique

UNIQUE约束和PRIMARY KEY约束的区别:

UNIQUE和PRIMARY KEY约束均为列或列集合提供了唯一性的保证;        

PRIMARY KEY约束拥有自动定义的UNIQUE约束;    

每个表中可以有多个UNIQUE约束,但是只有有一个PRIMARY KEY约束。


3.非空值约束: not null

Not null ,即不为空。Not null 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。


4.参照完整性约束: foreign key

外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的。创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作


5.CHECK 约束

CHECK 约束用于限制列中的值的范围。 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。 Check 约束通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列的值的范围。在列中更新数据时,所要输入的内容必须满足 Check 约束的条件,否则将无法正确输入。


 6.DEFAULT 约束

 DEFAULT约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

增加新列和完整性约束条件


//向Student表增加“入学时间”列,其数据类型为日期型

alter table Student add S_entrance date;//新加列为空值

//将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。

alter table Student Alter column Sage int;

//增加课程名称必须取唯一值的约束条件。

alter table Course add unique(Cname);

1

2

3

4

5

6

删除表


restrict:有限制删除


1.欲删除的基本表不能被其他表的约束所引用


2.如果存在依赖该表的对象,则此表不能被删除


cascade:无限制删除


相关对象一起删除


//无限制删除表student

drop table Student cascade;

drop table Student restrict;

1

2

3

建立索引


//Student表按学号升序建唯一索引

create unique index Studentsy on Student(Sno)

//Course表按课程号姜序建唯一索引

create unique index Coursesy on Course(Cno desc)

//SC表按学号升序和课程号降序建唯一索引

create unique index SCnosy on SC(Sno asc ,Cno desc)


1.unique表明此索引每一个索引值只对应唯一的数据记录,当属性列中含有重复值时,不能建立unique索引

2.cluster表示建立聚簇索引

3.升序 asc 降序 desc  不设值默认为升序

1

2

3

4

5

6

7

8

9

10

聚簇索引


1.聚簇索引的顺序,就是数据在硬盘上的物理顺序。一般情况下主键就是默认的聚簇索引


一张表只允许存在一个聚簇索引,因为真实数据的物理顺序只能有一种。如果一张表上还没有聚簇索引,为它新创建聚簇索引时,就需要对已有数据重新进行排序,所以对表进行修改速度较慢是聚簇索引的缺点,对于经常更新的列不宜建立聚簇索引。


聚簇索引性能最好,因为一旦具有第一个索引值的记录被找到,具有连续索引值的记录也一定物理地紧跟其后。一张表只能有一个聚簇索引,所以非常珍贵,必须慎重设置,一般要根据这个表最常用的SQL查询方式选择某个(或多个)字段作为聚簇索引(或复合聚簇索引)。


聚簇索引默认是主键,如果表中没有定义主键,InnoDB[1]会选择一个唯一的非空索引代替(“唯一的非空索引”是指列不能出现null值的唯一索引,跟主键性质一样)。如果没有这样的索引,InnoDB会隐式地定义一个主键来作为聚簇索引。


2.聚簇索引 与 唯一索引


严格来说,聚簇索引不一定是唯一索引,聚簇索引的索引值并不要求是唯一的,唯一聚簇索引才是!在一个有聚簇索引的列上是可以插入两个或多个相同值的,这些相同值在硬盘上的物理排序与聚簇索引的排序相同,仅此而已


3.创建、删除、改名聚簇索引


//在student表的Sname列上建立一个聚簇索引,而且student标红的记录表将按照Sname值的升序存放

create cluster index stusname on Student(Sname);

//将SC表的SCno索引名改成SCSno

alter index SCno rename to SCSno;

//删除student表中stusname索引

drop index Student.Stusname

————————————————

版权声明:本文为CSDN博主「mixer_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/mixer_/article/details/116092003


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐