zoukankan      html  css  js  c++  java
  • SQLServer之DEFAULT约束

    DEFAULT约束添加规则

    1、若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL

    2、如果“默认值”字段中的项替换绑定的默认值(以不带圆括号的形式显示),则将提示你解除对默认值的绑定,并将其替换为新的默认值。

    3、若要输入文本字符串,请用单引号 (') 将值括起来;不要使用双引号 ("),因为双引号已保留用于带引号的标识符。

    4、若要输入数值默认值,请输入数值并且不要用引号将值括起来。

    5、若要输入对象/函数,请输入对象/函数的名称并且不要用引号将名称括起来。

    使用SSMS数据库管理工具添加DEFAULT约束

    1、连接数据库,选择数据表-》右键点击-》选择设计。

    2、在表设计窗口中-》选择数据列-》在列属性窗口中找到默认值或绑定-》输入默认值(注意默认值的数据类型和输入格式)。

    3、点击保存按钮(或者ctrl+s)-》刷新表-》再次打开表查看结果。

    使用T-SQL脚本添加DEFAULT约束

    当表结构已存在时

    首先判断表中是否存在默认约束,如果存在则先删除默认约束再添加,如果不存在则直接添加。

    语法:

    use 数据库
    go
    --判断默认约束是否存在,如果存在则先删除,如果不存在则直接添加
    if exists(select * from sysobjects where name=约束名)
    alter table 表名 drop constraint 约束名;
    go
    --给指定列添加默认约束
    alter table 表名 add constraint 约束名 default(约束值) for 列名;
    go

    示例:

    use [testss]
    go
    --判断默认约束是否存在,如果存在则先删除,如果不存在则直接添加
    if exists(select * from sysobjects where name='defalut_height')
    alter table [testss].[dbo].[test1] drop constraint defalut_height;
    go
    --给指定列添加默认约束
    alter table [testss].[dbo].[test1] add constraint defalut_height default(160) for height;
    go

    创建表时添加默认约束

    首先判断表是否选在,如果存在则先删除表再添加,如果不存在则直接添加。

    语法:

    --创建新表时添加默认约束
    --数据库声明
    use 数据库名
    go
    --如果表已存在则先删除表再创建,如果表不存在则直接创建
    if exists(select * from sysobjects where name=表名 and type ='U')
    drop table 表名;
    go
    --建表语法声明
    create table 表名
    (
    --字段声明
    列名 列类型 identity(1,1) not null,
    列名 列类型) null,
    列名 列类型 null,
    列名 列类型 null,
    列名 列类型,
    列名 列类型 constraint 约束名 default 默认值,
    primary key clustered(列名 asc) with(ignore_dup_key=off) on [primary] --主键索引声明
    )on [primary]

    --字段注释声明
    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'列说明' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'表名', @level2type=N'COLUMN',@level2name=N'列名';

    go

    示例:

    --创建新表时添加默认约束
    --数据库声明
    use testss
    go
    --如果表已存在则先删除表再创建,如果表不存在则直接创建
    if exists(select * from sysobjects where name='test1' and type ='U')
    drop table test1;
    go
    --建表语法声明
    create table test1
    (
    --字段声明
    id int identity(1,1) not null,
    name nvarchar(50) null,
    sex nvarchar(50) null,
    age nvarchar(50) null,
    classid int,
    height int constraint default_he default 166,
    primary key clustered(id asc) with(ignore_dup_key=off) on [primary] --主键索引声明
    )on [primary]

    --字段注释声明
    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'id主键' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'id';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'姓名' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'name';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'性别' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'sex';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'年龄' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'age';

    exec sys.sp_addextendedproperty @name=N'MS_Description', @value=N'班级id' , @level0type=N'SCHEMA',
    @level0name=N'dbo', @level1type=N'TABLE',@level1name=N'test1', @level2type=N'COLUMN',@level2name=N'classid';

    go

    DEFAULT约束优缺点

    优点:

    1、使用默认值可以减少代码量,新增数据时可以不用写新增默认值列,执行新增操作时时默认填充。

    2、较有利于进行统计和分析,以及方便程序逻辑操作。

    缺点:

    1、使用不为NULL的默认值,占用了更多的存储空间。

  • 相关阅读:
    Why Choose Jetty?
    Jetty 的工作原理以及与 Tomcat 的比较
    Tomcat设计模式
    Servlet 工作原理解析
    Tomcat 系统架构
    spring boot 打包方式 spring boot 整合mybaits REST services
    wireshark udp 序列号 User Datagram Protocol UDP
    Maven 的聚合(多模块)和 Parent 继承
    缓存策略 半自动化就是mybaitis只支持数据库查出的数据映射到pojo类上,而实体到数据库的映射需要自己编写sql语句实现,相较于hibernate这种完全自动化的框架我更喜欢mybatis
    Mybatis解决sql中like通配符模糊匹配 构造方法覆盖 mybits 增删改
  • 原文地址:https://www.cnblogs.com/vuenote/p/9579894.html
Copyright © 2011-2022 走看看