《1》SQL Server设置主键自增长列

SQL Server设置主键自增长列
 
1.新建一数据表,里面有字段id,将id设为为主键
  www.2cto.com  
create table tb(id int,constraint pkid primary key (id))
create table tb(id int primary key )
2.新建一数据表,里面有字段id,将id设为主键且自动编号
 
create table tb(id int identity(1,1),constraint pkid primary key (id))
create table tb(id int identity(1,1) primary key )
3.已经建好一数据表,里面有字段id,将id设为主键
 
alter table tb alter column id int not null 
alter table tb add constraint pkid primary key (id)
4.删除主键  www.2cto.com  
 
Declare @Pk varChar(100);
Select @Pk=Name from sysobjects where Parent_Obj=OBJECT_ID('tb') and xtype='PK';
if @Pk is not null
exec('Alter table tb Drop '+ @Pk)
 

《2》在新表中创建外键

  1. 在“对象资源管理器”中,连接到 数据库引擎的实例。

  2. 在标准菜单栏上,单击“新建查询”。

  3. 将以下示例复制并粘贴到查询窗口中,然后单击“执行”。 此实例创建一个表并定义针对列 TempID 的外键约束,该列引用 Sales.SalesReason 表中的列 SalesReasonID。 ON DELETE CASCADE 和 ON UPDATE CASCADE 子句用于确保对 Sales.SalesReason 表的更改自动传播到 Sales.TempSalesReason 表

    USE AdventureWorks2012;
    GO
    CREATE TABLE Sales.TempSalesReason (TempID int NOT NULL, Name nvarchar(50),
    CONSTRAINT PK_TempSales PRIMARY KEY NONCLUSTERED (TempID),
    CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)
        REFERENCES Sales.SalesReason (SalesReasonID)
        ON DELETE CASCADE
        ON UPDATE CASCADE
    );GO

《3》建表之前进行必要的批处理

CREATE TABLE UserContactPerson
(
   ID            INT PRIMARY KEY,
   UserID        INT,
   ContactPersonID    INT
    
)

(贴代码是格式错位了)这种写法是最原始、落后的。也是最容易产生错误的写法:首先它没有在代码里指定在那个数据库执行,有时候人很粗心,打开文件就执行了,有可能把表就建到master或其他数据库去了。其次在批处理建表的时候,如果这个表在该数据库已经存在了。则会影响执行。所以我们可以改善一下它的写法。

USE MyAssistant 
GO IF  EXISTS (SELECT 1 FROM SYSOBJECTS WHERE NAME = 'UserContactPerson' AND XTYPE = 'U') DROP TABLE UserContactPerson;
CREATE TABLE UserContactPerson
(
   ID            INT PRIMARY KEY,
   UserID        INT,
   ContactPersonID    INT
    
)
GO

这种写法也有个问题,就是DROP TABLE UserContactPerson; 这个地方,一般来说不建议删除表后,然后新建,除非是数据库创建时,新建表。原因不用多说,想必大家都很明白。一般应该给予提示,让执行这段脚本的人去选择处理,类似于下面的写法

IF NOT EXISTS(SELECT 1 FROM SYSOBJECTS WHERE NAME = 'Users' AND XTYPE ='U') 

CREATE TABLE [Users]
(
    [UserID]            INT IDENTITY(1,1),        --ID主键
    [UserName]            NCHAR(15),                --用户名
    [Password]            CHAR(15),                --密码
    [NickName]            NCHAR(15),                --别名、网名    
    [Name]                NCHAR(8),                --真实姓名
    [SEX]                BIT,                    --性别
    [Age]                SMALLINT,                --年龄
    [Birthday]            SMALLDATETIME,            --生日
    [Moblie]            CHAR(11),                --手机
    [OfficePhone]        CHAR(12),                --办公室座机
    [HomePhone]            CHAR(12),                --家里座机
    [Email]                NCHAR(30),                --电子邮件
    [QQ]                CHAR(10),                --QQ
    [MSN]                CHAR(20),                --MSN
    [Skype]                CHAR(25),                --Skype
    [PersonWebsit]        CHAR(20),                --个人主页
    [Schoole]            NCHAR(20),                --毕业学校
    [Place]                NCHAR(15),                --籍贯
    [Hometown]            NCHAR(25),                --家乡
    [CreateDate]        SMALLDATETIME,            --用户创建时间
    [UpdateDate]        SMALLDATETIME,            --用户资料更新时间
    [LastLogin]            SMALLDATETIME,            --用户最后登录时间
    [IP]                CHAR(15),                --用户登录IP
    [Lock]                BIT,                    --用户是否被锁定
    [IsAdmin]            BIT,                    --是否是管理员
    [Session]            CHAR(20),                --保存登录Seesion
    CONSTRAINT PK_Users_UserID PRIMARY KEY(UserID)    
)
ELSE
  --DROP TABLE Users
  PRINT 'this table have been existed! you should check and take action'
GO

下面看看来判断该表是否存在的几种方法

1: IF NOT EXISTS(SELECT 1 FROM SYSOBJECTS WHERE NAME = 'Users' AND XTYPE ='U') 

2:IF EXISTS ( SELECT 1 FROM dbo.sysobjects  WHERE id = object_id(N'[dbo].[UserGroup]') and OBJECTPROPERTY(id, N'IsTable') = 1)

3:IF OBJECT_ID(N'ContactPerson') IS NOT NULL

 
 
 
 

SQL创建表脚本的更多相关文章

  1. SQL 创建表

    SQL 创建表是通过SQL CREATE TABLE 语句来实现,该语句是DDL SQL语句.CREATE TABLE语句用于创建用于存储数据的表.在创建表时,可以为列定义主键.惟一键和外键等完整性约 ...

  2. sql创建表

    表的创建 1.创建列(字段):列名+类型 2.设置主键列:能够唯一表示一条数据 3.设置唯一键:设计--索引/键--添加--唯一键(选择列)--确定 唯一键的内容不能重复 4.外键关系:一张表(从表) ...

  3. sql 常用的语句(sql 创建表结构 修改列 清空表)

    1.创建表 create Table WorkItemHyperlink ( ID bigint primary key ,--主键 WorkItemID ,) not null,--其中identi ...

  4. sql 创建表、删除表 增加字段 删除字段操作

    下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助. 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRI ...

  5. mysql用sql创建表完整实例

    create table user_login_latest( id int(11) unsigned NOT NULL AUTO_INCREMENT, user_id int(11) not nul ...

  6. sql 创建用户脚本

    USE master go  CREATE LOGIN jiazhuang --用户名 WITH PASSWORD = 'sa', --密码 DEFAULT_DATABASE = JiaZhuan, ...

  7. (一)廖师兄springboot微信点餐SQL建表脚本

      数据库设计 数据库表之间的关系 类目表(product_category) 商品表(product_info) 订单主表(order_master) 订单详情表(order_detail) 卖家信 ...

  8. 使用sql创建表并添加注释

    Create table T_ErrorLogTable_tb ( ELTID int identity(1,1) primary key,--编号 ELTTime date,--错误发生日期 ELT ...

  9. Oracle 使用sql创建表空间及用户

    create tablespace OrcalDBNamedb datafile 'C:\OracleDBDirc\OrcalDBNamedb.dbf' size 300m; 创建用户create u ...

随机推荐

  1. SharePoint 2013 项目部署

    SharePoint 2013 项目部署 本人刚接触sharepoint不久,是个小菜鸟,而且上手版本是2013,对10和07版也没有太多的了解.最近由于项目需要本人磕磕碰碰部署了sharepoint ...

  2. Android基础新手教程——4.1.2 Activity初窥门径

    Android基础新手教程--4.1.2 Activity初窥门径 标签(空格分隔): Android基础新手教程 本节引言: 上一节中我们对Activity一些主要的概念进行了了解,什么是Activ ...

  3. 淘宝JAVA中间件Diamond详解(二)---原理介绍

    转:http://blog.csdn.net/anhuidelinger/article/details/70314744 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本 ...

  4. ssh之<context:component-scan base-package="com.xx" />

    <context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能, 同时还启用了注释驱动自动注入的功能 ( 即还隐式地在内部注册了 A ...

  5. redis源代码分析(5)——aof

    前面几篇基本介绍了redis的主要功能.流程.接下来是一些相对独立的部分,首先看一下持久化. redis持久化支持两种方式:RDB和AOF,我们首先看一下AOF的实现. AOF(Append only ...

  6. 【Python3 爬虫】08_正则表达式(元字符与语法)

    元字符表 符号 说明 示例 . 表示任意字符 'abc'  >>>'a.c'   >>>结果为:'abc' ^ 表示字符开头 'abc'  >>> ...

  7. CentOS6.5下docker的安装及遇到的问题和简单使用(已实践)

    转载自 CentOS6下docker的安装和使用 Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.利用Linux的LXC.AUFS. Go语言.c ...

  8. gm picture

    console.log("ok") /*var images = require("images");var fs = require("fs&quo ...

  9. 关于angularjs在IE里的坑——F12工具打开,功能正常,关闭之后,angularjs not working

    前端时间在做项目的时候,用到了angularjs,期间,发现了一个奇葩的问题,就是在IE11浏览器下,点击下方图1上箭头所示的位置,将此处的开关变为图2中箭头所示的样子,但是发觉没有反应,开关还是灰色 ...

  10. 【转】jQuery.extend 函数详解

    原文地址:http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html JQuery的extend扩展方法:      Jq ...