数据库学习第四课

来源:互联网 发布:软件打不开闪退怎么办 编辑:程序博客网 时间:2024/06/11 04:49

1,主键与唯一键配合使用

             drop table student4   --删除student4表 

create table student4

(

    stu_id int primary key identity,   --主键递增,其中identity表示递增,在数据量很大的时候很实用

    stu_name nvarchar(50) unique not null,

    stu_email nvarchar(50) not null unique,--唯一键unique可在not null 前也可在其后

    stu_address nvarchar(50)

2,not null 定义

             要求用户必须为该属性赋一个值,否则语法出错

      注意空(不写null和not null) 和 default 的区别

             相同点:

                           都允许用户不赋值

     不同点:

                           null 修饰的字段如果用户不赋值则默认是null

                           default修饰的字段如果用户不赋值则默认是default的值

             如果一个字段不写null,也不写not null,则默认是null 即默认允许为空,用户可以不给该字段赋值

             如果用户没有为该字段赋值,则该字段的值默认是null

3,表和约束的区别

        数据库是通过表来解决事物的存储问题的

        数据库是通过约束来解决事物取值的有效性和合法性的问题

        建表的过程就是指定事物属性及其事物属性各种约束的过程

4,什么是关系

         定义:表和表之间的联系

        实现方式:通过设置不同形式的外键来体现表和表的不同关系

        分类:

                  一对一

                             既可以把表A的主键充当表B的外键

                             也可以把表B的主键充当表A的外键

                  一对多

                             国民老公系列

                              把表A的主键充当表B的外键

                              或者讲:把A表的主键添加到B表来充当B表的外键

                             在多的一方添加外键

                  多对多

                             学生VS老师

                             班级VS老师

 

--班级

create table banji
(
 banji_id int primary key,
 banji_num int not null,
 banji_name nvarchar(100)
)

--教师
create table jiaoshi
(
 jiaoshi_id int primary key,
 jiaoshi_name nvarchar(200)
)

--第三张表 用来模拟班级和教师的关系映射
create table banji_jiaoshi_mapping
(
 banji_id int constraint fk_banji_id foreign key references banji(banji_id) ,--以班级编号为外键
 jiaoshi_id int constraint fk_jiaoshi_id foreign key references jiaoshi(jiaoshi_id),--以教师编号为外键
 kecheng nvarchar(20),
 constraint pk_banji_id_jiaoshi_id primary key (banji_id,jiaoshi_id,kecheng)--以整体为主键
)
insert into banji(banji_id ,banji_num)  values (1,20)
insert into banji(banji_id ,banji_num)  values (2,30)
insert into banji(banji_id ,banji_num)  values (3,15)
insert into banji(banji_id ,banji_num)  values (4,50)
insert into jiaoshi values (1001,'aa')  --字符串需要加引号
insert into jiaoshi values (1002,'bb')
insert into jiaoshi values (1003,'cc')
insert into jiaoshi values (1004,'dd')

--删除表
drop table banji_jiaoshi_mapping

 

0 0