SQL Server语句创建数据库和表

软件设计 2017-03-31

简单的创建数据库的 SQL 语句:

1 use master
 2 go
 3 
 4 if exists(select * from sysdatabases where name='Test')
 5 begin
 6     select '该数据库已存在'
 7     drop database Test        --如果该数据库已经存在,那么就删除它
 8 end
 9 else
10 begin
11     create database Test
12     on  primary        --表示属于 primary 文件组
13     (
14         name='stuDB_data',        -- 主数据文件的逻辑名称
15         filename='D:\stuDB_data.mdf',    -- 主数据文件的物理名称
16         size=5mb,    --主数据文件的初始大小
17         maxsize=100mb,     -- 主数据文件增长的最大值
18         filegrowth=15%        --主数据文件的增长率
19     )
20     log on
21     (
22         name='stuDB_log',        -- 日志文件的逻辑名称
23         filename='D:\stuDB_log.ldf',    -- 日志文件的物理名称
24         size=2mb,            --日志文件的初始大小
25         maxsize=20mb,        --日志文件增长的最大值
26         filegrowth=1mb        --日志文件的增长率
27     )
28 end

接下来是创建数据表的 SQL 语句:

use Test    --表示设置为在该数据库(Test)执行下面的SQL语句
 go

可以先执行一下以上语句。

或者在这里选择数据库。

1 use Test    --表示设置为在该数据库(Test)执行下面的SQL语句
 2 go
 3 
 4 if exists(select * from sysobjects where name='Student')
 5 begin
 6     select '该表已经存在'
 7     drop table Student        --删除表
 8 end
 9 else
10 begin
11     create table Student
12     (
13         S_Id        int        not null    identity(1,1)    primary key,    --设置为主键和自增长列,起始值为1,每次自增1
14         S_StuNo        varchar(50)        not null,
15         S_Name        varchar(20)        not null,
16         S_Sex        varchar(10)        not null,
17         S_Height    varchar(10)        null,
18         S_BirthDate        varchar(30)        null
19     )
20 end
21 
22 --添加约束                        
23 alter table Student add constraint 
24 UQ_S_StuNo    --约束名
25 unique        --约束类型(唯一约束)
26 (S_StuNo)    --列名
27 
28 --删除约束
29 alter table Student drop constraint
30 UQ_S_StuNo    --约束名

SQL语句创建表变量:

1 declare @Score table
 2 (
 3     Id        int        not null,
 4     Name    varchar(50)  null
 5 ) 
 6 
 7 insert into @Score
 8 select '1','刘邦' union
 9 select '2','项羽'
10 
11 select * from @Score

SQL语句创建临时表:

1 -- ## 表示全局临时表
 2 create table ##temp
 3 (
 4     Id        int        not null,
 5     Name    varchar(10)        null
 6 )
 7 
 8 -- # 表示局部临时表
 9 create table #temp
10 (
11     Id        int        not null,
12     Name    varchar(10)        null
13 )

SQL 语句创建表并设置主外键关系:

1 if exists(select * from sysObjects where name='Course')
 2 begin
 3     select '该表已经存在'
 4     drop table Course
 5 end
 6 else
 7 begin
 8     create table Course
 9     (
10       --列名    字段类型  是否为空   标识外键列(外键列名)         关联表的表名(关联的字段名)
11          Stu_Id        int        null    foreign key(Stu_Id) references Student(S_Id),
12          C_Id        int        not null    identity(1,1)    Primary key,
13          C_Name        varchar(100)    not null
14      )
15 end

注意:表变量和临时表都不能添加约束,具体的特征和适用场景请参见:

http://www.cnblogs.com/kissdodog/archive/2013/07/03/3169470.html

以下是平时总结的一些SQL语句的使用:

1 --SQL 语句为表添加字段并设置默认值
 2 alter table Student        --表名
 3 add fee        --添加的字段名
 4 int        --字段类型
 5 not null    --是否为空
 6 default 15        --默认值
 7 
 8 
 9 --修改字段的数据类型和是否为空
10 alter table Student        
11 alter column S_Sex
12 varchar(10) null 
13 
14 
15 -- with 把查询出来的表当做源表,但是必须把数据库的兼容性设置为:90+
16 with t as (select * from Student)
17 
18 select * from t
19 
20 
21 --设置数据库兼容性
22 ALTER DATABASE Test        --数据库名
23 SET COMPATIBILITY_LEVEL = 80||90||100    --可以设置为80、90或100
24 GO
25 
26 -- 为表Student添加一个列
27 alter table Student
28 add C_S_Id int null
29 
30 -- 为表Student新增列添加外键约束
31  alter table Student        -- 需要建立外键的表名
32  add constraint C_S_Id        -- 外键列名(外键表的列名)
33  foreign key (C_S_Id)        -- 指定外键表的外键列的列名
34  references Course(C_Id)    -- 关联表的关联列的列名
35  go
36 
37 
38  -- 设置允许将显式值插入表的标识列中
39  SET IDENTITY_INSERT Student on
40  go
41  -- 设置不允许将显式值插入表的标识列中
42  SET IDENTITY_INSERT Student off
43  go
44 
45 --on:表示设置为可以手动输入标识列的值
46 --off:表示设置为不可以手动输入标识列的值
47 
48 
49 
50 SET NOCOUNT ON
51 --当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。
52 --当 SET NOCOUNT 为 OFF 时,返回计数。
53 
54 SET QUOTED_IDENTIFIER ON
55 --当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。
56 --当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。
57 
58 SET ANSI_NULLS ON
59 --当SET ANSI_NULLS为ON时,那么SQL语句中,判断为空的写法就要修改为WHERE 字段 IS NULL。
60 --当SET ANSI_NULLS为OFF时,判断为空的写法就要修改为WHERE 字段=NULL。

相关推荐