zoukankan      html  css  js  c++  java
  • SQL语句

    SELECT TOP, LIMIT, ROWNUM 子句
    SELECT TOP 子句用于规定要返回的记录的数目。
    注意:并非所有的数据库系统都支持 SELECT TOP 语句。 MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。
    SQL Server / MS Access 列:
    SELECT TOP number|percent column_name(s)

    FROM table_name;
    --前5
    select top 5 * from table
    --后5
    select top 5 * from table order by id desc  --desc 表示降序排列 asc 表示升序

    ------------------------------------------------
    MySQL 语法 列:
    SELECT *
    FROM Persons
    LIMIT 5;
    -----------------------------------------------------
    Oracle 语法 列:
    SELECT *
    FROM Persons
    WHERE ROWNUM <=5;

    --插入(三种插入)
    INSERT INTO table1(id, name, address) VALUES(1, ygl, 'beijing')
    SELECT id, name, address INTO table2 FROM table1——自动创建table2
    INSERT INTO table2(id, name, address) SELECT id, name, address FROM table1

    ---删除

    drop database 数据库名 --删除数据库的
    drop table 表名--删除表的
    delete from 表名 where 条件 --删除数据的
    truncate table 表名 也是删除数据库的.但是他可以裁断序列 这个你跟DELETE 对照试一下就知道了
    当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete.
    --删除已有字段
    ALTER TABLE test_tab

    DROP COLUMN user_number;

    ---修改
    update Customers set
    cust_email='kim@QQ.com'
    where cust_id='100005'
    多个列:
    UPDATE   Customerz
    SET   cust_email = ' kim@qq.com' , cust_contact  = 'Sam Roberts' 
    WHERE  cust_id = '10000005';

    把列中凡是有2011的全部修改成2014,如 lieming 里的201101131431改成201401131431,
    写法:update tab set lieming = replace(lieming,'2011','2014');

     comment on table YLGL_SFXMFL Is '医疗管理_收费项目分类';-----设置别名

    SQL AND & OR 运算符

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

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

    列:SELECT * FROM Websites
    WHERE alexa > 15
    AND (country='CN' OR country='USA');

    SQL IN 操作符

    IN 操作符允许您在 WHERE 子句中规定多个值。

    列:select  * from Websites
    WHERE name IN ('Google','菜鸟教程');

    IN 与 = 的异同

    • 相同点:均在WHERE中使用作为筛选条件之一、均是等于的含义
    • 不同点:IN可以规定多个值,等于规定一个值

    IN

    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...);

    =

    SELECT column_name(s)
    FROM table_name
    WHERE column_name=value1;

    in 与 = 的转换

    select * from Websites where name in ('Google','菜鸟教程');

    可以转换成 = 的表达:

    select * from Websites where name='Google' or name='菜鸟教程';
    SQL BEWEEN 操作符
    BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
    列:SELECT * FROM Websites
    WHERE alexa BETWEEN 1 AND 20;
    SELECT * FROM access_log
    WHERE date BETWEEN '2016-05-10' AND '2016-05-14';

    SQL INNER JOIN 关键字

    INNER JOIN 关键字在表中存在至少一个匹配时返回行。

    列:SELECT column_name(s)
    FROM table1
    JOIN table2
    ON table1.column_name=table2.column_name;

    SQL LEFT JOIN 关键字

    LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。

    列:SELECT column_name(s)
    FROM table1
    LEFT JOIN table2
    ON table1.column_name=table2.column_name;

    SQL FULL OUTER JOIN 关键字

    FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.

    FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。

    列:SELECT column_name(s)

    FROM table1
    FULL OUTER JOIN table2
    ON table1.column_name=table2.column_name;

    SQL UNION 操作符

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

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

    select country from websites union select country from apps;
    --连接两个表的查询结果集,重复的不显示
    select country from websites union all select country from apps order by country;
    --连接俩个个表的查询结果集,显示重复
    select country,name from websites where country = 'CN' union all 
    select country,app_name from apps where country='CN' order by name; 
    --通过where条件查询的结果,连接连个表的结果集,并根据名字排序。

     


    ------------------------------------函数用法-------------------------------------------------

    order by (asc升序;desc降序)

    order by A,B        这个时候都是默认按升序排列
    order by A desc,B   这个时候 A 降序,B 升序排列
    order by A ,B desc  这个时候 A 升序,B 降序排列

       即 desc 或者 asc 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。

        1.  select 字段列表/* from 表名 where 条件 order by 字段名1 asc/desc, 字段名2 asc/desc,.......

    列:SELECT column_name,column_name
    FROM table_name
    ORDER BY column_name,column_name ASC|DESC;

    保留小数:Round,Convert,CAST

    1.select Convert(decimal(18,2),2.176544)

    结果:2.18

    2.select CAST(2.176544 as decimal(18,2))

    结果:2.18

    3.select Round(2.176544,2) 四舍入

    结果:2.180000

    trunc(m,n) 不四舍五入,直接丢弃。

    select trunc(1.23856789,2)

    结果:1.23

    HAVING 子句

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

    HAVING 子句可以让我们筛选分组后的各组数据

    列:SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
    INNER JOIN access_log
    ON Websites.id=access_log.site_id
    WHERE Websites.alexa < 200
    GROUP BY Websites.name
    HAVING SUM(access_log.count) > 200

    UCASE() 函数

    UCASE() 函数把字段的值转换为大写

    LCASE() 函数

    LCASE() 函数把字段的值转换为小写。

    MID() 函数

    MID() 函数用于从文本字段中提取字符。

    列:SELECT substr(必需。要提取字符的字段。必需。规定开始位置(起始值是 1),可选要返回的字符数。如果省略,则 MID() 函数返回剩余文本)AS ShortTitl FROM Websites;

    LEN() 函数

    LEN() 函数返回文本字段中值的长度

    SELECT name, LENGTH(url) as LengthOfURL
    FROM Websites;

    NOW() 函数

    NOW() 函数返回当前系统的日期和时间

    SELECT name, url, Now() AS date
    FROM Websites

    FORMAT() 函数

    FORMAT() 函数用于对字段的显示进行格式化

    SELECT FORMAT(必需。要格式化的字段,必需。规定格式) FROM table_name;

    CASE:(列子) WHEN:(在...什么时候) THEN:(然后)

    --简单Case函数
    CASE sex
         WHEN'1' THEN'男'
         WHEN'2' THEN'女'
    ELSE'其他' END
    --Case搜索函数
    CASE WHEN sex = '1' THEN'男'
         WHEN sex = '2' THEN'女'
    ELSE'其他' END

     

     

     

     
    
    
  • 相关阅读:
    idea中pom.xml相关操作
    Java集合1-集合与数组的区别
    idea中各种图标的含义
    testng之多线程执行(并发执行)
    testng之DataProvider参数化
    fastjson将java对象与json字符串相互转换
    testng -依赖测试
    testng- 异常测试
    转-selenium3 webdriver启动火狐、chrome、edge、Safari浏览器的方法
    浏览器兼容性测试
  • 原文地址:https://www.cnblogs.com/FSH1014/p/10076016.html
Copyright © 2011-2022 走看看