精华内容
下载资源
问答
  • 本文转载于我的个人博客数据库表语法及数据管理 遵循 CC 4.0 BY-SA 版权协议 MySQL day3 # 创建数据库表(重点) -- 目标:创建一个school数据库 -- 创建学生表(列、字段) 使用SQL 创建 -- 学号int 登陆密码...

    本文转载于我的个人博客数据库表语法及数据管理
    遵循 CC 4.0 BY-SA 版权协议

    MySQL day3

    # 创建数据库表(重点)

    -- 目标:创建一个school数据库
    -- 创建学生表(列、字段) 使用SQL 创建
    -- 学号int 登陆密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住址,email
    
    -- 注意点,只用英文(),表的名称 和 字段 尽量使用`` 括起来
    -- AUTO_INCREMENT 自增
    -- 字符串使用 单括号括起来!
    -- 所有的语句后面加 ,(英文的),最后一个不用加
    -- PRIMARY KEY 主键 ,一般一个表只有一个唯一的主键
    create table if not exists `student` (
    `id` int(4) not null auto_increment comment '学号',
    `name` varchar(30) not null default '匿名' comment '姓名',
    `pwd` varchar(20) not null default '123456' comment '密码',
    `sex` varchar(2) not null default '女' comment '性别',
    `birthday` datetime default null comment '出生日期',
    `address` varchar(100) default null comment '家庭地址',
    `email` varchar(50) default null comment '邮箱',
    PRIMARY key(`id`)
    )engine=innodb default charset=utf8
    

    格式

    create table  [if not exists]表名(
    `字段名` 列类型 [属性] [索引] [注释],
    `字段名` 列类型 [属性] [索引] [注释],
    `字段名` 列类型 [属性] [索引] [注释],
        ......
    `字段名` 列类型 [属性] [索引] [注释],
    `字段名` 列类型 [属性] [索引] [注释]
    )[表类型][字符集设置][注释]
    

    常用命令

    show create table student  -- 查看语句
    desc student     -- 显示表的结构
    

    数据表的类型

    -- 关于数据库引擎
    /*
    INNODB 默认使用
    
    MYISAM 早些年使用
    */
    
    MYISAM INNODB
    事务支持 不支持 支持
    数据行锁定 不支持 支持
    外键约束 不支持 支持
    全文索引 支持 不支持
    表空间大小 较小 较大,约为两倍

    常规使用操作:

    • MYISAM 节约空间,速度较快
    • INNODB 安全性高,支持事务处理,多表用户操作

    在物理空间存在的位置

    所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库

    本质还是文件的存储!

    MySQL 引擎在物理文件上的区别

    • innoDB 在数据库表中只有一个*.frm文件,以及上级目录下的 ibdata1文件
    • MYUSAM 对应文件
      • *.frm 表结构的定义文件
      • *.MDY 数据文件 (data)
      • *.MYI 索引文件(index)

    设置数据库表的字符集编码

    charset=utf8
    

    不设置 会是mysql的默认的字符集编码(不支持中文)

    在 my.ini中配置默认的编码

    character-set-server=utf8
    

    修改删除表

    修改

    -- 修改表名
    alter table test rename as tttt
    -- 怎加表的字段
    alter table tttt add age int(11)
    -- 修改表的字段(重命名,修改约束)
    alter table tttt modify age varchar(11)   -- 修改约束
    ALTER TABLE tttt change age age1 int(11)  -- 字段重命名
    
    
    -- 删除表的字段
    alter table tttt drop age1
    

    删除表

    -- 删除表
    drop table if exists tttt
    

    所有的创建和删除操作均加上存在判断

    MySQL 的数据管理

    外键(了解)

    方式一、在创建表的时候,增加约束 (麻烦,比较复杂)

    CREATE TABLE `grade` (
      `grade1d` INT(10) NOT NULL COMMENT '年纪名字',
      `gradename` VARCHAR(50) NOT NULL COMMENT '年级名字',
      PRIMARY KEY (`grade1d`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8
    -- 学生表的 gradeid 字段 要去引用年级表的grade id
    -- 定义外键key 
    -- 给这个外键添加约束(执行引用)references 引用
    CREATE TABLE IF NOT EXISTS `student` (
    `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
    `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
    `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
    `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
    `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
    `grade1d` INT(10) NOT NULL COMMENT '年纪名字',
    `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭地址',
    `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY(`id`)
    KEY `FK_gradeid` (`gradeid`),
    CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
    )ENGINE=INNODB DEFAULT CHARSET=utf8
    

    删除有外键关系的表,要先删除引用的表(从表),再删除被引用的表(主表)

    方式二、在创建表成功后,增加约束

    -- 创建表的时候没有外键关系的时候
    
    ALTER TABLE `student`
    ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`);
    

    以上操作均为数据库层级的关系,不建议使用(避免数据库过多造成困扰)

    最佳方法:

    • 数据库就是单纯的表,只是用来存数据,只有行(数据)和列(字段)
    • 我们想使用多张表的数据,想使用外键(程序去实现)

    同步学习资源:MySQL狂神说
    欢迎关注我的个人博客:Sakura

    展开全文
  • DROP TABLE -- 删除一个表 Synopsis DROP TABLE name [, ...] [ CASCADE | RESTRICT ] 输入 name 要删除的现存表的名字(可以有模式修饰). CASCADE 自动删除依赖于表的对象。(比如视图)。 ...

    DROP TABLE

    Name

    DROP TABLE  --  删除一个表

    Synopsis

    DROP TABLE name [, ...] [ CASCADE | RESTRICT ]
      

    输入

     

     

     

    name

    要删除的现存表的名字(可以有模式修饰).

    CASCADE

    自动删除依赖于表的对象。(比如视图)。

    RESTRICT

    如果存在依赖对象,则拒绝删除该表。这个是缺省。

     

    输出

     

     

     

    DROP

    如果命令成功完成,返回此信息.

    ERROR: table "name" does not exist

    果声明的表或视图在数据库中不存在.

     

    描述

    DROP TABLE 从数据库中删除表或视图. 只有其所有者才能删除一个表或视图. 使用 DELETE 一个表可能没有任何行,但不会被删除.

    DROP TABLE 总是删除目标表上现有的任何索引, 规则,触发器以及约束。但是,要删除一个由另外一个表用外键约束引用的表,我们 必须声明 CASCADE。(CASCADE 将删除外键约束,而不是另外一个表。)

    注意

    请参考 CREATE TABLE 和 ALTER TABLE 获取如何创建或更改表的信息.

    用法

    删除 films 和 distributors表:

    DROP TABLE films, distributors;
       

     

    兼容性

    SQL92

    转载于:https://www.cnblogs.com/onedime/archive/2012/11/21/2781025.html

    展开全文
  • 创建、修改、删除数据库表语法 CREATE 语句  CREATE语句的开头都是一样的,然后是特定的细节。  CREATE <object type> <object name>  一、CREATE DATABASE  ...

    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、确保没有打开其他显示要删除的数据库为当前数据库的连接。

     

     

    posted on 2013-06-07 23:52 逆心 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/kissdodog/archive/2013/06/07/3125471.html

    展开全文
  • T-SQL 创建、修改、删除数据库表语法 CREATE 语句  CREATE语句的开头都是一样的,然后是特定的细节。  CREATE <object type> <object name>  一、CREATE D...

    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、确保没有打开其他显示要删除的数据库为当前数据库的连接。

     

     

     
     
     
    0
    0
     
    (请您对文章做出评价)
     
    « 上一篇:Asp.net Web.Config - 配置元素 httpCookies
    » 下一篇:Asp.net Web.Config - 配置元素 caching
    posted on 2015-05-04 17:59 铭轩同学 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/mingxuantongxue/p/4476825.html

    展开全文
  • 表语句 创建新表:create table 表名(列名1 类型1,列名n 类型n,[constraint 约束名] 约束(列名) ) 主键:primary key 非空:not null 唯一索引:unique 自定义约束:check 关联:references 自动计算字段:as sp...
  • 将XXX替换成数据库名称,然后执行SQL,将执行结果拷贝出来执行就可以TRUNCATE数据库所有表了。 select CONCAT('truncate table XXX.',TABLE_NAME,';') FROM information_schema.TABLES WHERE TABLE_SCHEMA='XXXX';
  • DB2 数据库分区表语

    千次阅读 2016-11-29 14:12:27
    前端时间,做某银行的...该分区表未设置索引,如果当数据量多大的时候,做删除,性能会比较低,但是银行根据脚本,批量执行,所有就没加索引。有兴趣的朋友可以再去深入了解下db2其他的分区表写法及索引的添加。
  • sqlserver 锁表语句分享

    2020-12-15 14:22:14
    锁定数据库的一个表 SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLOCKX) 其他...
  • oracle 恢复表语句

    2020-09-04 20:22:20
    很多小伙伴开发过程中 ,总是会遇到不小心删除表数据或直接干掉某个表 ,导致数据丢失, 接下来的方法可以帮助大家把表数据给恢复回来. 第一种数据恢复方法是利用oracle提供的闪回方法进行数据恢复,适用于delete...
  • MySQL学习——简单学习MySQL常用操作 1.连接MySQL ...mysql -uroot -p123456 或者我们可以使用 mysql -uroot -p ... 这样我们就连接到mysql数据库中了 2.常用操作数据库表语句 show databases;...
  • SQL创建表语句文档

    2008-12-01 18:29:45
    关系数据库的主要特点之一就是用表的方式组织数据。表是SQL语言存放数据、查找数据以及更新数据的基本数据结构。在SQL语言中,表有严格的定义,它是一种二维表,对于这种表有如下规定: 1)每一张表都有一个名字,...
  • 数据库中对象:有表、视图、索引、序列、同义词等。 表:基本的数据存储的集合,由行与列组成 视图:从表中抽出的逻辑上相关的数据集合。 序列: 提供有规律的数值 索引:提高查询效率 同义词:给对象起的别名。...
  • 什么是临时表,临时表什么时候删除? MySQL B+Tree 索引和 Hash 索引的区别? sql 查询语句确定创建哪种类型的索引,如何优 化查询 有哪些锁(乐观锁悲观锁),select 时怎么加 排它锁? 什么样的字段适合建索引 ...
  • 1、创建一个数据库在system用户下按顺序执行以下语句:--创建表空间create tablespace XXX --表空间datafile 'E:\XXX.dbf' size 100M --表空间存储地址autoextend on next 100M maxsize unlimited loggingextent ...
  • 操作库语法 select user():查询当前用户 #1. 操作文件夹 增:create database db1 ... 删除: drop database db1; 操作表语法 #2. 操作文件 先切换到文件夹下:use db1 1.增:create table t1(id int,name char
  • DDL语句--删除数据库

    千次阅读 2016-03-24 16:50:18
    删除数据库是指在数据库系统中删除已经存在的数据库删除数据库之后,原来分配的空间将被收回。值得注意的是,删除数据库删除数据库中所有的表和所有数据,因此应该特别小心。 mysql中,删除数据库是...
  • 1、拼接删除表语句 selectconcat('drop table ',table_name,';')frominformation_schema.TABLESwheretable_schema='数据库名称'; 2、复制,全部执行
  • 在每个创建数据库表语句前添加删除数据库表的语句 — -add-locks 备份数据库表时锁定数据库表 — -all-databases 备份MySQL服务器上的所有数据库 — -comments 添加注释信息 — -compact 压缩模式,产生更少...
  • MySQL 删除数据库: drop 命令删除数据库 drop 命令格式: drop database <数据库名>; MySQL 创建数据表: 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建M...
  • mysqldump数据库备份

    2019-07-29 09:12:15
    mysqldump MySQL数据库中备份工具 补充说明 mysqldump命令 是mysql数据库中...--add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句; --add-locks:备份数据库表时锁定数据库表; --all-databases...
  • mysql备份数据库

    2018-09-26 19:37:14
    --add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句; --add-locks:备份数据库表时锁定数据库表; --all-databases:备份MySQL服务器上的所有数据库; --comments:添加注释信息; --compact:压缩...
  • Mysql数据库操作笔记

    2019-10-02 06:37:11
    如果数据库表字段存在,则删除该表 1 drop table if exists `table_name` ...创建数据库表语句 1 create table `table_name`( 2 `id` int(5) not null auto_increment comment '自增主键', 3 `na...
  • <pre> day05 上节内容回顾 (1)数据库语句 *创建数据库和查看数据库的语句 *切换数据库和删除数据库语句 (2)数据库表语句 *创建数据库表的语句 ...
  • MYSQL 数据库

    2017-08-31 10:28:00
     mysql 数据库查询数据库表语法:查看本数据库语法为:show tables;其他数据库表查询语法:show tables from 数据库名称;  数据库查询语法:select database();  数据库表结构查询语法:show columns from 表名...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,166
精华内容 1,666
热门标签
关键字:

删除数据库的表语句