zoukankan      html  css  js  c++  java
  • SQL学习基础知识

    1.SQL不区分大小写

    2.SQL每个语句后面都必须加分号

    3.SQL可以分为DML(数据库操作语言)和DDL(数据库定义语言)

      DML(查询、更新):SELECT UPDATE DELETE INSERT INTO

      DDL(创建删除表格  也可以创建删除索引):

          CREATE DATABASE  创建数据库

          ALTER DATABASE    修改数据库

          CREATE TABLE     创建表

          ALTER TABLE    变更表

          DROP TABLE    删除表

          CREATE INDEX    创建索引(索引键)

          DROP INDEX   删除索引

    SQL SELECT语句:SELECT 列名 FROM 表名; 

              SELECT * FROM 表名;

              例如:SELECT firstNam,lastName FROM  persons;从persons表中获取列名为firstName和lastName的列的值

    SQL SELECT DISTINCT语句: SELECT DISTINCT 列名 FROM 表名;

             例如:SELECT DISTINCT firstName,lastName FROM person;从person表中获取列名为firstName和lastName的列的值,排除其中firstName和                lastName都相等的记录

    SQL WHERE子句:用于规定查询条件;> < = >= <= <>(不等于) (BETWEEN XX AND XX)  LIKE 

             条件的值如果不是数值,必须加单引号

             SELECT * FROM person WHERE name <> 'name1';

    SQL AND和OR运算符:SELECT * FROM person WHERE (firstName = 'name1' OR firstName = 'name2') AND lastName = 'name3';

    SQL ORDER BY:对结果集进行排序

              以逆字母顺序显示公司名称,并以数字顺序显示顺序号:SELECT company,orders FROM person ORDER BY company DESC,orders ASC;

    INSERT INTO:INSERT INTO person VALUES(value1,value2,....)   INSERT INTO person(colum1,colum2,...) VALUES(value1,value2,....);

    UPDATE...SET..:UPDATE demo SET name='name1',company='company2' WHERE id = xx;

    DELETE FROM:DELETE FROM person WHERE name='name1';

    TOP(SQL SERVER) LIMIT(MYSQL) ROWNUM<XXX---ORACLE:规定返回记录的数量

            SQL SERVER : SELECT TOP 10 * FROM person WHERE name = 'name1'; 

            MYSQL:SELECT * FROM person WHERE name = 'name1' LIMIT 10;

            ORACLE: SELECT * FROM person WHERE name = 'name1' ROWNUM<10;

    LIKE:SELECT * FROM person WHERE name LIKE 

    SQL通配符:% _  [charlist]符合charlist中的一个 [^charlist]不是charlist中的任一一个 [!charlist]不是charlist中的任何一个([]在mysql中一个也没查出来 在sqlserver中可       以查出来)

          例:查找person表中name以n或m或r开头的name列  SELECT name FROM person WHERE name like '[nmr]%';

    SQL IN:SELECT * FROM person WHERE name IN(value1,value2,value3,....);

          例:在person表中选取姓名为name1或name2的人 SELECT * FROM person WHERE name IN('NAME1','NAME2');

    BETWEEN ... AND ...:SELECT * FROM person WHERE age BETWEEN '10' AND '20';

    NOT:查找条件的相反条件 SELECT * FROM person WHERE age NOT BETWEEN '10' AND '20';

    AS:别名(可省略AS)  SELECT * FROM person p where p.age = 20;      

    JOIN:table1 JOIN table2 ON             table1 INNER JOIN table2 ON               table1 LEFT JOIN table2 ON            table1 RIGHT JOIN table2 ON

       join 和 inner join是一样的:用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

            例:谁订购了产品,并且他们订购了什么产品?(查询所有人的订购)

            SELECT person.firstNaem,person.rightName,orders.num FROM person JOIN orders ON person.id=order.p_id;

            等价于:SELECT person.firstNaem,person.rightName,orders.num FROM person,orders WHERE person.id=order.p_id;

            

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

            例如:我们希望列出所有的人,以及他们的定购。

            SELECT person.firstName,person.rigthName,orders.num FROM person LEFT JOIN orders ON person.id=order.p_id;

            

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

            例如:我们希望找出所有的票,以及订购他们的人

            SELECT person.firstName,person.rightName,orders.num FROM person RIGHT JOIN orders ON person.id=order.p_id;

            

       FULL JOIN: 只要其中一个表中存在匹配,就返回行MYSQL不支持full join,可以用left join 和right join分别查出结果再用union组合结果,去掉重复的部分(多             查出了一次两个表都匹配的结果)

            例如:我们希望列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人

            SELECT person.firstName,person.lastName,orders.num FROM person FULL JOIN orders ON person.id=order.p_id;

            等价于:SELECT person.firstName,person.lastName.orders.num FROM person LEFT JOIN orders ON person.id = order.p_id union

                    SELECT person.firstName,person.lastName.orders.num FROM person LEFT JOIN orders ON person.id = order.p_id;

             

    UNION:用于合并两个或多个 SELECT 语句的结果集,UNION操作符默认选取不同的值,如果要保留相同的值用UNION ALL

        :UNION两边的SELECT语句必须要查询相同数量的列,并且每个查询的列都必须要有相同的数据类型

        例:

          列出Employees_China和Employees_USA中的E_Name,名字相同的只列一次

          SELECT E_Name FROM Employees_China UNION SELECT E_Name FROM Employees_USA

          

  • 相关阅读:
    java API 文档
    java容器
    java学习笔记 java.io.File类
    理解性能的奥秘——应用程序中慢,SSMS中快(1)——简介
    第六章——根据执行计划优化性能(3)——键值查找
    第六章——根据执行计划优化性能(2)——查找表/索引扫描
    第六章——根据执行计划优化性能(1)——理解哈希、合并、嵌套循环连接策略
    SQL Server 执行计划操作符详解(3)——计算标量(Compute Scalar)
    SQL Server 执行计划操作符详解(2)——串联(Concatenation )
    SQL Server 执行计划操作符详解(1)——断言(Assert)
  • 原文地址:https://www.cnblogs.com/yongde/p/3060032.html
Copyright © 2011-2022 走看看