使用T-sql建库建表建约束
为什么要使用sql语句建库建表?
现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容怎么移植?
行之有效的办法就是编写比较通用的SQL语句,编写完毕后存入*.sql文件中,最后复制到客户的计算机中,并执行*.sql文件中的SQL语句,从而实现后台数据库的移植。所以我们很有必要掌握如何使用SQL语句,实现创建数据库、创建表、添加约束和创建登录账户等!
使用SQl语句创建和删除数据库
创建数据库
语法:
create database 数据库名
on 【primary】
(
<数据文件参数> 【,……..N】 【<文件组参数>】
)
【log on】
(
{<日志文件参数> 【,……..N】 }
)
数据文件的具体参数如下:
(【name=逻辑文件名,】
filename=物理文件名
【,size=大小】
【,maxsize={最大容量|unlimited}】
【,filegrowth=增长量】) 【,………N】
文件组的具体参数如下:
filegroup 文件组名 <文件参数> 【,………N】
其中,“【】”表示可选的部分,“{}”表示必需的部分。各参数的含义如下:
数据库名:数据库的名称,最长为128个字符。
primary:给选项是一个关键字,指定主文件组中的文件。
log on :指明事务日志文件的明确定义。
name:指定数据库的逻辑名称,这是在SQL Server中使用的名称,是数据库在SQL Server 中的标识符。
filename:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名和name的逻辑名称一一对应。
size:指定数据库的初始容量的大小。
maxsize:制定操作系统文件文件可以增长到的最大值。
filegrowth:指定文件每次增长的大小,当指定数据为0时,表示文件不增长。
提示:一个数据库可以有多个数据文件(一个为主数据文件其他的为次要数据文件)和多个日志文件组成,但不能没有数据文件和日志文件。
删除数据库
当我们创建数据库是如果该数据库已存在就需要先删除之后才能创建成功。
语法:
drop database 数据库名
那如何检测该数据库是否存在呢?
在SQL Server将数据库的清单存放在master系统数据库的sysdatabases表中,只需借助select语句查看sysdatabases表中是否存在该数据库的记录即可。
demo:
use master
go --批处理语句和下面的T-SQL语句分开
exec sp_configure 'show advanced options',1--设置“show advanced options”参数为一获取修改"sp_cmdshell"系统高级选项的权限
go
reconfigure --提交操作
go
exec sp_configure 'xp_cmdshell',1--允许sql server调用数据库之外的操作系统命令
go
reconfigure
go
exec xp_cmdshell 'mkdir E:\text'--在E盘创建文件夹“text”
go
--检测数据库中是否已存在数据库text_data
if exists(select * from sysdatabases where name='text_data')
drop database text_data --删除数据库text——data
--创建数据库text——data
create database text_data
on primary
(
name ='text_data1',
filename ='E:\text\text_data1.mdf',
size=10MB,
maxsize =50MB,
filegrowth=3MB
),
(
name='text_data2',
filename ='E:\text\text_data2.ndf'
)
log on
(
name ='text_log',
filename ='E:\text\text_log.ldf',
size =3MB,
maxsizes=10MB,
filegrowth=1MB
)
使用SQL语句创建和删除表
创建表
create tabe 表名
(
列1 数据类型 列的特征,
列2 数据类型 列的特征,
……
)
其中”列的特征“包括是否为空(NULL)、是否为标识列(自动编号(IDENTITY(1,1)))、是否有默认值(DEFAULT)及是否为主建(PRIMARY KEY )等
删除表
同创建数据库一样如果该表已经存在我们需要先删除表在创建
语法:
drop table 表名
表的清单存放在该库的系统表sysobjects中
demo:
use text_data
go
if exists(select * from sysobjects where name ='textinfo')--检测textinfo表是否存在
drop table textinfo--删除表textinfo
create table textinfo--创建表textinfo
(
Tid int identity(1,1) primary key not null,--主键、标识列订、不可为空
Tinfo nvarchar(200) not null--不可为空
)
添加约束
语法:
alter table 表名
add constraint 约束名 约束类型 具体的约束说明
demo:
alter table textinfo--添加约束的表
add constraint fK_typeid foreign key(typeid) references texttype(typeid)--添加外建约束
删除约束
语法:
alter table 表名
drop constraint 约束名
demo:
alter table textinfo--要删除约束的表
drop constraint fK_typeid --要删除的约束
使用T-sql建库建表建约束的更多相关文章
- mysql语句1-创建库和表
一.DDL数据定义语言 就是对书库内部的对象进行创建.删除.修改等操作的语言. 关键字:create drop alter 1.连接数据库 mysql -u用户名 -p -h指定主机(不指定默认是 ...
- 建库和表的脚本.sql
1.一直都记不太清楚,需要新建一个数据库和表的脚本是怎样的,恰巧今天翻到了,特地记录下来,希望以后用的时候记住吧! create database testdb00; use testdb00; cr ...
- oracle建库及plsql建表空间的用法
所有程序—>ORACLE-JHEMR----------->配置和移植工具----->DataBase Configuration Assistant-------中间就需要改一个数 ...
- SQL学习笔记:表的约束
目录 NOT NULL约束 INDEX 索引 CHECK 约束 DEFAULT 约束 UNIQUE 约束 PRIMARY KEY 约束 FOREIGN KEY 约束:简单的说,就是创建表的时候,对表或 ...
- sql基础语法-创建表和约束
创建数据库表 USE SQL2016 IF OBJECT_ID('dbo.Employees','U') IS NOT NULL DROP TABLE dbo.Employees; Create TA ...
- 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式
导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...
- [ITOO]动态建库 标签: 库数据库mysql 2016-07-17 21:23 241人阅读 评论(2) 收
最近一直在做权限系统的动态建库,动态建库,说白了就是在你点击"注册"按钮的时候,根据你输入的信息,来创建一个企业所需要的数据库的过程,因为现阶段并没有提供购买等功能,所以暂时咱们是 ...
- 基于ArcEngine的空间数据通用建库软件介绍
最近花了点时间把之前的空间数据入库功能进行了完善,在这里做一个简单的介绍,也希望大家给提点意见和建议,我的目标是做一个好用.易用.通用.稳定的入库程序. 1.软件特点: 基于模板(方案)的数据更新 ...
- SQL Server— 存在检测、建库、 建表、约束、外键、级联删除
/******************************************************************************** *主题: SQL Server- 存 ...
- SQL Server建库-建表-建约束
----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...
随机推荐
- Huawei-R&S-网络工程师实验笔记20190608-VLAN划分基础(基于端口、MAC地址、子网地址、协议)
>Huawei-R&S-网络工程师实验笔记20190608-VLAN划分基础(基于端口.MAC地址.子网地址.协议) >>实验开始,先上拓扑图参考: 一.基于端口划分VLAN ...
- noip模拟赛 gcd
题目更正:输出的a<b. 分析:这是一道数学题,范围这么大肯定是有规律的,打个表可以发现f(a,b)=k,a+b最小的a,b是斐波那契数列的第k+1项和k+2项.矩阵快速幂搞一搞就好了. #in ...
- 1066N !最右边非零数
http://hi.baidu.com/nicker2010/item/4fa83c4c5050b3e5a4c066ec 另一个 Last non-zero Digit in N! Time Limi ...
- Sencha Touch 2中如何动态添加button
原理很简单无非就是在一个容器上面选中id,用容器的add方法将button循环加入. 现在我们来试一下 1.先定义一个Container组件用,以后在里面添加button ? 1 2 xtype:'c ...
- [APIO2014] [Uoj103] [Bzoj3676] Palindromes回文串 [Manacher,后缀数组]
用Manacher算法枚举回文子串,每次在后缀数组排序后的后缀数组中二分,因为用某一后缀和其他子串分别求匹配的长度,匹配长度在排序后该后缀的两侧具有单调性(匹配长度为min{H[x]|i<=x& ...
- 巧克力棒&&新年的巧克力棒
巧克力棒 题目描述 LYK 找到了一根巧克力棒,但是这根巧克力棒太长了,LYK 无法一口吞进去.具体地,这根巧克力棒长为 n,它想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后慢慢享用.它打算每 ...
- Surround the Trees HDU 1392 凸包
Problem Description There are a lot of trees in an area. A peasant wants to buy a rope to surround a ...
- SSM(spring mvc+spring+mybatis)学习路径——2-1、spring MVC入门
目录 2-1 Spring MVC起步 一.回顾Servlet 二.SpringMVC简介 三.搭建SpringMVC第一个案例 四.简单流程及配置 五.使用注解开发Controller 六.参数绑定 ...
- Spring MVC-视图解析器(View Resolverr)-内部资源视图解析器(Internal Resource View Resolver)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_internalresourceviewresolver.htm 说明:示例基于S ...
- x$bh视图
首先,这篇文章是基于如下ORACLE版本. BANNER ------------------------------------------------ Oracle Database 10g En ...