SQL__关键字(二)

一、今日内容

  • SQL UNION 操作符
  • SQL SELECT INTO 语句
  • SQL INSERT INTO ... SELECT语句
  • SQL CREATE DATABASE 语句
  • SQL CREATE TABLE 语句
  • SQL约束
  • SQL CREATE INDEX 语句
  • SQL DROP

二、具体内容

  • SQL UNION 操作符

    SQL UNION操作符用于合并两个或多个SELECT语句的结果。

    注:UNION 内部的每个SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个SELECT语句中的列的顺序必须相同。

    • SQL UNION语法

      SELECT column_name(s) FROM table1
      UNION
      SELECT column_name(s) FROM table2;
      

      注释:默认地,UNION操作符选取不同的值。如果允许重复的值,请使用UNION ALL。

    • SQL UNION ALL语法

      SELECT column_name(s) FROM table1
      UNION ALL
      SELECT column_name(s) FROM table2;
      
      注释:UNION结果集中的列名总是等于 UNION 中第一个SELECT语句中的列名。
      
  • SQL SELECT INTO 语句

    SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

    MYSQL数据库不支持SELECT ... INTO 语句,但支持INSERT INTO ... SELECT语句。
    也可以使用以下语句来拷贝表结构及数据:
    CREATE TABLE 新表
    AS
    SELECT * FROM 旧表
    

    SQL SELECT INTO 语法:

    • 复制所有的列插入到新表中:
    SELECT *
    INTO newtable [IN externaldb]
    FROM table1;
    
    • 只复制希望的列插入到新表中:
    SELECT column_name(s)
    INTO newtable [IN externaldb]
    FROM table1;
    
  • SQL INSERT INTO ... SELECT语句

    INSERT INTO ... SELECT语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

    SQL INSERT INTO ... SELECT 语法:

    • 从一个表中复制所有的列插入到另一个已存在的表中:

      INSERT INTO table2
      SELECT * FROM table1;
      
    • 只复制希望的列插入到另一个已存在的表中:

      INSERT INTO table2
      (column_name(s))
      SELECT column_name(s)
      FROM table1;
      
  • SQL CREATE DATABASE 语句

    SQL CREATE DATABASE 语句用于创建数据库。

    • SQL CREATE DATABASE 语法:
    CREATE DATABASE dbname;
    
  • SQL CREATE TABLE 语句

    SQL CREATE TABLE 语句用于创建数据库中的表。

    表由行和列组成,每个表都必须有个表名。

    • SQL CREATE TABLE 语法:

      CREATE TABLE table_name
      (
      column_name1 data_type(size),
      column_name2 data_type(size),
      column_name3 data_type(size),
      ...
      )
      
      #column_name 参数规定表中列的名称。
      #data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)
      #size参数规定表中列的最大长度。
      
  • SQL约束

    SQL约束用于规定表中的数据规则。

    如果存在违反约束的数据行为,行为会被约束终止。

    约束可以在创建表时规定(通过CREATE TABLE 语句),或者在表创建之后规定(通过ALTER TABLE 语句)。

    • SQL CREATE TABLE +CONSTRAINT语法:

      CREATE TABLE table_name
      (
      column_name1 data_type(size) constraint_name,
      column_name2 data_type(size) constraint_name,
      column_name3 data_type(size) constraint_name,
      ....
      );
      

    在SQL中,我们有如下约束:

    1. NOT NULL - 指示某列不能存储 NULL 值

      NOT NULL约束 强制列不接受NULL值。

      NOT NULL约束强制字段始终包含值,这就意味着,如果不向字段添加值,就无法插入新纪录或者更新记录

      • 添加NOT NULL约束

        在一个已创建的表的“Age”字段中添加 NOT NULL约束,如下:

        ALTER TABLE Persons
        MODIFY Age int NOT NULL;
        
      • 删除NOT NULL约束

        在一个已创建的表的“Age”字段中删除NOT NULL约束,如下:

        ALTER TABLE Persons
        MODIFY Age int NULL;
        
    2. UNIQUE - 保证某列的每行必须有唯一的值。

    3. PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

    4. FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

    5. CHECK - 保证列中的值符合指定的条件。

    6. DEFAULT - 规定没有给列赋值时的默认值。

  • SQL CREATE INDEX 语句

    CREATE INDEX 语句用于在表中创建索引,,以便更加快速高效地查询数据。

    用户无法看到索引,他们只能被用来加速搜索/查询。

    • SQL CREATE INDEX 语法:

      在表上创建一个简单的索引,允许使用重复的值:

      CREATE INDEX index_name
      ON table_name (column_name)
      
    • SQL CREATE UNIQUE INDEX 语法:

      在表上创建一个唯一的索引,不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。

      CREATE UNIQUE INDEX index_name
      ON table_name (column_name)
      

      注释:用于创建索引的语法在不同的数据库中不一样。因此,检查您的数据库中创建索引的语法。

  • SQL DROP

    通过使用DROP语句,可以轻松地删除索引、表和数据库。

    • DROP INDEX 语句

      DROP INDEX 语句用于删除表中的索引。

      1. 用于MS Access的DROP INDEX语法:

        DROP INDEX index_name ON table_name
        
      2. 用于MS SQL Server 的DROP INDEX语法:

        DROP INDEX index_name.index_name
        
      3. 用于DB2/Oracle的DROP INDEX语法:

        DROP INDEX index_name
        
      4. 用于Mysql的DROP INDEX语法:

        ALTER TABLE table_name DROP INDEX index_name
        
    • DROP TABLE 语句

      DROP TABLE用于删除表。

      DROP TABLE table_name
      
    • DROP DATABASE 语句

      DROP DATABASE 语句用于删除数据库。

      DROP DATABASE database_name
      
    • TRUNCATE TABLE 语句

      如果仅仅需要删除表内的数据,但并不删除表本身,请使用TRUNCATE TABLE语句:

      TRUNCATE TABLE table_name
      

posted on 2020-06-08 15:16  wangsiqi  阅读(104)  评论(0编辑  收藏  举报

导航