zoukankan      html  css  js  c++  java
  • SQL语法语句总结(《SQL必知必会》读书笔记)

    一.SQL语句语法

    ALTER TABLE

      ALTER TABLE 用来更新已存在表的结构。

    ALTER TABLE tablename
    (ADD|DROP     column     datatype     [NULL|NOT NULL]    [CONSTRAINTS],
    ...
     );
     

    COMMIT

      COMMIT 用来将事物写入数据库。

    COMMIT [TRANSACTION];

    CREATE INDEX

      CREATE INDEX 用于在一个或多个列上创建索引。

    CREATE INDEX indexname
    ON    tableanme (column,...);

    CREATE PROCEDURE

      CREATE PROCEDURE 用于创建存储过程。

    CREATE PROCEDURE
    AS
    SQL statement;

    CREATE TABLE

      CREATE TABLE 用于创建新数据库表。更新已经存在的表的结构,使用ALTER TABLE。

    CREATE TABLE tablename
    (
            column      datatype      [NULL|NOT  NULL]    [CONSTRAINS],   
            column      datatype      [NULL|NOT  NULL]    [CONSTRAINS],                
    
             ... 
     );         

    CREATE VIEW

      CREATTE VIEW 用于创建一个或多个表上的新视图。

    CREATE    VIEW    viewname    AS
    SELECT    columns, ...
    FROM    tables, ...
    [WHERE ...]
    [GROUP    BY ...]
    [HAVING ...];

    DELETE

      DELETE 从表中删除一行多多行。

    DELETE    FROM    tablename
    [WHERE ...];

    DROP

      DROP 永久删除数据库对象(表,视图,索引等)。

    DROP    INDEX|PROCEDURE|TABLE|VIEW
    indexname|procedurename|tablename|viewname;

    INSERT

      INSERT 为表添加一行。

    INSERT    INTO    tablename[(columns, ...)]
    VALUES (values, ...);

    INSERT SELECT

      INSERT SELECTT 将SELECT结果插入到一个表。

    INSERT     INTO    tablename    [(columns, ...)]
    SELECT    columns, ...    FROM    tablename, ...
    [WHERE ...];

    ROLLBACK

      ROLLBACK 用于撤销一个事物块。

    ROLLBACK    [TO    savepointname];

    SELECT

      SELECT 用于从一个或多个表(视图)中检索数据。

    SELECT    columnname, ...
    FROM    tablename, ...
    [WHERE ...]
    [UNION ...]
    [GROUP    BY ...]
    [HAVING ...]
    [ORDER    BY ...];

    UPDATE

      UPDATE 更新表中的一行或多行。

    UPDATE    tablename
    SET    columnname = value, ...
    [WHERE ...];

     二.SQL常用语句

    检索数据

      SELECT语句后面跟要检索的列,FROM后跟要检索的表,WHERE用于过滤需要的条件。ORDER BY用于排序(DESC用于降序,ASC用于升序)。SELECT *表示检索所有的列。

    SELECT colunmname_1, columnname_2, clunmname_3, ...
    FROM    tablename
    [WHERE ...]
    [ORDER BY ... ASC|DESC];

    过滤数据

      WHERE用于过滤数据,后面可跟字句操作符,后跟 NOT 用于否定,后跟AND、OR和IN(完成与OR相同的功能)用于过滤多个条件,后跟LIKE用于通配符过滤(%表示任意字符出现任意次数,_表示匹配单个字符,[]用来指定一个字符集)。例如:

    SELECT    prod_id, prod_name, prod_price
    FROM    Products
    WHERE  NOT  prod_price BETWEN 3.44 AND 5.88    AND    prod_name LIKE '[JM]%';

      下表为WHERE字句操作符:

      

    拼接字段

      MySQL数据库中用Concat来进行拼接字段。AS来取一个别名。RTRIM()来去掉字符串右边的空格,LTRIM()来去掉字符串左边的空格,TRIM()来去掉字符串左右两边的空格。例如:

    SELECT    Concat( vend_name, '(' ,RTRIM(vend_country), ')' )
                    AS    vend_title
    FROM    Vendors
    ORDER BY  vend_name;

    数据函数

      常用数据的处理、汇总函数如下:

      例如:

    SELECT    COUNT(*)    AS    num_cust
    FROM    Customers;

    子查询

       子查询,即嵌套在其他查询中的查询。例如:

    SELECT    cust_name,cust_state,
                    (SELECT    COUNT(*)
                        FROM        Orders
                        WHERE    Orders.cust_id=Customer.cust_id)    AS    orders 
    FROM    Customers
    ORDER    BY    cust_name;

      

    联结表

       SQL最强大的功能之一就是能在数据查询的执行中联结(join)表。联结是利用SQL的SELECT能执行的最重要的操作,很好的理解联结及其语法是学习SQL的极为重要的部分。创建联结表非常简单,指定要联结的所有表及关联它们的方式即可。例如:

    SELECT    vend_name,prod_name,prod_price
    FROM    Vendors, Products
    WHERE    Vendors.vend_id=Products.vend_id;

      以上使用的联结称为内联结,也称为等值联结,它基于两个表之间的相等测试。下面的SELECT语句返回与前面例子完全相同的数据:

    SELECT    vend_name,prod_name,prod_price
    FROM    Vendor    INNER    JOIN    Products
    ON    Vendor.vend_id=Products.vend_id;

    组合查询

       可用UNION操作符来组合多条SQL语句,在各条语句之间放上关键字UNION。UNION从查询结果集中自动去除重复的行,如果显示所有可用UNION  ALL表示返回所有的匹配行。例如:

    SELECT cust_name, cust_contact,cust_email
    FROM        Customers
    WHERE    cust_state    IN('IL', 'IN' ,'MI')
    UNION
    SELECT cust_name, cust_contact,cust_email
    FROM        Customers
    WHERE    cust_name ='JACK';

    插入数据

      可用INSERT操作符对标进行插入操作,后面的INTO是可选的(建议加上)。例如:

    INSERT INTO Students(id,name,age,tel)
    VALUES(
      '001',
      'JACK' ,  
      '21' ,
      '8612345';
    )

      

    三.主键与外键

      主键是一种特殊的约束,用来保证一列(或一组列)中的值是唯一的,而且永远不改动。换句话说,表中的一列或多个列的唯一标识表中的每一行。这方便了直接或交互处理表中的行。没有主键,要安全的进行UPDATE和DELETE特定行而不影响其他行会非常困难。一种定义主键的方法是创建它,例如下面声明vend_id为主键:

    CREATE    TABLE    Vendors
    (
        vend_id    CHAR(10)    NOT NULL     PRIMARY  KEY,
        vend_name    CHAR(50)    NOT  NULL,
        vend_addr    CHAR(50)    NULL
    );

      外键是表中的一列,其值必须列在另一表的主键中。外键是保证引用完整性的及其重要的部分。例如:

    CREATE    TABLE    Orders
    (
        order_num    INTEGER    NOT  NULL    PRIMARY    KEY,
        order_data    DATATIME    NOT  NULL,
        cust_id    CHAR(10)    NOT  NULL    REFERENCES    Customers(cust_id)
    );

      上面语句定义使用了REFERENCES关键字,它表示cust_id中的任何都必须是Customers表的cust_id中的值。

      相同的工作也可以在ALTER  TABLE语句中用CONSTRAINT语法来完成:

    ALTER    TABLE    Orders
    ADD    CONSTRAINT
    FROEIGN    KEY    (cust_id)    REFERENCES    Customers    (cust_id)

    四.数据类型

                                      表4.1 字符串数字类型

      

    表4.2 数值数据类型

     

    表4.3 日期和时间数据类型

    表4.4 二进制数据类型

     

      以上是SQL相关的常用语法及语句结构,详情可查看SQL及DBMS相关文档。

    参考文献

    《SQL必知必会》,Ben Forta ,人民邮电出版社。

  • 相关阅读:
    我与计算机简述
    第十五周计应151班第四组排球计分程序
    第十五周排球积分查询程序
    本周总结
    计应1班第4小组第一次产品计划会议
    本周总结
    计应1班第4小组“排球比赛计分程序”的典型用户、创立场景、用户故事
    排球计分规则功能说明书
    我与计算机
    5th 各组作品alpha发布体会
  • 原文地址:https://www.cnblogs.com/maluning/p/8042343.html
Copyright © 2011-2022 走看看