优化 数据库的设计功能

--*******************************1.创建一个名称为S2224的数据库*****************************    
 
--创建一个名称为S2224的数据库   数据名称    路径(D:\)
--先将数据库切换到master

use master

if exists (select * from sysdatabases  where name='S2222')
drop database S2222

Create database S2222
on primary --主文件的标志
(
name='S2222_data',--逻辑名称
filename='D:\\S2222_data.mdf',--物理名称
size=2mb,
maxsize=50mb,
filegrowth=15%
)
log on
(
name='S2222_log',--逻辑名称
filename='D:\\S2222_log.ldf',--物理名称
size=2mb,
maxsize=50mb,
filegrowth=1
)


 --**************************************************************************************************    
 
 
--*******************************2.创建一个学生表Student**************************************    
         
         --Student(Sid,Sname,Sage,Sremark,Cid)
         use S2222
         CREATE TABLE Student  --表名
         (  
			 Sid   int  NOT NULL,
			 Sname varchar(10)	NOT NULL,
			 Sage int NOT NULL,
			 Sremark varchar(50) NULL,
			 Cid int NOT NULL
         )
 
         
 --*********************************3.创建一个年级表Grade(Cid,cname)************************    
       use S2222
       go 
       CREATE TABLE Grade
       (
       GradeID int identity(1,1),
       GRadename varchar(20)
       )
   
        
        --**************4.代码方式给Student,Grade表中添加3条数据************************************************************** 
       INSERT INTO Student (Sid,Sname,Sage,Sremark,Cid) VALUES (1,'王1',20,'xxxxx',1)--向学生表中添加单行数据
	   INSERT INTO Student (Sid,Sname,Sage,Sremark,Cid) VALUES (2,'王2',20,'xxxxx',1)
	   INSERT INTO Student (Sid,Sname,Sage,Sremark,Cid) VALUES (3,'王3',20,'xxxxx',1)
       
       INSERT INTO Grade (GRadename) SELECT ('S1') UNION
       SELECT ('S2') UNION
       SELECT ('Y2') 
       
       --方案三
       INSERT INTO Grade (GRadename) 
       values('S11'),('S22'),('S333')       
       

       --主键 和自增列是不是一回事儿?   主键未必是自增列,自增列也不一定是主键
       --他们两者之间是没有联系  
       --他们两者没有必然关系
        --主键用途:为了唯一标识表中的一条记录
        --自增:程序员不用手动给该列赋值。
   
        --********************************************************************************************************    

         --****************************************5.添加主键约束****************************************************************    
     -- 添加主键约束  (GradeID)
     
     ALTER TABLE Student 
     ADD CONSTRAINT PK_Sid primary key (Sid)
     
     
     ALTER TABLE Grade
     ADD CONSTRAINT PK_GradeID primary key (GradeID)
     

      --********************************************************************************************************   
          
       --******************************** 6.添加外键约束***************************************************
       /*常见的约束:
          1:主键约束
          2:唯一约束
          3:检查约束
          4:外键约束
          5:默认约束
          6:非空约束
       */

     --添加外键约束

     ALTER TABLE Student
     ADD CONSTRAINT FK_Grade_Student_Cid FOREIGN key (Cid)
     REFERENCES Grade (GradeID)
      
      
   
     --*******************7.添加唯一约束,保证学生姓名唯一****************************
    
       --添加唯一约束
       alter table Student
       add constraint UQ_IdentityCard unique (IdentityCard)
    
    
    
     --********************8.添加默认约束(备注默认值为:无备注)*******************
     
      --添加默认约束
      alter table Student 
      add constraint DF_Address default ('地址不详') for Address
     
     
   
    --**********************9.添加检查约束学生年龄>=18岁****************************
   

        --10.删除数据库,删除表,删除约束
           
         drop table student --从表或者叫子表
       

        --删除约束
         
       --delete 表中的记录
       
       --drop  结构

       
       
      --问题:请说出delete  truncate 和drop 区别?站在不同维度

      -- 1.delete 和 truncate删除 表中的记录,表结构还在 ,  drop删除的是表结构
       
       --2.delete 可以删除部分数据,可以跟where ,但是Truncate只能删除该表中所有记录,,不能和where连用
       
      --3.Truncate 删除速度快,delete 快
      
      --4.都可以删除数据
      
      --5.delete占用资源大,Truncate占用资源小
      
      --6 delete 删除后,编号在下一次insert时候继续+1  Truncate 从1开始
      
      --7.delete删除的时候,需要记录日志,所以速度慢!Truncate不需要记录日志!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值