• 使用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:	ext'--在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:	ext	ext_data1.mdf', 
    size=10MB, 
    maxsize =50MB, 
    filegrowth=3MB 
    ),
     (
     name='text_data2',
     filename ='E:	ext	ext_data2.ndf'
     )
     log on 
    ( 
    name ='text_log', 
    filename ='E:	ext	ext_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 --要删除的约束
  • 相关阅读:
    Python Web框架Django (三)
    谷歌把域名标记为不安全的解决办法
    tkmybatis VS mybatisplus
    jdbc预编译实现方式
    分析mybatis中 #{} 和${}的区别
    实体类id的几种生成方式
    java 获取mac地址
    javafx 表格某一列设置未复选框
    关闭在chrome里使用双指前进后退页面的功能
    调试maven源代码
  • 原文地址:https://www.cnblogs.com/wangzheand/p/5112798.html
Copyright © 2020-2023  润新知