码迷,mamicode.com
首页 > 数据库 > 详细

为SQL零基础同学提供的入门资料

时间:2016-06-07 19:03:35      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

资料来自《SQL必知必会》

一.检索数据

SELECT

l  检索单个列

Select列from 表;

l  检索多个列

Select 列,列 from 表;

l  检索所有列

Select * from 表;

 

二.排序检索数据

l  排序

Select 列 from 表 order by 列;

l  按多个列排序

Select 列,列,… from 表 order by 条件A,条件B;

先按条件A排序,再按B排

l  按列位置排序

Select 列 from 表 order by 2,3;

按第二列和第三列排序

l  按指定位置排序

DESC降序,ASC升序

Select 列 from 表 order by 列 DESC,列,…

 

三.过滤数据

l  使用where字句

Select 列 from 表 where 条件

操作符

描述

=

等于

<> 

不等于

大于

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜索某种模式

!=

不等于

!<

不小于

!>

不大于

IS NULL

为NULL值

l  检查单个值

Select 列 from 表 where 列 运算符 值

l  不匹配检查

Select 列 from 表 where 列 不等于 条件

l  范围值检查

Select 列 from 表 where 列 BETWEEN 值 AND 值

l  空值检查

Select 列 from 表 where 列 IS NULL;

 

四.高级数据过滤

l  组合WHERE字句

l  操作符

l  AND

Select 列 from 表 where 列 条件 and 列 条件

l  OR

Select 列 from 表 where 列 条件 or 列 条件

l  AND和OR组合

SQL在处理OR操作符前,优先处理AND操作符,如果要优先处理OR,则要用圆括号括起来。

l  IN

IN操作符用来指定条件范围,范围中每个条件都可以进行匹配。

Select 列 from 表 where 列 in (条件,条件,…)

字符串记得用单引号包含起来

l  NOT

否定NOT之后所跟的任何条件。

Select 列 from 表 where not 列 条件

 

五.用通配符进行过滤

通配符:用来匹配值的一部分的特殊数字符

通配符搜索只能用于文本字段。

注意:根据DBMS的不同及其配置,搜索可以是区分大小写的。

l  LIKE操作符

l  百分号(%)通配符

%表示任何字符出现任意次数

Select 列 from 表 where 列 like ‘%文本%’;

l  下划线(_)通配符

用途与%一样,但是下划线只匹配单个字符

l  方括号([])通配符

指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符

例如为了找出所有名字以J或M起头的联系人

Select 列 from 表 where 列 like ‘[JM]%’

此通配符可以用^来否定

 

六.创建计算字段

l  拼接字段

在SQL中的SELECT语句中,可以使用一个特殊的操作符来拼接两个列:加号或者两个竖杠。

p.s.我在oracle中只能用||,不知是不是自己打错了

 

去掉空格可以使用SQL的RTRIM()函数完成

p.s 为啥我上边没加RTRIM也没有空格,和书上不太一样~

 

l  使用别名

列别名是一个字段或值的替换名

 

l  执行算数计算

Select 计算公式 as 别名 from 表 where 条件

 

七.使用函数

l  文本处理函数

UPPER() 将文本转换为大写

Select 列,upper(列) as 别名 from 表 order by 列

常用文本处理函数

LEFT()

返回串左边的字符

LENGTH()

返回串的长度

LOWER()

将串转换为小写

LTRIM()

去掉串左边的空格

RIGHT()

返回串右边的字符

RTRIM()

去掉串右边的空格

SOUNDEX

返回串的SOUNDEX值

UPPER()

将串转换为大写

 

SOUNDEX是一个将任何文本串转换为描述其语音标识的字母数字模式的算法

EXAMPLE:

Select 列 from 表 where soundex(列)=SOUNDEX(‘Michael Green’)

它匹配所有发音类似于Michael Green的联系名。

l  日期和时间处理函数

DATEPART():返回日期的某一部分

检索2004年所有订单

Select 列 from 表 where datepart(yy,列) = 2004;年所有订单

注意:ORACLE没有DATEPART()函数

DD-MMM-YYYY格式的日期一般能被ORACLE正确处理

Select 列 from 表 where to_number(to_char(order_date,’YY’)) = 2004;

to_number() 用来将提取出来的成分转换为数值

to_char()函数用来提取日期的成分

select 列 from 表 where order_date BETWEEN to_date(’01-JAN-2004’) AND to_date(’31-DEC-2004’);

l  数值处理函数

ABS()

绝对值

COS()

余弦

EXP()

指数值

PI()

圆周率

SIN()

正弦

SQRT

平方根

TAN

正切

 

八.汇总数据

l  SQL聚集函数

AVG()

平均值

COUNT()

行数

MAX()

最大值

MIN()

最小值

SUM()

某列之和

AVG()

select AVG(列) as 别名 from 表;

COUNT

select COUNT(列) as 别名 from 表;

其他几个类似,不赘述了。

l  聚集不同值

select AVG(DISTINCT 列) as 别名 from 表 where 条件

l  组合聚集函数

select count(*)  as 别名

min(列名)  as 别名

max(列名)  as 别名

avg(列名)  as 别名 from 表;

 

九.分组数据

l  数据分组

select 列,count(*) as 别名 from 表 group by 要按着分组的列;

l  过滤分组

select 列,count(*) as 别名 from 表 group by 要按着分组的列 having count(*) 条件

HAVING和WHERE的区别:WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。

l  分组和排序

select 列,count(*) as 别名 from 表 group by 要按着分组的列 having count(*) 条件 ORDER BY 列;

l  select字句顺序

select

from

where

group by

having

order by

 

十.使用子查询

l  利用子查询进行过滤

假如信息存储在很多个表中

select 列 from 表 where 列 in (select 列 from 表 where 条件)

在SELECT语句中,子查询总是从内向外处理。

l  作为计算字段使用子查询

select 列,列,(select count(*) from 列 where 条件) as 别名 from 表 order by 列;

 

十一.联结表

SQL最强大的功能之一就是能在数据查询的执行中联结(join)表。

如果数据存储在多个表中,怎样用单条select语句检索出数据?答案是使用联结。

  • 创建联结
select 列,列,列 fromINNER JOINON 条件;

联结条件用特定的ON字句而不是WHERE字句给出。

 

为SQL零基础同学提供的入门资料

标签:

原文地址:http://www.cnblogs.com/zzhzhao/p/5567782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!