博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优化MySchool数据库(二)
阅读量:6711 次
发布时间:2019-06-25

本文共 2278 字,大约阅读时间需要 7 分钟。

优化School数据库(TSQL建库建表建约束)

 

使用T_sql代码建库、建表、建约束:

建库:

Create database HotelManagerSystem

on

(  

---- 数据文件---

)

log on

(

---- 日志文件

)

【当有多日志、多数据文件时,以逗号分隔,连续定义就可以了】

Create database 数据库名

on

(),(),()

log on

(),()

 

数据库文件的主要参数:

 name 、filename、size、maxsize 、filegrouwth

注意:

         如果数据库在正常运行过程中,如何“动态添加”数据文件呢?

 ALTER DATABASE 数据库名

       ADD FILE

       (     NAME  = 文件名,

             FILENAME = ‘c:\temp\....’,

             SIZE = 10MB,

             FILEGROWTH = 10MB

        )

ALTER DATABASE  数据库名

1、REMOVE FILE  文件名;

                  2、MODIFY  FILE(Name  = 文件名, FileGrowth = 50MB)

 

 

如何判断“数据库是否依据存在”?

    方式一:

      Exists(select * from sysdatabases where  name = '数据库名')

   方式二:

      db_id('数据库名') is not  null

      -------------------------------------------------

      if (db_id('Mydatabase') is not null)

              drop  database Mydatabase

    

      create database Mydatabase

              on

              (......)

              log on

              (.......)

       go

 

 

 

如何创建“表”:

        1、必须打开自己的数据库(use  数据库名  go)

        2、判断数据表是否存在,并删除

               -- if exist(select * from sysobjects  where name = '表名')

             -- if object_id('表名') is not  null

        3、语法

             Create Table  表名

             (

                   列名    列类型   是否为空 ,

                   name   varchar(20)  not null ,

               )

             go

 

Sqlserver中的”维护数据完整性“分类:

      ---- 所谓数据完整性:就是数据库中的数据,不丢失、不混淆

     数据完整性分类:

          1、实体完整性:

                 ---- 确保每条记录都是唯一的,不会搞混淆

                        主键约束、唯一约束、自增长标识

          2、域完整性:

                 ---- 确保每条记录的每一个部分,都有有效的,没有错误数据

                       列的数据类型、默认约束、非空约束、check约束

          3、引用完整性:

                -----  确保表与表之间,具有有效的关联(表间关系)

                      主外键约束

          4、自定义完整性:

               ----- 确保表中的记录,符合“逻辑业务”的要求

                     存储过程、触发器、规则

 

常用约束的设置:

        ---- 主键、外键、默认、检查、唯一

        ---- 语法(先表后约束)

               Alter  Table 表名

                    Add  constraint  约束名  约束类型  约束的内容

 

 

约束名

约束类型

约束内容

primary   key

pk_列名

PRIMARY KEY

primary key(列名)主键约束

unique  key

uq_列名

UNIQUE

unique(列名)唯一约束

Default  for

 df_列名

DEFAULT ... FOR...

Default(值) for  (列)默认约束

Check

ck_列名

CHECK

check(判断条件)

foreign   key

references

fk_列名

FOREIGN KEY ...

REFERENCES

 FOREIGN KEY (本表的列) REFERENCES 外表(外表的主键列)外键约束

 

 

ALTER TABLE stuInfo

     ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo) ,

              CONSTRAINT UQ_stuID UNIQUE (stuID)  ,

              CONSTRAINT DF_stuAddress DEFAULT ('地址不详')          FOR stuAddress  ,

               CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40) ,

               CONSTRAINT FK_stuNo  FOREIGN KEY(stuNo) REFERENCES stuMark(stuNo)

GO

 

 

ALTER TABLE Subject WITH NOCHECK

ADD CONSTRAINT CK_ClassHour CHECK (ClassHour>=0)

(WITH NOCHECK  加了这个强制添加,不检查原来的数据)

 

 

 

 

 

 

 

小贴士:

      exists() ---- 当括号中的“查询字句”有返回结果,则exists =true

                                  。。。。。。。。。。。无。。。。。。。。。。false

      char\varchar 类型的区别:当数据填充时,长度是否永远固定。char=固定

      带n的与不带n的char类型:只填充【字母或数字】的使用不带n的,

                                                          需要存入汉字或其他特殊符号的,就用带n的

               ---- 带n的字符类型,长度为2字节;不带n的字符类型,长度为1字节

转载于:https://www.cnblogs.com/why168888/p/4278765.html

你可能感兴趣的文章
(5)Python字典
查看>>
ES6(Proxy 和 Reflect)
查看>>
Integer 与 Long 数字类型的比较:Java与Kotlin的细节不同
查看>>
React 路由状态管理总结
查看>>
禅道 11.3 版本发布,主要完善细节,修复 bug
查看>>
无人机新用途,可精确识别危险海洋生物并向游泳者发出预警
查看>>
关于sql语句的优化问题
查看>>
SQL Server 2016新特性:数据库级别配置
查看>>
IPTABLES常用命令之配置生产环境IPTABLES及优化
查看>>
linux服务ssh详解
查看>>
cat命令一些不常用但很有用的参数
查看>>
双色球 脱壳加去效验
查看>>
管理信息系统测试方法总结(二)
查看>>
(一) virtualenv虚拟环境安装
查看>>
Android官方开发文档Training系列课程中文版:分享简单数据之从其它APP接收简单数据...
查看>>
OpenSSL将于9月22日发布多个漏洞补丁
查看>>
大数据助推新型智库建设
查看>>
新加坡欲重组通信和媒体管制机构
查看>>
《CCNP ROUTE 300-101学习指南》——2.2节构建EIGRP拓扑表
查看>>
《为自己工作——世界顶级设计师成功法则》目录—导读
查看>>