问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL 的DDL语句包括哪几个?

发布网友 发布时间:2022-04-07 20:09

我来回答

4个回答

懂视网 时间:2022-04-08 00:30

一、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 FilesMicrosoft SQLServer10.MSSQLSERVERMSSQL(或者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 FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAAccountingData.mdf‘,  --数据库文件位置
 SIZE = 10,  --大小 10M
 MAXSIZE = 50,  --最大大小 50M
 FILEGROWTH = 5  --每次增加 5M
)
LOG ON
(
 NAME = ‘AccountingLog‘,
 FILENAME = ‘C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAAccountingLog.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、确保没有打开其他显示要删除的数据库为当前数据库的连接。

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

标签:

热心网友 时间:2022-04-07 21:38

DDL语句:

1、创建数据库

语法:CREATE DATABASE dbname;

2、查看数据库

语法:show databases;

3、选择要操作的数据库

语法:USE dbname;

4、查看数据库下的表

语法:show tables;

5、删除数据库

语法:drop database dbname;

6、创建表

语法:CREATE TABLE tbname(col_name_1(列名) col_type_1(列类型) constraints(约束条件),

col_name_2 col_type_2 constraints,

……

col_name_n col_type_n constraints,)



7、查看表的定义

语法1:DESC tbname;

语法2:show create table tbname;

8、删除表

语法:DROP TABLE tbname;

9、修改表

语法1:修改表类型

ALTER TABLE tbname MODIFY [COL] col_definition ;

如下图:将name字段的类型修改为varchar(20)

语法2:增加表的字段

ALTER TABLE tbname ADD [COL] col_definition;

如下图:增加了birth字段,类型为date:

语法3:删除表字段

ALTER TABLE tbname DROP [COL] col_name;

如下图:删除birth字段

语法4:字段改名

ALTER TABLE tbname CHANGE [COL] old_col_name col_definition;

如下图:将字段age名改为age1, 同时将其类型改为int(4):

语法5:更改表名

ALTER TABLE tbname RENAME [TO] new_tablename;

热心网友 时间:2022-04-07 22:56

ddl(数据定义语言),
例如对表,视图,存储过程等的创建,修改,删除等命令,
例如create,alter,drop,
具体的可以参看SQL的帮助,
呵呵,希望能有帮助,^_^

热心网友 时间:2022-04-08 00:31

DDL就是数据定义语言

创建、修改、删除表、视图、存储过程等都属于DDL

一般帮助里都有很详细的说明,你可以参考一下
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
急求高人解答 ···管理类的问题 ···!!!急急急···我会在线等... ...如果基层管理幅度为8,高层管理人员管理幅度为3,则该公司中层管理人员... ...发生化学变化的实质是( )A.分子间隔发生变化B.物质状态发生改变C... 下列变化不能说明发生了化学变化的是( )A.变化时有电子的得失或共用电... 下列描述正确的是( )A.固态物质的分子间无间隔B.液态物质的分子不断运动... 原来微信打开这个功能,能够看到马路上的街景,涨知识了! ...百度帐号被人在异地登录了,问题是没有任何人知道我的密码啊?而且也... 医疗事故纠纷和医疗损害纠纷的区别是什么 医疗纠纷与医疗事故的定义是什么? 医疗事故纠纷是指什么的 淘宝网上怎样上传身份证 淘宝实名认证怎么样上传身份证。 淘宝天猫怎么上给卖家上传身份证照片 佳能相机如何把照片传到手机上?我购买的佳能90d相机连不上网,和蓝牙 淘宝跨境电商如何上传身份证 淘宝上买手机卡要上传身份证怎么办 淘宝网,上传身份证,怎么传? 淘宝跨境电商如何上传身份证,几步可以完成 台湾香肠的制作方法 台湾香肠配蒜瓣怎么做 台湾火腿肠怎么做好吃 toB的产品经理和toC的产品经理什么差别? 自制台湾香肠的做法大全,怎么做如何做好吃 台湾香肠怎么做 产品经理和项目经理区别有哪些? 产品市场经理和产品经理的区别和联系 产品经理和项目经理的区别是什么? 雨后的故事视频或漫画。谢谢 matlab 非线性拟合问题 已知三角形ABC,向量AB=a,向量AC=b,点D、E分别在线段AB和AC上,且AD:DB=AE:EC,求证向量DE 平行 向量BC 生活费是哪个平台的贷款,电话号码是多少? 小鸡鸡向右歪怎么办? 8岁小孩小鸡往一边歪怎么办 为什么儿子尿尿是小鸡鸡是歪的啊? 儿子3岁了小鸡头是歪的也翻不过来怎么办皮还有点长 小鸡崽脖子歪了,怎么办?…谢谢了,大神帮忙啊 18岁男孩小鸡长歪了,正常吗 我发现自己的小鸡劲起来的时候是歪的会影响发育吗?男18岁 家里的小鸡仔昨天还好好的今天脖子就歪了一直不见好这是怎么了? 小鸡头歪一边,走不了路 一周岁小孩小鸡尿尿歪歪经尿脚上怎么回事 小鸡为什么嘴长歪了 生燕麦片长什么样 燕麦片是什么样子的 生燕麦片煮熟后是什么味道? 生的燕麦片怎么吃 ipad2020怎么清理内存垃圾 广西师范大学漓江学院育才校区有哪个系? 木质梯子怎么挂才好看 我是一名理科女生请问广西师范大学有什么专业适合我?