使用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数据库------------------------------ ...
随机推荐
- web前端学习总结--HTML
web三要素: 浏览器:向服务器发起请求,下载服务器中的网页(HTML),然后执行HTML显示出内容 服务器:接受浏览器的请求,发送相应的页面到浏览器 HTTP协议:浏览器与服务器的通讯协议. HTM ...
- Ubuntu网卡设置:配置/etc/netplan
对于Ubuntu1804版本,经过测试如下配置可以设置静态IP地址: Google@ubuntu:~$ cat /etc/netplan/01-netcfg.yaml network: etherne ...
- BZOJ 1614 USACO 07Jan. 洛谷1948 电话线
二分+特殊姿势的check:二分最小代价P,把边权小于等于P的边设为0,其他的设为1,跑一遍最短路,判断dis[n]是否大于K #include<cstdio> #include<a ...
- 【郑轻邀请赛 G】密室逃脱
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2133 [题意] [题解] 考虑每一个二进制数的最高位->第i位; 肯定是1(这 ...
- WPF的TextBox以及PasswordBox显示水印文字
1.TextBox <ControlTemplate x:Key="WaterMarkTextBox" TargetType="{x:Type TextBox}&q ...
- hdu 4550
c: #include<stdio.h> #include<string.h> #define N 300 int f[N]; char s[N]; int main() { ...
- [bzoj4385][POI2015]Wilcze doły_单调队列
Wilcze doły bzoj-4385 POI-2015 题目大意:给定一个n个数的序列,可以将连续的长度不超过d的区间内所有数变成0,求最长的一段区间,使得区间和不超过p. 注释:$1\le n ...
- Android游戏框架Libgdx使用入门
转载自:http://blog.csdn.net/cping1982/article/details/6176191 Libgdx作者博客:http://www.badlogicgames.com/ ...
- BNUOJ ->Borrow Classroom(LCA)
B. Borrow Classroom Time Limit: 5000ms Memory Limit: 262144KB 每年的BNU校赛都会有两次赛前培训,为此就需要去借教室,由于SK同学忙于出题 ...
- Java 8 实战 P4 Beyond Java 8
目录 Chapter 13. Thinking functionally Chapter 14. Functional programming techniques Chapter 15. compa ...