• 优化MySchool数据库(二)


    优化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: emp....’,

                 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

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

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

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

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

    磨刀不误砍柴工
  • 相关阅读:
    [Drupal] .htaccess issue
    [Drupal] 404 page didn't render other blocks.
    [Drupal] How to add the catcha to the webform
    [Javascript] Javascript如何定义函数参数的默认值
    [MySQL] #1153 Got a packet bigger than 'max_allowed_packet' bytes
    [Drupal] How to change the content from English to language Language neutral
    [Javascript] How to enlarge and small the font
    [Drupal] My method of using ajax in Drupal
    [Drupal] Submit and redirect back to the modify page
    [Drupal] Creating Checkboxes, Radio Buttons, or Select Lists
  • 原文地址:https://www.cnblogs.com/why168888/p/4278765.html
Copyright © 2020-2023  润新知