为什么要使用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建库建表建约束的更多相关文章

  1. mysql语句1-创建库和表

    一.DDL数据定义语言 就是对书库内部的对象进行创建.删除.修改等操作的语言. 关键字:create  drop  alter 1.连接数据库 mysql -u用户名 -p -h指定主机(不指定默认是 ...

  2. 建库和表的脚本.sql

    1.一直都记不太清楚,需要新建一个数据库和表的脚本是怎样的,恰巧今天翻到了,特地记录下来,希望以后用的时候记住吧! create database testdb00; use testdb00; cr ...

  3. oracle建库及plsql建表空间的用法

    所有程序—>ORACLE-JHEMR----------->配置和移植工具----->DataBase Configuration Assistant-------中间就需要改一个数 ...

  4. SQL学习笔记:表的约束

    目录 NOT NULL约束 INDEX 索引 CHECK 约束 DEFAULT 约束 UNIQUE 约束 PRIMARY KEY 约束 FOREIGN KEY 约束:简单的说,就是创建表的时候,对表或 ...

  5. sql基础语法-创建表和约束

    创建数据库表 USE SQL2016 IF OBJECT_ID('dbo.Employees','U') IS NOT NULL DROP TABLE dbo.Employees; Create TA ...

  6. 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式

    导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...

  7. [ITOO]动态建库 标签: 库数据库mysql 2016-07-17 21:23 241人阅读 评论(2) 收

    最近一直在做权限系统的动态建库,动态建库,说白了就是在你点击"注册"按钮的时候,根据你输入的信息,来创建一个企业所需要的数据库的过程,因为现阶段并没有提供购买等功能,所以暂时咱们是 ...

  8. 基于ArcEngine的空间数据通用建库软件介绍

    最近花了点时间把之前的空间数据入库功能进行了完善,在这里做一个简单的介绍,也希望大家给提点意见和建议,我的目标是做一个好用.易用.通用.稳定的入库程序. 1.软件特点: 基于模板(方案)的数据更新   ...

  9. SQL Server— 存在检测、建库、 建表、约束、外键、级联删除

    /******************************************************************************** *主题: SQL Server- 存 ...

  10. SQL Server建库-建表-建约束

    ----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...

随机推荐

  1. BZOJ 1016 最小生成树计数 【模板】最小生成树计数

    [题解] 对于不同的最小生成树,每种权值的边使用的数量是一定的,每种权值的边的作用是确定的 我们可以先做一遍Kruskal,求出每种权值的边的使用数量num 再对于每种权值的边,2^num搜索出合法使 ...

  2. Codeforces 919C - Seat Arrangements

    传送门:http://codeforces.com/contest/919/problem/C 给出一张n×m的座位表(有已占座位和空座位),请选择同一行(或列)内连续的k个座位.求选择的方法数. H ...

  3. 3 numpy模块

    Numpy     什么是Numpy:Numeric Python         Numpy模块是Python的一种开源的数值计算扩展.             1 一个强大的N维数组对象Array ...

  4. 一个电商项目的Web服务化改造7:Dubbo服务的调用,4个项目

    使用dubbo服务的过程,很简单,和之前学习的WebService完全一样,和本地接口调用也基本一致. dubbo和WebService的区别:我认为dubbo就是封装了WebService,然后提供 ...

  5. 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论

    1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据 ...

  6. 树状数组&线段树

    先是树状数组. 令这棵树的结点编号为C1,C2...Cn.令每个结点的值为这棵树的值的总和,那么容易发现: C1 = A1 C2 = A1 + A2 C3 = A3 C4 = A1 + A2 + A3 ...

  7. qwb与整数对

    qwb与整数对 Time Limit: 1 Sec  Memory Limit: 128 MB Description qwb又遇到了一道数学难题,你能帮助他吗? 给出两个整数n和m,请统计满足0&l ...

  8. ClassCastException:ColorDrawable cannot be cast to RoundRectDrawableWithShadow

    错误信息 java.lang.ClassCastException: android.graphics.drawable.ColorDrawable cannot be cast to android ...

  9. ggplot画基本图形类型

    df<-data.frame( x=c(3,1,5), y=c(2,4,6), label=c("a","b","c"))p<- ...

  10. hdu_1056_HangOver_201311071354

    HangOver Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...