SQL语句

匿名 (未验证) 提交于 2019-12-02 23:49:02

SQL语句(不区分大小的语言)

  • 基础

    • 创建数据库

      CREATE DATABASE database-name

      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 参数规定表中列的最大长度

      • 约束

        • 语法

          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,

          );

          • NOT NULL - 指示某列不能存储 NULL 值。
          • UNIQUE - 保证某列的每行必须有唯一的值。
          • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
          • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
          • CHECK - 保证列中的值符合指定的条件。
          • DEFAULT - 规定没有给列赋值时的默认值。
    • 删除数据库

      drop database dbname

    • 备份sql server

      • 创建 备份数据的 device

        USE master

        EXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.dat’

      • 开始备份

        BACKUP DATABASE pubs TO testBack

    • select语句(用于从数据库中选取数据结果被存储在一个结果表中,称为结果集)

      • 语法:

        SELECT column_name,column_name

        FROM table_name;

        与SELECT * FROM table_name;

        SELECT DISTINCT 语句(去掉重复值用于返回唯一不同的值)

        • 语法:

          SELECT DISTINCT column_name,column_name

          FROM table_name;

    • WHERE(用于过滤记录)

      • 语法:

        SELECT column_name,column_name

        FROM table_name

        WHERE column_name operator value;

      • 运算符

        运算符 描述
        = 等于
        <> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
        > 大于
        < 小于
        <= 小于等于
        >= 大于等于
        BETWEEN 在某个范围内
        LINK 搜索某种模式
        IN 指定针对某个列的多个可能值
    • AND & OR(用于基于一个以上的条件对记录进行过滤)

      如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

      如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

    • ORDER BY

      • 对结果集按照一个列或者多个列进行排序

      • 语法

        SELECT column_name,column_name

        FROM table_name

        ORDER BY column_name,column_name ASC|DESC;

        ASC升序

        DESC降序

      • 当多个列排序时,先按照第一个列排序,然后再依次从后拍。

    • INSERT INTO

      • 向表中插入新记录

      • 语法

        第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

        INSERT INTO table_name

        VALUES (value1,value2,value3,…);

        第二种形式需要指定列名及被插入的值:

        INSERT INTO table_name (column1,column2,column3,…)

        VALUES (value1,value2,value3,…);

    • UPDATE(更新表中的记录)

      • 语法:

        UPDATE table_name

        SET column1=value1,column2=value2,…

        WHERE some_column=some_value;

        (若没有where则更新全部记录)

    • DELETE(删除表中的记录)

      • 语法:

        DELETE FROM table_name

        WHERE some_column=some_value;

    • SELECT TOP, LIMIT, ROWNUM 子句(用于规定要返回的记录的数目)

      • SQL Server / MS Access 语法

        SELECT TOP number|percent column_name(s)

        FROM table_name;

      • MySQL 语法

        SELECT column_name(s)

        FROM table_name

        LIMIT number;

      • Oracle 语法

        SELECT column_name(s)

        FROM table_name

        WHERE ROWNUM <= number;

  • 操作符

    • LIKE(在 WHERE 子句中搜索列中的指定模式)
      • 语法:

        SELECT column_name(s)

        FROM table_name

        WHERE column_name LIKE pattern;

  • 通配符

    • 通配符 描述
      % 替代 0 个或多个字符
      _ 替代一个字符
      [charlist] 字符列中的任何单一字符
      [charlist]或[charlist] 不在字符列中的任何单一字符
    • IN操作符(允许您在 WHERE 子句中规定多个值有点像集合)

      • 语法:

        SELECT column_name(s)

        FROM table_name

        WHERE column_name IN (value1,value2,…);

    • between(用于选取介于两个值之间的数据范围内的值,可以用于判断)

      • 语法

        SELECT column_name(s)

        FROM table_name

        WHERE column_name BETWEEN value1 AND value2;

    • 别名(通过使用 SQL,可以为表名称或列名称指定别名。)

      • SELECT column_name AS alias_name

        FROM table_name;

      • SELECT column_name(s)

        FROM table_name AS alias_name;

    • 链接(JOIN)

      • 把来自两个或多个表的行结合起来

      • INNER JOIN:如果表中有至少一个匹配,则返回行

      • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行

      • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行

      • FULL OUTER JOIN:只要其中一个表中存在匹配,则返回行

      • 实例

        SELECT Websites.id, Websites.name, access_log.count, access_log.date

        FROM Websites

        INNER JOIN access_log

        ON Websites.id=access_log.site_id;

    • UNION :合并两个或多个 SELECT 语句的结果。

      • 语法

        SELECT column_name(s) FROM table1

        UNION ALL

        SELECT column_name(s) FROM table2;

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

      • 复制所有的列插入到新表中

        SELECT *

        INTO newtable [IN externaldb]

        FROM table1;

        只复制希望的列插入到新表中:

        SELECT column_name(s)

        INTO newtable [IN externaldb]

        FROM table1;

      • 实例

        创建 Websites 的备份复件:

        SELECT *

        INTO WebsitesBackup2016

        FROM Websites;

        只复制一些列插入到新表中:

        SELECT name, url

        INTO WebsitesBackup2016

        FROM Websites;

        只复制中国的网站插入到新表中:

        SELECT *

        INTO WebsitesBackup2016

        FROM Websites

        WHERE country=‘CN’;

        复制多个表中的数据插入到新表中:

        SELECT Websites.name, access_log.count, access_log.date

        INTO WebsitesBackup2016

        FROM Websites

        LEFT JOIN access_log

        ON Websites.id=access_log.site_id;

    • INSERT INTO SELECT :从一个表复制数据,然后把数据插入到一个已存在的表中

      • 语法

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

        INSERT INTO table2

        SELECT * FROM table1;

        只复制希望的列插入到另一个已存在的表中:

        INSERT INTO table2

        (column_name(s))

        SELECT column_name(s)

        FROM table1;

    • CREATE INDEX 语句(用于在表中创建索引)

      • 语法

        创建一个简单的索引。允许使用重复的值

        CREATE INDEX index_name

        ON table_name (column_name)

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

        CREATE UNIQUE INDEX index_name

        ON table_name (column_name)

    • DROP INDEX 语句

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

      用于 MS Access 的 DROP INDEX 语法:

      DROP INDEX index_name ON table_name

      用于 MS SQL Server 的 DROP INDEX 语法:

      DROP INDEX table_name.index_name

      用于 DB2/Oracle 的 DROP INDEX 语法:

      DROP INDEX index_name

      用于 MySQL 的 DROP INDEX 语法:

      ALTER TABLE table_name DROP INDEX index_name

    • ROP TABLE 语句

      DROP TABLE 语句用于删除表。

      DROP TABLE table_name

      • DROP DATABASE 语句

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

      DROP DATABASE database_name

      • TRUNCATE TABLE 语句

      仅仅需要删除表内的数据,但并不删除表本身

      TRUNCATE TABLE table_name

    • ALTER TABLE 语句:在已有的表中添加、删除或修改列。

      • 语法

        在表中添加列

        ALTER TABLE table_name

        ADD column_name datatype

        需删除表中的列

        ALTER TABLE table_name

        DROP COLUMN column_name

        变表中列的数据类型

        • SQL Server / MS Access:

          ALTER TABLE table_name

          ALTER COLUMN column_name datatype

          My SQL / Oracle:

          ALTER TABLE table_name

          MODIFY COLUMN column_name datatype

    • Auto-increment :新记录插入表中时生成一个唯一的数字

      • 用于 MySQL 的语法

        列名 int NOT NULL AUTO_INCREMENT,

        让 AUTO_INCREMENT 序列以其他的值起始

        • ALTER TABLE Persons AUTO_INCREMENT=100
      • 用于 SQL Server 的语法

        ID int IDENTITY(1,1) PRIMARY KEY
        olumn_name datatype

        My SQL / Oracle:

        ALTER TABLE table_name

        MODIFY COLUMN column_name datatype

    • Auto-increment :新记录插入表中时生成一个唯一的数字

      • 用于 MySQL 的语法

        列名 int NOT NULL AUTO_INCREMENT,

        让 AUTO_INCREMENT 序列以其他的值起始

        • ALTER TABLE Persons AUTO_INCREMENT=100
      • 用于 SQL Server 的语法

        ID int IDENTITY(1,1) PRIMARY KEY

文章来源: https://blog.csdn.net/Berg_liu/article/details/96619319
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!