zoukankan      html  css  js  c++  java
  • SQL SERVER学习笔记(三)数据表管理

    一、SQL Server支持的数据类型

    1、文本型

    • CHAR     定长型 <=8000字节

    • Varchar 变长型 <=8000字节

    • Text     大文本 <=2G

    • NCHAR     定长型 <=4000字节

    • NVarchar 变长型 <=4000字节 SQL2005提供了NVarChar(MAX)<=2G

    NText     大文本 <=2G

    注意:

    Ø  “N”型文本类型是为了表示中文、日文、韩文等大字符集的文字而产生的

    Ø   对应定长的字符,用CHAR比用VARCHAR的效率要高,如学生表中的“Sex”

    Ø   在SQL Server 7.0后N型和非N型通用

     

    2、日期型

    • DateTime         1753.1.1-9999.12.31 8字节

    SmallDateTime    1902.1.1-2079.12.31 4字节

    注意:

    Ø  系统时间格式:D-M-YY HH24:M:S

    Ø  系统可识别日期格式:

    ² 字母日期    ‘April 15,1998’

    ² 数字日期    ‘4/15/1998’

    ² 未分隔日期 ‘19981221’

    Ø  取得系统时间:Getdate()

    3、二进制型

    •  Image            <=2G

    •  Sql_Variant      变体型,可以接受任何数据类型

    注意:

    Ø  如果表中包含IMAGE类型字段,该表的记录将无法以一个页存放,为避免产生行链接,建议将大数据字段和常规数据字段分开存放。

    Ø  SQL_Variant的字段无法经常各种常规的函数操作。

    4、扩展型

    •  Identity         4字节

    •  Customer Type    用户自定义数据类型

    注意:

    •  增加自定义数据类型

                Exec Sp_AddType 类型名称,‘类型定义’,‘空标志’

                Exec Sp_AddType Telephone,’Varchar(24)’,’Not Null’

    5、完整性类型

    包括:实体完整性(加强完整性规则的SQL Server工具:主键约束、唯一约束、标识列)

    域完整性(加强完整性规则的SQL Server工具:默认值定义、外键约束、检查约束、

    NOT NULL属性)

             引用完整性(加强完整性规则的SQL Server工具:外键约束、检查约束)

             用户定义完整性(加强完整性规则的SQL Server工具:存储过程、规则、触发器)

    6、创建和更改主键

    (1) create table table_name <column_definition> primary key

    其中,<column_definition>是列名

    (2) 如果,现有表中无主键,可以添加主键:

    alter table table_name

    add constraint <constraint_name>

    primary key ( <column_name> )

    其中<constraint_name>为约束名。

     

    7、约束和约束对象

    SQL Server2000提供了以下约束:check<检查约束> default<默认值> primary key<主键>

    foreign key<外键> unique<唯一性>

    8、通配符

    通配符

    解释

    示例

    _

    一个字符

    Select username from tb_user where username like ‘T_’

    %

    任意长度的字符串

    Select username from tb_user where username like ‘%T%’

    []

    括号中所指定的范围中的任意一个

    Select * from flight where address like ‘bt52[1-4]’

    [^]

    不在括号中所指定的范围中的任意一个

    Select * from flight where address like ‘bt52[^1-4]’

    9、     逻辑运算符

    ANDORNOT

    二、SQL Server对象模型化过程

    Ø 数据采集并属性化

    Ø 约束的制定

    域约束:Not Null,Check,Default,Unique

    完整性约束:Primary Key

    引用性约束:Foreign Key,Trigger

    Ø  规则的制定

    Ø  关系的创建

    Ø  默认值的关联

    Ø  索引的创建

    常规索引

    全文索引

    Ø  数据的规划

    三、表的创建

    •   图形方式

    企业管理器(Enterprise Manager)

    •   代码方式

    查询分析器(Query Analyzer)

     

    四、创建表

    create table 工资表

    (

    职工编号 varchar(10)

    constraint pk_工资表 primary key         主键约束

    constraint fk_工资表_职员表 foreign key references 职员表(编号)     外键约束

    on delete cascade on update cascade,        级联更新,级联删除

     

    工资 smallmoney

    constraint ck_工资表 check(工资>0       检查约束

    constraint df_工资表_工资 default 1000        默认值

    )

    五、数据操作

           1、数据插入Insert

    语法:insert into <table_name> values ( <values>)

    2、选择性的将一个表中的数据添加到另一个表中

       语法:insert into <table_name1> select <column_list> from <table_name2>

    例如:insert into VipUser select username from users where rank=’VIP’

           3、更新数据Update

                  语法:update <table_name> set <column_name=value> [ where 条件 ]è条件可有可无

           4、删除数据Delete

                  语法:delete from <table_name> [ where 条件] è条件可有可无

           5、使用Truncate table 删除表中的所有数据

    六、约束的管理

    1、 主键约束

    Primary Key

    注意:

    Ø 约束可以在建表时创建,也可修改表结构时创建

    Ø 创建Primary Key约束时,系统讲自动为该约束字段创建索引

    Ø Primary Key约束如果不命名,系统将自动给定约束名:“PK_表名_8位标志符”

    Ø 定义语法:Constraint 约束名 Primary Key  Cluster/NonCluster 字段集

    Ø 系统默认为PK约束创建Cluster索引

    •  

    2、外键约束

    • Foreign Key

    注意:

    Ø  约束可以在建表时创建,也可修改表结构时创建

    Ø  定义语法:

    Constraint 约束名 Foreign Key
        References 引用表(引用字段集)

    On Delete Cascade/No Action

    On Update Cascade/No Action

    Ø  如果使用NO Action,系统不允许删除被引用的数据

    七、规则的创建和管理

    1、创建规则

    • Create Rule 规则名 As 条件表达式

    例:Create Rule Rule_Age As @T>=15 And @T<=30

    2、绑定规则/取消绑定

    • Exec Sp_BindRule ‘规则名’,‘字段’

    例:Exec Sp_BindRule ‘Rule_Age’,’Stu_Age’

    • Exec Sp_UnBindRule ‘字段’

    例:Exec Sp_UnBindRule ’Stu_Age’

    注意:

    •  一个字段只可以和一个规则绑定,一个规则可以和多个字段绑定

    八、默认值的创建和管理

    1、创建默认值

    • Create Default 默认名 As 常数表达式

    例:Create Default Def_Stat As ‘中国’

    2、绑定默认值/取消默认值

    • Exec Sp_BindDefault ‘默认名’,‘字段’

    例:Exec Sp_BindDefault ‘Def_Stat’,’Stu_Stat’

    • Exec Sp_UnBindDefault ‘字段’

    例:Exec Sp_UnBindDefault ’Stu_Stat’

    注意:

    •  一个字段只可以和一个默认绑定,一个默认可以和多个字段绑定

    九、表结构的调整

    1、字段定义的修改

           Alter Table 表名 Alter Column 列名列定义

    2、添加字段

            Alter Table 表名 Add 列名 列定义

    3、删除字段

             Alter Table 表名 Drop Column 列名

    注意:

    • 添加字段的时不允许将字段属性设置为“Not Null”

    •  

    4、添加约束

             Alter Table 表名 Add Constraint 约束名 约束定义

    5、删除约束

     Alter Table 表名 Drop Constraint 约束名

    注意:

    Ø  在删除Primary Key,Unique Key约束的时候,系统将自动删除相应的Index

    Ø  如果约束没有命名,要删除必须用修改字段定义的方式

    6、删除表

           Drop Table 表名

    注意:以下两种情况无法删除表:

    (1) 表被占用

    (2)表有被引用关系(作为外键的主表)

     

    第三部分习题样例

    1、 创建具有关系的表并进行合理的数据规划

    创建城市表,包含:

    城市编码   5

    城市名称   20

    邮政编码: 6

     

    use T607

    create table City

    (

        CityCode varchar(5) constraint pk_city_citycode primary key,

        CityName varchar(20),

        Postalcode varchar(6)

    )on G_Normal

    2、创建学生表:

        学生编码    固定13位

        学生姓名    不为空,不重复

        学生性别    F/M

        学生年龄    15-25

        学生生日    

        学生籍贯

        学生国籍

        学生照片

    根据实际需要设计相应的关系和约束,同时,FK约束为同步更新方式

    create table Student

    (

        StuCode char(13) constraint pk_student_stucode primary key,

        StuName varchar(10) not null constraint uk_student_stuname unique,

        StuSex char(2) check(StuSex in('F','M')),

        StuAge smallint check(StuAge>=15 and StuAge<=25),

        StuBirthday smalldatetime,

        StuNativePlace varchar(5) constraint fk_student_city foreign key references City(CityCode)

        on delete cascade on update cascade,

        StuState varchar(20),

        StuImage image

    )

    on G_Change

    textimage_on G_Big

    3、 将学生年龄的约束制定成规则并绑定

    create rule rule_stu_age as @T>15 and @T<=25

    exec sp_bindrule 'rule_stu_age','Student.StuAge'

    4、 将学生编码的固定长度约束制定成规则并绑定

    drop rule rule_stu_code

    create rule rule_stu_code as len(@length)=13

    exec sp_bindrule 'rule_stu_code','Student.StuCode'

    5、 将国籍设置默认并绑定

    create default def_stu_state as '中国'

    exec sp_bindefault 'def_stu_state','Student.StuState'

    insert into Student values('4534567891234','jack','m',24,'2005-12-14','0592','','0000')

    6、 添加一个字段:地址 50 不允许为空

    alter table Student add Address varchar(50)

    alter table Student alter column Address varchar(50) not null

    7、 删除刚才添加的字段:地址

    alter table Student drop column Address

    8、 修改学生编码中的主键索引为非聚集索引,将学生姓名所产生的索引设置成为聚集索引

    alter table Student drop constraint pk_student_stucode--删除约束

    alter table Student add constraint pk_student_stucode primary key nonclustered(StuCode)

    alter table Student drop constraint uk_student_stuname

    alter table Student add constraint uk_student_stuname unique clustered(StuName)

    版权说明

      如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
      作      者:温景良
      文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

  • 相关阅读:
    高并发处理(一)页面静态化
    高并发处理(二)图片服务器分离
    五百强企业某部门视频面试题汇总
    access和sqlyog的使用
    条件查询
    primary select |||| case primary select
    win10 + ubuntu16 双系统安装
    ubuntu16 下安装python3.6 和Anaconda3
    import nltk nltk.download('reuters') [nltk_data] Error loading reuters: <urlopen error [Errno 11004] [nltk_data] getaddrinfo failed>
    共现矩阵
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1324395.html
Copyright © 2011-2022 走看看