SQL--数据定义

创建表(Create table)

语法:

 Create table 数据库名称 模式名 表名(

列名1 数据类型 PRIMARY KEY,

列名2 数据类型 not null,

………

);

如果你没有指定模式就默认在当前数据库的dbo模式下

例:create table stu(

id int identity primary key, -- identity标识列  primary key主键

name varchar (20) not null,

birthday datetime

);

复制表

如果目标表存在

语法:insert into 目标表 [指定字段]  select * from 原表;

如果目标表不存在

语法:select * into 目标表 from 原表;

标识列

创建标识列(identity)

语法:identity [(第一行的值,添加到上一行标识值的增量值)]

可以不写,如果不写就是默认为(1,1),也可以自定义。

允许每个表只有一个标识列

例:create table a(

aid int identity(1,2) primary key,

aname varchar (50) not null

);

重用标识值

SQL server不能重用标识符。如果在标识符中插入行并执行insert语句失败或回滚,则标识值将丢失,并不会再次生成。会导致标识列中出现空白

重置整个表的标识列(删除数据)

truncate删除表内所有值并重置标识符,但是表内的数据将会丢失而且无法找回。

语法:truncate table 表名;

重置标识列(不删除数据)

  1. dbcc checkident(‘表名’,new_value)重置新的标识符,new_value为新值
  2. select ident_current(‘a’)当前表标识列的最大值
  3. select @@identity 当前标识列的最大值。注:要紧跟着错误的语句查询

向表添加列

语法:alter table 表名 add 列名 数据类型 约束

例:alter table stu

add tel nvarchar (11) not null;

 

修改列

可以修改列的数据类型,列的大小、not null约束

语法:alter table 表名 alter column 列名 数据类型;

例:alter table stu alter column tel varchar(22)

表中有数据时转变数据类型的时候,数据要能转变为目标类型,转变不成就会报错。两个数据类型必须是兼容的。

删除列

语法:alter table 表名 drop column 列名  

例:alter table stu drop column tel;

删除表(drop)

语法:drop table [ if exists] 表名;

添加if exists就不会报错,不管那个表存在不存在

删除具有外键约束的表

约束引用的表。要删除此表,必须先删除引用外键约束或引用表。

语法:

drop table 引用表;

drop table 被引用表;

如果使用单个drop table 删除两个表,则必须将引用表放在前面

语法:drop table 引用表,被引用表;

截断表(truncate table)

truncate table 类似于没有where子句的delete 语句 。但是truncate语句执行的更快,并且使用的系统和事务日志资源更少。

delect 比较的优点:

  1. 使用较少的事务日志

delete语句一次删除一行,并且在事务日志中为每个删除的行插入一个条目。truncate table语句通过释放用于存储表数据的数据页来删除数据,并仅在事务日志中插入页面解除分配。

  1. 使用更少的锁

使用行锁执行语句时,表中的每一行都被锁定以便删除。truncate table 锁定表和页,而不是每一行

  1. 重置标识

如果要截断的表具有标识列,则当使用truncate table 语句删除数据后,具有标识列的计算器将重置为开始的值(一般是:1)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值