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

 

 

 

 

原文地址:https://www.cnblogs.com/FSH1014/p/10076016.html