zoukankan      html  css  js  c++  java
  • SQLServer 学习笔记之超详细基础SQL语句 Part 9

    Sqlserver 学习笔记

    by:授客 QQ1033553122
    -----------------------接Part 8-------------------

    3 范式的概念

    第一范式的目标是确保每列的原子性。

    如果每列都是不可再分的最小单元(也称为最小的原子单位。),则满足第一范式(1NF

     

    第二范式要求每个表只描述一件事情。

    如果一个关系满足1NF,并且除了主键以外的其它列,都依赖该主键,则满足第二范式。(2NF

     

    第三范式

    如果一个关系满足2NF,并且除了主键以外的其它列都不传递依赖于主键,则满足第三范式(3NF)。

     

    第一范式(1NF)的目标:确保每列的原子性。

    第二范式(2NF)的目标:确保表中的每列,都和主键相关,即不存在部分依赖

    SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>9

    第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关,即不存在传递函数依赖

    SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>9

    4 T-SQL创建数据库的语法:

    CREATE  DATABASE  数据库名

     ON [PRIMARY]

     (

      <</span>数据文件参数> […n]  [<</span>文件组参数>]

     )

     [LOG ON]

     (

      <</span>日志文件参数> […n]

     )

     

    示例

    --创建学生数据库:一个数据文件,一个日志文件

    CREATE DATABASE studentDB

    ON PRIMARY--默认就是属于PRIMARY主文件,可以省略

    (

        NAME='stdDB_data',--主数据文件的逻辑名

        FILENAME='E:SQLstuDB.mdf',--主数据文件的物理名

        SIZE=3mb,--主数据文件的初始大小

        MAXSIZE=10mb,--主数据文件的增长的最大值

        FILEGROWTH=10%--主数据文件的增长率

    )

    LOG ON

    (

        NAME='stuDB_log',

        FILENAME='E:SQLstuDB_log.ldf',

        SIZE=3mb,

        MAXSIZE=10mb,

        FILEGROWTH=1mb

    )

    GO

     

    注意:这里的两个name参数不能一样的逻辑名,否则会提示逻辑文件名xxx已被使用,请选择另一个名称

     

    --创建学生数据库:多个数据文件,多个日志文件

    CREATE DATABASE employeeDB

    ON PRIMARY--默认就是属于PRIMARY主文件,可以省略

    (

        NAME='employee1_data',--主数据文件的逻辑名

        FILENAME='E:SQLemployee1.mdf',--主数据文件的物理名

        SIZE=3mb,--主数据文件的初始大小

        MAXSIZE=10mb,--主数据文件的增长的最大值

        FILEGROWTH=10%--主数据文件的增长率

    ),

    (

        NAME='employee2_data',--主数据文件的逻辑名

        FILENAME='E:SQLemployee2.mdf',--主数据文件的物理名

        SIZE=3mb,--主数据文件的初始大小

        MAXSIZE=10mb,--主数据文件的增长的最大值

        FILEGROWTH=10%--主数据文件的增长率

    )

     

    LOG ON

    (  

        NAME='employee1_log',

        FILENAME='E:SQLemployee1_log.ldf',

        SIZE=3mb,

        MAXSIZE=10mb,

        FILEGROWTH=1mb

    ),

    (

       

        NAME='employee2_log',

        FILENAME='E:SQLemployee2_log.ldf',

        SIZE=3mb,

        MAXSIZE=10mb,

        FILEGROWTH=1mb

    )

    GO

     

    USE master --设置当前数据库为master,以便访问sysdatabase

    GO

    IF EXISTS(SELECT * FROM sysdatabases WHERE name='stuDB')

       DROP DATABASE stuDB

    CREATE DATABASE stuDB

    ON PRIMARY

    (

        NAME='stdDB2_data',--主数据文件的逻辑名

        FILENAME='E:SQLstuDB2.mdf',--主数据文件的物理名

        SIZE=3mb,--主数据文件的初始大小

        MAXSIZE=10mb,--主数据文件的增长的最大值

        FILEGROWTH=10%--主数据文件的增长率

    )

    LOG ON

    (

        NAME='stuDB_log',

        FILENAME='E:SQLstuDB2_log.ldf',

        SIZE=3mb,

        MAXSIZE=10mb,

        FILEGROWTH=1mb

    )

    GO

     

    说明:EXISTS()语句:检测是否存在stuDB数据库如果存在stuDB数据库,则删除

     

    --创建表

     

    USE stuDB--将当前数据库设置为stuDB

    GO

    CREATE TABLE stuInfo

    (

        stuName VARCHAR(20) NOT NULL, --姓名,非空(必填)

        stuNo CHAR(6) NOT NULL, --学号,非空(必填)

        stuID NUMERIC(18,0),

        stuSeat SMALLINT IDENTITY(1,1), --座位号,自动编号

        stuAddress TEXT --住址,允许为空,即可选输入

    )

    GO

    说明:NUMERIC (18,0)

    代表18位数字,小数位数为0

    IDENTITY(起始值,递增量)

    5 约束

    目的:确保表中数据的完整型

    常用的约束类型:

    1)  主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空

    2)  唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。

    3)  检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束

    4)  默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为

    5)  外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的那列

     

    添加约束的语法:

    ALTER TABLE 表名 

         ADD CONSTRAINT 约束名  约束类型  具体的约束说明

     

    其中,约束名的取名规则推荐采用:约束类型_约束字段

    a)   主键(Primary Key)约束:如 PK_stuNo

    b)   唯一(Unique Key)约束:如 UQ_stuID

    c)   默认(Default Key)约束:如 DF_stuAddress

    d)   检查(Check Key)约束:如 CK_stuAge

    e)   外键(Foreign Key)约束:如 FK_stuNo


     

    示例

    --stuInfo表添加约束

    ALTER TABLE stuInfo

    ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)

     

    ALTER TABLE stuInfo

    ADD CONSTRAINT UQ_stuID UNIQUE(stuID)


    ALTER TABLE stuInfo

    ADD CONSTRAINT DF_stuAddress

    DEFAULT ('地址不详') FOR stuAddress

     

     

    ALTER TABLE stuInfo

    ADD CONSTRAINT CK_stuAge

    CHECK(stuNo BETWEEN 1 AND 60)

     

     

    ALTER TABLE stuInfo

    ADD CONSTRAINT FK_stuNo

    FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)

    GO
  • 相关阅读:
    QT4.7.1 + VS2008 + QT Designer开发流程心得
    SharePoint 2010 托管元数据Bug (跟邮件提醒功能相关.小bug,大问题)
    SharePoint 2010 技巧系列: 控制Ribbon菜单权限(SiteActions的例子)
    发布一个SharePoint 2010 工具(复制,移动文件和文件夹)
    SHarePoint 2010 技巧 列验证 (column Validation)
    SharePoint 2010系列: 教你如何创建Internet 站点一 (设计母版页)
    SharePoint2010 技巧系列:快速开发Ribbon
    SharePoint 2010 技巧: 限制People Picker搜索非站点集内的用户
    SharePoint 2010 技巧系列 启用文档库接收邮件功能
    SharePoint 2010 技巧系列: 文档管理的自动分发功能
  • 原文地址:https://www.cnblogs.com/shouke/p/10158061.html
Copyright © 2011-2022 走看看