T-SQL 创建、修改、删除数据库,表语法

CREATE 语句

  CREATE语句的开头都是一样的,然后是特定的细节。

  CREATE <object type> <object name>  

一、CREATE DATABASE

  CREATE DATABASE命令用于创建一个数据库,创建一个数据库的最基本语法如下所示:

  CREATE DATABASE <database name>

  CREATE DATABASE的完整语法

CREATE DATABASE <NewDataBase>
[ON [PRIMARY]
    ([NAME = <‘logical file name‘>,]
    FILENAME = <‘file name‘>
    [, SIZE = <size in kilobytes,megabytes,gigabytes,or terabytes>]
    [, MAXSIZE = <size in kilobytes,megabytes,gigabytes,or terabytes>]
    [, FILEGROWTH = <kilobytes,megabytes,gigabytes,or terabytes|percentage>])]
    [LOG ON
    ([NAME = <‘logical file name‘>,]
    FILENAME = <‘file name‘>
    [, SIZE = <size in kilobytes,megabytes,gigabytes,or terabytes>]
    [, MAXSIZE = <size in kilobytes,megabytes,gigabytes,or terabytes>]
    [, FILEGROWTH = <kilobytes,megabytes,gigabytes,or terabytes|percentage>])]
    [COLLATE <collation name>]
    [FOR ATTAH [WITH <service broker>]| FOR ATTACH_REBUILD_LOG| WITH DB_CHAINING
    ON| OFF | TRUSTWORTHY ON|OFF]
    [AS SNAPSHOT OF <source database name>]
    [;]

  下面来说明一下:

  1、ON

    ON用于两个地方:一是定义存储数据的文件位置,二是定义存储日志的文件位置。PRIMARY意味着随后是无上上存储数据的主文件组。也可以将数据存储在所谓的附属文件组里。

    SQL Server允许将数据库存储在多个文件中,而且允许将这些文件放在一个逻辑组里面,称为文件组

  2、NAME

    这个选项用于指定定义的文件的名称,但只是一个逻辑名称-SQL Server在内部使用该名称引用该文件。当需要修改(扩充或缩小)数据库和/或文件的大小事,需要使用这个名称。

  3、FILENAME

    这个选项,顾名思义-实际操作系统文件在磁盘上的物理名称,在该文件中将存储数据或日志(取决于定义哪个部分)。默认情况下,文件位于

    \Program Files\Microsoft SQLServer10.MSSQLSERVER\MSSQL(或者SQL Server安装主目录)的\Data子目录下。如果是处理物理数据库文件,那么名称将和数据库名称一样,但是带有.mdf扩展名。如果处理日志文件,那么名称和数据库文件的名称一样,但是有后缀_Log以及扩展名.ldf。建议使用默认扩展名.mdf(数据库)和.ldf(日志文件)。附属文件的扩展名是.ndf。

  4、SIZE

    数据库的大小。默认情况下大小的单位是M(兆字节),但是可以通过在数字后面使用KB而不是MB来指定kilobyte(千字节),或者更大的单位GB或者甚至TB。这个值至少与模型数据库一样大,而且必须是整数(不能带小数),否则出错。如果没有为SIZE提供一个值,那么数据库的初始大小值与模型数据库一样。

  5、MAXSIZE

    SQL Server有一个机制允许数据库在必要的时候自动分配附加的磁盘空间(增加大小)。MAXSIZE是数据库可以增加的最大大小。默认情况下,单位是M,但是同SIZE一样,可以使用KB、GB、TB来指定不同的单位。稍微不同的是,这个选项没有固定的默认值。如果没有提供这个值,那么认为没有最大值-实际的大小可以达到磁盘空间用完为止。

    如果数据库的大小达到了MAXSIZE参数指定的值,那么将开始出错,插入数据将不能执行。如果日志达到最大值,那么在数据库中将无法执行任何日志活动。

  6、FILEGROWTH

    FILEGROWTH主要用于确定数据库达到这个最大值的速度。提供一个值来说明文件每次增加多少字节(以KB、MB、GB、TB为单位)。或者,也可以按照指定数据库文件的每次增长百分比。如果选择百分比,那么数据库大小将按照当前数据文件的大小以指定的百分比增长。因此,如果指定一个初始大小为1GB的数据库文件以20%的速度增长,那么第一次扩展后为1.2GB,第二次扩展后为1.44GB。

  7、LOG ON

    LOG ON选项允许指定哪些文件需要日志,以及这些文件位于什么位置。如果没有指定该选项,那么SQL Server将在一个单独文件中创建日志,日志文件默认的大小是数据库文件的25%。在大多数其他方面,日志文件与主数据库文件具有同样的文件规范参数。

    提示:

    日志文件最好存储在与主数据文件不同的磁盘分区上。这样除了提供针对某个磁盘驱动器失效的额外安全措施外,还可以避免主数据文件与日志文件竞争磁盘文件的输入输出口。

  8、COLLATE

    该选项处理排序、字母大小写以及是否重音敏感问题。在安装SQL Server时,提供了默认的排序规则,但是可以在数据库层重写该默认值。

  9、FOR ATTACH

    可以使用该选项将已存在的一些数据库文件附加到当前的服务器上。这里的文件必须是数据库的一部分,并且在某个时候已经使用sp_detach_db恰当地与数据库分离了。这样贬低了sp_detach_db的功能,但是带有FOR ATTACH的CREATE DATABASE命令具有可以访问32000多个文件的优点,而sp_attach_db只限于16个文件。

    如果使用FOR ATTACH,那么必须完成文件位置信息中的ON PRIMARY部分的设置。CREATE DATABASE参数列表的其他部分可以省略,只要把数据库的文件路径附加到与原来数据库分离时相同的文件路径中。

  10、WITH DB CHAINING ON|OFF

    如果打开该选项,那么跨数据库的所有权链有效,而关闭该选项,则所有权链无效。

  11、TRUSTWORTHY

    这个选项是新添加的选项,为访问在SQL Server环境以外的系统资源和文件添加额外的安全层。例如,可能运行.NET程序集访问网络上的文件,如果这样的话,那么必须检查数据库确保程序集是可以信赖的。由于安全原因,这个选项在默认情况下是关闭的-在确实明白您将要做的事情和原因之后,再打开这个选项。

  示例:

CREATE DATABASE Accounting
ON
(
    NAME = ‘Accounting‘,  --数据库名称
    FILENAME = ‘C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AccountingData.mdf‘,  --数据库文件位置
    SIZE = 10,  --大小 10M
    MAXSIZE = 50,  --最大大小 50M
    FILEGROWTH = 5  --每次增加 5M
)
LOG ON
(
    NAME = ‘AccountingLog‘,
    FILENAME = ‘C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AccountingLog.ldf‘,
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB
)

二、CREATE TABLE

  创建表的具体语法:

  CREATE TABLE Customers

  详细语法:

  CREATE TABLE [database_name.[owner].]table_name
  (
    <column name> <data type>
    [[DEFAULT <constant expression>] | [IDENTITY [(seed,increment) [NOT FOR REPLICATION]]]]
    [ROWGUIDCOL]
    [COLLATE <collation name>]
    [NULL|NOT NULL]      --是否允许为空
    [<column constraints>]  --列约束
    | [column_name AS compute_column_expression]
    | [<table_constraint>]  --表约束
    [,...n]
  )
  [ON{<filegroup>|DEFAULT}]
  [TEXTIMAGE_ON{<filegroup>|DEFAULT}]

  1、表名和列名

  表名和列名的意思都懂,下面主要说命名标准。

  1、对于名称的每个单词,要求首字母大写,而其他字母小写。

  2、当名称中有两个单词时,不要使用任何分隔符,通过将每个单词首字母大写来区分单词。其实关于下划线,差别不大。顺自己意愿。

  3、名称尽量短,但是要限制缩写,只有大家一看就看的明白的情况下才缩写。当缩写之后不容易看懂,不要缩写。

  4、当基于其他表来构建表时,需要在新的表名中包含所有父表的名称。如电影表Movies与演员表Stars的关系表:MovieStars。

  2、IDENTITY

  在数据库设计中,标识符就是SQL Server自动分配一个序号给插入的每个行。SQL Server开始计数的数字称为种子值,而这个值随着每行增加或减少的数量值称为增量。默认情况下种子值为1,增量为1,很多设计要求不要改动设个默认设置,不过,也可以设定种子为3,增量为5等,这种情况下,将从3开始计数,然后每次加5。得到8、13、18、23等。

  标识列必须是数值类型,在实际中,通常使用整型或大整型实现。

  标识符最常见的用法是生成一个新值作为每行的标识符,即标识列通常用于创建表的主键,但是IDENTITY与PRIMARY KEY是不同的概念,即不会因为有一个IDENTITY列就说明这个值是唯一的(例如可以重复设置种子值,使用前面用过的值)。IDENTITY值通常用于PRIMARY KEY列,但并不是必须这样使用。

  3、NOT FOR REPLICATION

  NOT FOR REPLICATION参数决定了当列发布到另一个数据库时,是为新的数据库分配一个新的标识列,还是保留已有的值。

  4、ROWGUIDCOL

  这个很像标识列,即用于唯一标识表的每行。当启用ROWGUIDCOL后,SQL Server没有采用数字技术,而是采用全局唯一标识符(Globally Unique Identifier)。这样即使将两张表的数据复制到一个表也没有问题,因此GUID在空间和时间上都是唯一的。

  5、COLLATE

  这个选项与在CREATE DATABASE命令中的作用基本一样,主要区别是作用范围,这里是在列的层次而不是数据库的层次定义的。

  6、NULL/NOT NULL

  这个选项说明指定列是否接受NULL值,在第一次安装SQL Server时,默认的列值是NOT NULL,除非指定允许为空。

  7、计算列

  可以创建一个本身没有任何数据的列,但列值是由表中其他列动态生成的。因为如果查询时指定列值,能给应该带来方便。

  具体语法如下:

  <column name> AS <computed column expression>

  示例:

  ExtendPrice AS Price * Quantity

  在上面的例子中,ExtendPrice的值是根据Price和Quantity计算得来。

  注意事项:

  1、不能使用子查询,而且值不能来自其他不同的表。

  2、可以在计算列上创建索引,但是必须采用特定的步骤。

  8、表约束

  表约束和列约束很相似,都是对可以插入表中的数据进行限制。它们之间有一点不同的是:表约束可以基于多个列。

  9、ON

  在处理数据库创建时,提到过可以创建不同的文件组,表定义中的ON子句就是用于指定希望表位于哪个文件组的一种方法。可以将给定的表放在一个特定的物理设备上,或者就按照大多数时候做的那样,省略ON子句。

  10、TEXTIMAGE_ON

  这个选项和前面讲到过的ON子句基本上相同,不同的是将该选择将表的特定部分移动到不同的文件组中。这个子句只有在表的定义中有text、ntext或image时才有效。当使用TEXTIMAGE_ON子句时,只是将BLOB信息移动到分离的文件组中--表的其他部分还在默认文件组或者ON子句选择的文件组中。

  示例:

  USE Accounting
  CREATE TABLE Customers
  {

    CustomerNo    int       IDENTITY NOT NULL,
    CostomerName   varchar(30)  NOT NULL,
    Address1     varchar(30)  NOT NULL,
    Address2     varchar(30)  NOT NULL,
    City        varchar(20)  NOT NULL
    State        char(2)    NOT NULL,
    Zip        varchar(10)  NOT NULL,
    Contact      varchar(25)  NOT NULL,
    Phone       char(15)     NOT NULL,
    FedIDNo      varchar(9)   NOT NULL,
    DateInSystem   smalldatetime NOT NULL
  }

  在CREATE代码前面添加USE<database name>行,这样能够确保当运行脚本时,是在所指定的数据库中创建表。

三、ALTER语句

  与CREATE语句很相似,ALTER语句的开头总有一样的:

  ALTER <object type> <object name>

  1、ALTER DATABASE

  具体语法如下:

ALTER DATABASE <database name>
    ADD FILE
    ([ NAME = <‘logical file name‘>,]
        FILENAME = <‘file name‘>
        [, SIZE = <size in KB,MB,GB or TB>]
        [, MAXSIZE = < size in KB,MB,GB or TB>]
        [, FILEGROWTH = <No of KB,MB,GB or TB | percentage>])     [,...n][ TO FILEGROUP filegroup_name]
     [, OFFLINE]
|ADD LOG FILE
        ([ NAME = <‘logical file name‘>, ]
           FILENAME = <‘file name‘>
         [, SIZE = <size in KB,MB,GB or TB>]
         [, MAXSIZE = < size in KB,MB,GB or TB>]
         [, FILEGROWTH = <No of KB,MB,GB or TB | percentage>])
         | REMOVE FILE <logical file name> [WITH DELETE]
         | ADD FILEGROUP <filegroup name>
         | REMOVE FILEGROUP <filegroup name>
         | MODIFY FILE <filespec>
         | MODIFY NAME = <new dbname>
         | MODIFY FILEGROUP <filegroup name> {<filegroup property> | NAME = <new filegroup name>}
         | SET <optionspec> [,...n][WITH <termination>]
         | COLLATE <collation name>

  示例:将数据库扩充至100MB:

ALTER DATABASE Accounting
    MODIFY FILE
        (
            NAME = Accounting,
            SIZE = 100MB
        )

  2、ALTER TABLE

  具体语法:

ALTER TABLE table_name
    {[ALTER COLUMN <column_name>
        {[<schema of new data type>].<new_data_type>[(precision [,scale])] max |
        <xml schema collection> [COLLATE <collation_name>][NULL | NOT NULL] | [{ADD | DROP} ROWGUIDCOL] | PERSISTED}]
        |ADD
            <column name> <data_type>
            [[DEFAULT <constant_expression>] | [IDENTITY [(<seed>,<increment>)[NOT FOR REPLICATION]]]]
            [ROWGUIDCOL]
            [COLLATE <collation_name>]
                [NULL | NOT NULL]
            [<column_constraints>]
            |[<column_name> AS <computed_column_expression>]
        |ADD
            [CONSTRAINT <constraint_name>]
            {[{PRIMARY KEY | UNIQUE}
                [CLUSTERED | NONCLUSTERED]
                {(<column_name>[,...n])}
                [WITH FILLFACTOR = <fillfactor>]
                [ON {<filegroup> | DEFAULT}]
                ]
                |FOREIGN KEY
                    [(<column_name>[,...n])]
                    REFERENCES <referenced_table> [(<referenced_column>[,,,n])]
                    [ON DELETE {CASCADE | NO ACTION}]
                    [ON UPDATE {CASCADE | NO ACTION}]
                    [NOT FOR REPLICATION]
                    | DEFAULT <constant_expression>
                        [FOR <column_name>]
                    | CHECK [NOT FOR REPLICATOPM]
                        (<search_conditions>)
                    [,...n][,...n]
                    |[WITH CHECK|WHTH NOCHECK]
                    |{ENABLE | DISABLE } TRIGGER
                    {ALL | <trigger name> [,...n]}
                    |DROP
                    {[CONSTRAINT] <constraint_name>
                    |COLUMN <column_name>}[,...n]
                    |{CHECK|NOCHECK} CONSTRAING
                    {ALL|<constraint_name>[,...n]}
                |{ENABLE|DISABLE} TRIGGER
                    {ALL|<trigger_name>[,...n]}
                | SWITCH [PARTITION <source partition number expression>]
                    TO [ schema_name. ] target_table
                    [PARTITION<target partition number expression>]
            }

  太多了,实际上用不了这么多。下面给一些示例。

  添加一个列:

ALTER TABLE Employees
    ADD
    PreviousEmployer varchar(30) NULL

  执行以上语句后,语句是添加了,但是这些列是添加在列表的末尾,在SQL Server中没办法将列添加到特定位置。如果想将一个列移动到中间,那么需要创建一个全新的表,将数据复制到新表中,删除已有的表,然后将表重新命名。

四、DROP语句

  执行DROP语句与删除在DROP语句中引用的任何对象一样。这一操作快而简单,其语法对于所有主要的SQL Server对象(表、视图、存储过程及触发器)来说是相同的。语法如下所示:

  DROP <object type> <object name> [,...n]

  以下给出一个同时删除两个表的例子:

  USE Accounting
  DROP TABLE Customer,Employess

  删除数据库的例子:

  USE master
  DROP DATABASE Accounting

  如果返回错误,数据库正在使用,不能删除的话,要检查一下两个问题。

  1、确保在Managerment Studio中的当前数据库不是要删除的数据库。

  2、确保没有打开其他显示要删除的数据库为当前数据库的连接。

时间: 2024-10-30 21:39:28

T-SQL 创建、修改、删除数据库,表语法的相关文章

SQL Server 创建 修改 删除数据表

1. 图形界面方式操作数据表 (1)创建和修改数据表 列名中如果有两个以上单词时,最好用下划线连接,否则可能会给将来的查询维护带来不便.我们公司美国佬做的数据库就很烦,所有列名都有空格,一旦忘记用方括号就GG了. (2)删除数据表   原文地址:https://www.cnblogs.com/howie-we/p/12070942.html

SQL 更新修改删除一个表,库存自动增减的写法

create trigger tri_asbon asb for insert as begin declare @rk int declare @ck int declare @sid varchar(20) select @sid=商品代码 ,@rk =入库数量,@ck=出库数量 from inserted if not exists(select * from asb where 商品代码[email protected]) insert into bsb(商品代码,数量) values(

DDL 数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制

/*进阶 11 DDL 数据库定义语言 库和表的管理 一:库的管理:创建/修改/删除 二:表的管理:创建/修改/删除 创建: CREATE DATABASE [IF NOT EXISTS] 库名; 修改: alter 删除: DROP DATABASE [IF EXISTS] 库名; */ #一 : 库的管理 #1 库的创建 CREATE DATABASE books; CREATE DATABASE IF NOT EXISTS books; #2/库的修改 #库名的修改,需要停止服务器,然后修

oracle创建、删除 数据库、建立表空间以及插入 删除 修改表

一.创建.删除数据库 oracle OraDb11g_home->配置和移植工具->Database configration  Assistant->...然后可以创建或者删除数据库 二.建立表空间 create tablespace inspur_tablespace   logging datafile 'D:\MyOracleBACK SQL\StudentDB\inspur_tablespace.dbf'  size 50m autoextend on next 50m max

oracl使用DataBase Configuration Assistant创建、删除数据库

原文:oracl使用DataBase Configuration Assistant创建.删除数据库 可以使用DataBase Configuration Assistant来创建一个心得数据库.Database Configuration Assistant简称是DBCA,是创建.配置以及管理数据库的一个工具. 一.创建数据库的一个具体的步骤: 1. 点击“开始”-“所有程序”-“Oracle”-“配置和移植工具”-“Database Configuration Assistant” 或者 

每天一点数据库之-----Day 2 创建与管理数据库表

每天一点数据库之-----Day 2 创建与管理数据库表 ----转载请注明出处:coder-pig 本节引言: 本节介绍的是数据库中表的创建与管理,另外,因为不同DBMS所 支持的数据类型有所差别,这里就不慢慢阐述了,有需要的自行百度~ 1.创建一个最简单的表 假如:我们定义一个名叫 T_Person的表,表中有三个字段,FId(人员id),FName(人员姓名) FAge(人员年龄),数据类型依次是:整数,长度不确定的字符串类型,整数 SQL语句如下: CREATE TABLE T_Pers

数据库(SQL Server)管理数据库表~新奇之处

说到“数据库”,我总有一种莫名的感觉,在刚刚接触到的数据库中就让我似懂非懂渡过着,于是思考着.于是在冷静的时空中让我回想到了很多的知识,不知你们是怎样过来的,真心希望我的这篇数据库总结能够让我们都有一个更进步的空间. 就像标题中所说的:“数据库之创建与管理数据库表”,或许说不上新颖之作,但我相信应该有能帮大家解决在学习中运到的一些问题,当然谁都不会是完美,都会有不一样的感触,所以也想借此来和大家多多的交流并分享学习数据库时的郁闷与愉快. 那好,就让我们进入我总结”数据库“时空之境吧!!! 如果说

Linux创建修改删除用户和组

Linux 创建修改删除用户和组 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先从用户信息开始分析,可以通过查询/etc/password文件,每一行代表一个用户信息 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin m

批量修改mysql数据库表前缀。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

sqlsever学习笔记(一)—— 登录本机sqlsever、启动和停止sqlsever服务、创建和删除数据库

(重要参考:51自学网——SQL Server数据库教程) 首先按照网上教程安装好sqlsever,打开登录 登录本机sqlsever:①. ②localhost ③127.0.0.1 启动和停止sqlsever服务:SQL Server(MSSQLSERVER): 1.计算机右键打开管理 2.打开服务和应用程序,双击服务,找到SQL Server(MSSQLSERVER)数据库服务并启动. 视图创建数据库 数据库右键新建数据库,可设置数据库名称.大小.增长率和位置.日志文件,默认数据库保存在主