php创建数据库表格添加约束,Sql语句在SqlServer中创建数据库、表格并添加约束

本文详细介绍了如何使用SQL语句创建数据库和架构,包括数据库的主文件和日志文件配置,以及创建架构的基本语法。同时,文章还探讨了表的创建、约束的添加与删除,以及修改表格结构的方法,强调了约束在保证数据完整性中的作用。内容涵盖了从基本的数据库创建到复杂的表结构管理,是理解SQL数据库管理的重要参考资料。
摘要由CSDN通过智能技术生成

通过Sql语句来创建数据库与架构

创建数据库

数据库的创建首先是要引用主数据库的,需要在master数据库的环境下进行创建。大致的语法如下:

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.png

1 --使用master数据库

2 usemaster3 --创建数据库

4 create datebase [架构名.]数据库名5 on [primary]--主文件数据描述

6 (7 name = ‘数据库逻辑名‘, --一般是数据库的名称

8 filename = ‘数据文件的名字‘,--全路径

9 size = 12mb, --数据文件初始大小

10 maxsize = 1gb, --文件最大值

11 filegrowth =1mb --文件增长率

12 ),(....ndf)13 log on --日志文件

14 (15 name = ‘日志逻辑文件名‘,16 filename = ‘日志文件的名字‘,17 size = 12mb, --日志文件初始大小

18 maxsize=1gb, --日志文件最大值

19 filegrowth=1mb --增长率

20 ); --不能够少了这个分号

21 go --代表上面一条语句结束,在SqlCmd中用go来执行一条Sql语句

创建数据库大致语法

按照上面语法,创建一个数据库对象

1 usemaster2 create database TwoDataBase --创建的数据库名称

3 on primary --主文件组, primary 可以省略

4 (5 name = N‘TwoDataBase‘, --数据库文件的逻辑名

6 filename=N‘f:\TwoDataBase.mdf‘, --全路径加上后缀

7 size=10mb,8 maxsize=100mb,9 filegrowth=1mb10 ),11 (12 name=N‘TwoDataBase2‘, --次要文件名,不能够和主文件同名

13 filename=N‘f:\TwoDataBase.ndf‘,14 size=10mb,15 maxsize=100mb,16 filegrowth=10%

17 )18 log on --逻辑文件

19 (20 name=N‘TwoDataBase_log‘, --逻辑文件名,不能和前面的文件同名,一般都是下划线后加一个 log

21 filename=N‘f:\TwoDataBase.ldf‘,22 size=100mb,23 maxsize=1gb,24 filegrowth=10mb25 );26 go

27 useTwoDataBase; --将数据库上下文切换到我们当前创建的数据库上面来

上面代码中 在文件名前添加一个大写的字符 N 代表的是什么符合国际写法什么的。在数据文件中,如果只有一个主文件就不需要写后面的次要文件,如果有次要文件,那么两个括号之间的逗号不能够少。

文件的初始大小不能够小于3M,因为主文件必须至少是 3 MB 才能容纳 model 数据库的副本。如果没有指定文件的大小以及增长方式,默认的大小和model数据库是一样的。增长方式可以写增长的单位也可以写上百分数

创建架构

架构是属于数据库的,而表是属于架构的。表是放在架构下面的。它就是表的命名空间,主要的目的还是为了安全。用户的权限是由架构和角色来指定的,角色是用来限制用户具有什么样的权限,比如一般的账户和sa账户登录数据库得到的权限是不一样的。架构就指定了你能够访问什么样的东西,有时可以通过写全名来访问非当前数据库中的表格。

语法

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.png

1 create schema 架构名 authorization 用户名;

创建架构语法

创建一个架构

create schema MyDbo authorization dbo;

很多时候是不需要创建架构的,使用默认的dbo就行。

删除数据库与架构

通过drop关键字来删除表格、架构、数据库以及约束等

删除数据库和架构语句如下

1 drop database TwoDataBase; ---删除数据库

2 drop schema MyDbo; --删除架构

创建简单表格

表示存储数据的,数据时由一定的意义的,那么这个表就要反应这个意义,创建表就是在设计表的列数据类型与约束类型。简单语法如下

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.png

1 use 数据库; --表示这张表格存储在哪一个数据库下面

2 create table 架构名.表名 --架构名可以省略

3 (4 字段名 类型名 null | not null, --当前的列能不能够为空

5 字段名 类型名 null | not null,6 字段名 类型名 null | not null,7 字段名 类型名 null | not null

8 )

创建简单表格语法

利用上面的语法,创建一个简单的表格

1 use TwoDataBase; --如果当前环境是在这个数据库下,也可以省略这句

2 create table TwoTable --省略了架构名

3 (4 id int not null,5 name nvarchar(10), --6 age int,7 gender varchar(1),8 phone char(11),9 fid int not null

10 )

上面的代码中创建了一个具有六个字段的简单表格,如果数据允许为空可以不写null,默认的就是null。

添加与删除约束

约束说直白了就是限定一个表格能够取什么样的值。它是保证数据的完整性的一种机制。主要约束分为下面几种

主键约束(primary key):默认创建聚集索引【比如拼音检索】。一张表只能够有一个主键

唯一约束(unique):默认创建非聚集索引 【比如部首检索,可以通过→右键→索引/键→添加→设置右面框框里面的东西】

非空约束:设计表的时候,字段后面写的null与not null

检测约束(check):限定某个字段的表达式    age > 0 and age <100

默认约束(default):如果不给取值就使用默认值否则使用提供的值

外键约束(foreign key):限定表格中某一列的取值必须是另外一种表中某一不重复列的数据,一般是另一张表的主键

添加约束

给一个表格添加约束的语法

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.png

1 alter tableTableName2 add

3 constraint约束名 约束类型与条件,4 constraint约束名 约束类型与条件5 。。。

添加约束语法

一般在添加约束的时候,约束名的取法是:约束简称_表格名_字段名。通过这种方式能够轻松的知道当前的约束是添加给谁的。约束简称大概为一下[本人常用的]:PK、UQ、CK、DF、FK。给上面的表格添加一些约束。比如主键、性别只是能够取m/f,年龄范围以及外键等。

1 alter table TwoTable --修改某一张表

2 add

3 constraint PK_TwoTable_id primary key(id) ,4 constraint UQ_TwoTable_name unique(name),5 constraint CK_TwoTable_age check(age>=0 and age<=150),6 constraint CK_TwoTable_gender check(gender=‘m‘ or gender=‘f‘),7 constraint DF_TwoTable_gender default(‘m‘) forgender,8 constraint FK_TwoTable_OneTable_fid foreign key(fid) references [dbo].[OneTable](id);

外键约束中,要写上表名然后用括号将关联的列括起来,这个例子中用到了 [架构名].[表名](列名) 的格式,当然可以不用架构名,直接使用 表名(列名) 的形式,表名可以加中括号。这里设置的外键是另外一张表的id列

constraint 关键字,表示当前操作的是约束。

删除约束

语法: alter table drop constraint 约束名;

比如删除上面的外键约束

1 alter tableTwoTable2 drop constraint FK_TwoTable_OneTable_fid;

约束的删除可以一次删除多个,相互之间用逗号隔开

1 alter tableTwoTable2 drop

3 constraintFK_TwoTable_OneTable_fid,4 constraint CF_TwoTable_gender;

修改表格结构

增加一列

语法:

alter table 表名 add 列名 类型 [约束条件]

1 alter table TableName add 列名 类型2 --增加多列的时候,用逗号隔开,不要要多余的add3 alter table TwoTable4 add stuOne int not null default(0)5 ,stuTwo int

6 , stuThree int;

删除列

1 语法:alter table TableName drop column列名2 --删除多列数据的时候,列之间用逗号隔开

3 alter tableTwoTable4 drop columnstuOne5 ,columnstrTwo6 ,column stuThree

在删除列的时候,如果此列上建有约束,需要先删除此约束,然后才能够删除此列数据,因为约束是依赖于数据列的

修改列

1 alter tableTableName2 alter column列名 类型3 --例子

4 alter tableTwoTable5 alter columnstuTwo nvarchar(10) not null

在修改列信息的时候,一次只是能够修改一列数据,不能够修改多列

创建表格时添加约束

有时可以再创建表格时就给列添加一个约束条件,这样就能够省去后面添加约束的麻烦,但是这种方式也有一个弊端。例子如下

1 use TwoDataBase; --如果当前环境是在这个数据库下,也可以省略这句

2 create tableTwoTable3 (4 id int not null primary key identity(1,1) --设置为主键,并且是自动增长

5 , name nvarchar(10) not null unique --6 , age int not null check(age >= 0 and age <= 150)7 , gender char(1) not null default ‘m‘ check(gender = ‘m‘ or gender = ‘f‘)8 , phone char(11) null

9 , fid int not null foreign key referencesOneTable(id)10 )

这种方式创建的时候,系统会给我们的约束自动添加一个名字,以约束类型简写形式开始下划线加上表名,但是后面不是添加的列名,而是一串十六进制表示的数字。如下面形式:PK_TwoTable_85FE435A39 如果是这样在删除约束的时候就只是能够通过管理工具来实现了。下面这种方式就不会有这个问题

1 create tableT_Emp2 (3 id int constraint pk_emp_rd primary key identity(1,1)

5 , name nvarchar(10) not null6 , sex char(1)not null constraint CK_emp_sex(sex=‘m‘ or sex=‘f‘)7 , dept_id int constraint fk_dept_heihei foreign key referencesdept(dept_id)8 )

这种方式创建表格的时候,同时添加了约束名,相比上一中方式在以后的管理上就更加的方便了

原文:http://www.cnblogs.com/qigang/p/3836854.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值