SQL创建表脚本
《1》SQL Server设置主键自增长列
《2》在新表中创建外键
在“对象资源管理器”中,连接到 数据库引擎的实例。
在标准菜单栏上,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击“执行”。 此实例创建一个表并定义针对列 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》建表之前进行必要的批处理
(
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创建表脚本的更多相关文章
- SQL 创建表
SQL 创建表是通过SQL CREATE TABLE 语句来实现,该语句是DDL SQL语句.CREATE TABLE语句用于创建用于存储数据的表.在创建表时,可以为列定义主键.惟一键和外键等完整性约 ...
- sql创建表
表的创建 1.创建列(字段):列名+类型 2.设置主键列:能够唯一表示一条数据 3.设置唯一键:设计--索引/键--添加--唯一键(选择列)--确定 唯一键的内容不能重复 4.外键关系:一张表(从表) ...
- sql 常用的语句(sql 创建表结构 修改列 清空表)
1.创建表 create Table WorkItemHyperlink ( ID bigint primary key ,--主键 WorkItemID ,) not null,--其中identi ...
- sql 创建表、删除表 增加字段 删除字段操作
下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助. 新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRI ...
- mysql用sql创建表完整实例
create table user_login_latest( id int(11) unsigned NOT NULL AUTO_INCREMENT, user_id int(11) not nul ...
- sql 创建用户脚本
USE master go CREATE LOGIN jiazhuang --用户名 WITH PASSWORD = 'sa', --密码 DEFAULT_DATABASE = JiaZhuan, ...
- (一)廖师兄springboot微信点餐SQL建表脚本
数据库设计 数据库表之间的关系 类目表(product_category) 商品表(product_info) 订单主表(order_master) 订单详情表(order_detail) 卖家信 ...
- 使用sql创建表并添加注释
Create table T_ErrorLogTable_tb ( ELTID int identity(1,1) primary key,--编号 ELTTime date,--错误发生日期 ELT ...
- Oracle 使用sql创建表空间及用户
create tablespace OrcalDBNamedb datafile 'C:\OracleDBDirc\OrcalDBNamedb.dbf' size 300m; 创建用户create u ...
随机推荐
- 使用Eclipse载入一个现有的java项目
下文的导入记录了在Eclipse环境中,要对已经下载好的java源码进行载入时的步骤.主要用于下载后的文件不方便进行拷贝到其它位置的情况.笔者几次用到这个顺序来载入项目,但是都是隔非常长时间才用一次, ...
- HAWQ技术解析(四) —— 启动停止
前面已经完毕了HAWQ的安装部署,也了解了HAWQ的系统架构与主要组件,以下開始使用它. HAWQ作为Hadoop上的一个服务提供给用户,与其他全部服务一样.最主要的操作就是启动.停止 ...
- Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations (矩阵高速幂)
题目地址:http://codeforces.com/contest/551/problem/D 分析下公式能够知道,相当于每一位上放0或者1使得最后成为0或者1.假设最后是0的话,那么全部相邻位一定 ...
- LogManager
public class LogManager { // Fields public static bool Debugstate; // Methods public static void Log ...
- 解析 PHP 中 session 的实现原理以及大网站应用应该注意的问题
一 PHP SESSION原理 session 是在服务器端保持用户会话数据的一种方法,而 cookie 是在客户端保持用户数据.HTTP 协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系 ...
- JPA JPQL 查询、排序.....(转)
http://macrabbit.iteye.com/blog/855384 JPQL就是一种查询语言,具有与 SQL 相类似的特征, JPQL 是完全面向对象的,具备继承.多态和关联等特性,和hib ...
- Mac终端主题Peppermint
Peppermint主题下载 下载地址:https://noahfrederick.com/log/lion-terminal-theme-peppermint 配置颜色: 1.写配置文件 vim ~ ...
- 摄像头驱动_摄像头驱动程序必需的11个ioctl及摄像头数据的获取过程
摄像头驱动_摄像头驱动程序必需的11个ioctl及摄像头数据的获取过程 根据虚拟驱动vivi的使用过程彻底分析摄像头驱动// 1~2都是在v4l2_open里调用1. open2. ioctl(4, ...
- C++语言基础(11)-多态
一.产生背景 先看下面的例子: #include <iostream> using namespace std; //基类People class People{ public: Peop ...
- 12.extern(转)
本文转自:http://blog.csdn.net/xingjiarong/article/details/47656339 利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数 ...