下载 > 资源分类 >  数据库 >  MySQL > SQL 基础--SELECT 查询

SQL 基础--SELECT 查询

2013-09-11 上传大小:77KB

一、SQL 结构化查询语言
	包括DDL(数据定义语言)、DCL(数据控制语言)、
	DQL(数据查询语言)、DML(数据操纵语言)
 
二、SQL的特点
	SQL 语句不区分大小写
	SQL 语句能输入一行或多行
	关键字不能整行缩写或分离
	子句通常被放置在分开的行上
	缩进可提高可读性
	在SQL 开发工具,SQL 语句能选择分号结束(;) .当你运行多个SQL 语句的时候,需要分号
	在S
QL*Plus中, 你要用一个分号结束每个SQL 语句.(;)
 
三、SQL*PLUS特征:
	字符日期左对齐
	数字右对对齐
	列名默认大写
	SQL PLUS 自己的命令不需以分号“;”结束
 
四、SQL查询时,数字和日期类型的数据可用算术运算符
	+ 	加
	-	减
	*	乘
	/	除
	( )	用于改变运算符的优先级
 
五、空值
	空值一般用NULL表示
	一般表示未知的、不确定的值,也不是空格
	一般运算符与其进行运算时,都会为空
	空不与任何值相等
 
	表示某个列为空用:IS NULL  不能使用COMM=NULL这种形式
	某个列不为空:IS NOT NULL 不能使用COMM != NULL	这种形式
 
	空值在作升序排列时,空值会放到最后。
	相反作降序排列时,空值会放在最前。
 
	空值作逻辑运算时:
	AND运算:
	F AND F =F		F AND T =F		F AND NULL =F
	T AND F =F		T AND T =T		T AND NULL IS NULL
	NULL AND F =F 	NULL AND T IS NULL	NULL AND NULL IS NULL
 
	就是说AND的优先级是:F ->NULL ->T
 
 
	OR运算:
	T OR T =T 		T OR F =T 		T OR NULL =T
	F OR T =T		F OR F =F 		F OR NULL IS NULL
	NULL OR T =T	NULL OR F IS NULL	NULL OR NULL IS NULL
 
	OR运算优先级:T ->NULL ->F
 
 
	NOT运算:
		NOT T =F
		NOT F =T
		NOT NULL IS NULL
 
 
	与空值相关的函数:
	NVL	函数
		格式:NVL(表达式1,表达式2)
		作用:测试表达式的值,如果表达式1为空,则返回表达式2的值;不为空,返回表达式1的值。
 
	NVL2	函数
		格式:NVL2(表达式1,表达式2,表达式3)
		作用:测试表达式的值,表达式1不为空,返回表达式2的值,如果为空,则返回表达式3的值。
 
 
	NULLIF  相等为空
		格式:NULLIF (表达式1,表达式2)
		作用:比较表达式1和表达式2的值,如果两个相等则返回为空,否则返回表达式1的值。
 
	COALESCE    找非空
		格式:COALESCE (表达式1,表达式2,表达式3,...,表达式n)
		作用:返回第一个不为空的值,如果所有的都为空,则返回NULL。
 
 
六、SELECT语句的用法
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
 
七、演示   */
 
--选择所有字段
SQL> SET LINESIZE 200
SQL> SELECT * FROM SCOTT.EMP;
 
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7369 SMITH      CLERK           7902 17-DEC-80        800                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
 
--选择部分字段
SQL> SELECT EMPNO,ENAME,SAL FROM SCOTT.EMP;
 
     EMPNO ENAME             SAL
---------- ---------- ----------
      7369 SMITH             800
      7499 ALLEN            1600
      7521 WARD             1250
 
--算术加减运算
SQL> SELECT EMPNO,ENAME,SAL + 300 FROM SCOTT.EMP;
 
     EMPNO ENAME         SAL+300
---------- ---------- ----------
      7369 SMITH            1100
      7499 ALLEN            1900
      7521 WARD             1550
 
--优先级
SQL> SELECT EMPNO,ENAME,12 * (SAL + 300) FROM SCOTT.EMP;
 
     EMPNO ENAME      12*(SAL+300)
---------- ---------- ------------
      7369 SMITH             13200
      7499 ALLEN             22800
      7521 WARD              18600
 
SQL> SELECT EMPNO,ENAME,12 * SAL + 300 FROM SCOTT.EMP;
 
     EMPNO ENAME      12*SAL+300
---------- ---------- ----------
      7369 SMITH            9900
      7499 ALLEN           19500
      7521 WARD            15300
 
--NULL,记录中COMM存在为NULL的情况
SQL> SELECT EMPNO,ENAME,SAL,COMM FROM SCOTT.EMP;
 
     EMPNO ENAME             SAL       COMM
---------- ---------- ---------- ----------
      7369 SMITH             800
      7499 ALLEN            1600        300
      7521 WARD             1250        500
      7566 JONES            2975
 
--与NULL运算,结果为NULL
SQL> SELECT EMPNO,ENAME,SAL,COMM + 300 FROM SCOTT.EMP;
 
     EMPNO ENAME             SAL   COMM+300
---------- ---------- ---------- ----------
      7369 SMITH             800
      7499 ALLEN            1600        600
      7521 WARD             1250        800
      7566 JONES            2975
 
--将COMM不为NULL的记录的COMM乘以 
SQL> SELECT EMPNO,ENAME,SAL,COMM * 12 FROM SCOTT.EMP  WHERE COMM IS NOT NULL
 
     EMPNO ENAME             SAL    COMM*12
---------- ---------- ---------- ----------
      7499 ALLEN            1600       3600
      7521 WARD             1250       6000
      7654 MARTIN           1250      16800
      7844 TURNER           1500          0
 
--字段别名,字段后用AS 别名,AS可以省略
SQL> SELECT EMPNO,ENAME AS EmpName,SAL Salary FROM SCOTT.EMP;
 
     EMPNO EMPNAME        SALARY
---------- ---------- ----------
      7369 SMITH             800
      7499 ALLEN            1600
      7521 WARD             1250
      7566 JONES            2975
--DISTINCT,过滤重复行
SQL> SELECT DISTINCT EMPNO,ENAME FROM SCOTT.EMP;
 
--连接操作符,通过二个垂直的条描述(||),注意,日期和文字数值一定嵌入在单引号里面
SQL> SELECT EMPNO,ENAME || ' IS A ' ||JOB AS POSITION FROM SCOTT.EMP;
 
     EMPNO POSITION
---------- -------------------------
      7369 SMITH IS A CLERK
      7499 ALLEN IS A SALESMAN
      7521 WARD IS A SALESMAN
 
--DESC table_name,显示表结构信息
SQL> DESC SCOTT.EMP
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)
 
 --NVL的用法
 SQL> SELECT EMPNO,ENAME,NVL(TO_CHAR(COMM),'Not Applicable') FROM SCOTT.EMP;
 
     EMPNO ENAME      NVL(TO_CHAR(COMM),'NOTAPPLICABLE')
---------- ---------- ----------------------------------------
      7369 SMITH      Not Applicable
      7499 ALLEN      300
      7521 WARD       500
      7566 JONES      Not Applicable
	  
--NVL2的用法
SQL> SELECT empno,ename,sal,NVL2(TO_CHAR(comm),12 * (sal + comm),sal) AS Income FROM scott.emp;
 
     EMPNO ENAME             SAL     INCOME
---------- ---------- ---------- ----------
      7369 SMITH             800        800
      7499 ALLEN            1600      22800
      7521 WARD             1250      21000
      7566 JONES            2975       2975
 
--NULLIF的用法
--等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
	  SQL> SELECT e.last_name, NULLIF(e.job_id, j.job_id) "Old Job ID"
  2     FROM hr.employees e, hr.job_history j
  3     WHERE e.employee_id = j.employee_id
  4     ORDER BY last_name, "Old Job ID";
 
LAST_NAME                 Old Job ID
------------------------- ----------
De Haan                   AD_VP
Hartstein                 MK_MAN
Kaufling                  ST_MAN
Kochhar                   AD_VP
Kochhar                   AD_VP
Raphaely                  PU_MAN
Taylor                    SA_REP
Taylor
Whalen                    AD_ASST
Whalen
 
--下面是使用CASE WHEN的等价用法
SQL> SELECT e.last_name, CASE WHEN e.job_id = j.job_id THEN NULL ELSE e.job_id END AS "Old Job ID"
  2  FROM hr.employees e, hr.job_history j
  3  WHERE e.employee_id = j.employee_id
  4  ORDER BY last_name, "Old Job ID";
 
LAST_NAME                 Old Job ID
------------------------- ----------
De Haan                   AD_VP
Hartstein                 MK_MAN
Kaufling                  ST_MAN
Kochhar                   AD_VP
Kochhar                   AD_VP
Raphaely                  PU_MAN
Taylor                    SA_REP
Taylor
Whalen                    AD_ASST
Whalen
 
--COALESCE的用法
--当COALESCE(exp1,exp2)包含两个表达式时,等价于CASE WHEN exp1 IS NOT NULL THEN exp1 ELSE exp2 END
--COALESCE (expr1, expr2, ..., exprn), for n>=3
--当n >= 3时,等价于
--CASE WHEN expr1 IS NOT NULL THEN expr1 
--   ELSE COALESCE (expr2, ..., exprn) END
SQL> SELECT product_id, list_price, min_price,
  2  COALESCE(0.9*list_price, min_price, 5) "Sale"
  3  FROM oe.product_information
  4  WHERE supplier_id = 102050
  5  ORDER BY product_id, list_price, min_price, "Sale"
  
PRODUCT_ID LIST_PRICE  MIN_PRICE       Sale
---------- ---------- ---------- ----------
      1769         48                  43.2
      1770                    73         73
      2378        305        247      274.5
      2382        850        731        765
      3355                                5
 
八、更多
...展开收缩
综合评分:3(3位用户评分)
开通VIP C币充值 立即下载

评论共有0条

登录后才能评论

 

相关推荐

SQL语句select用法详解 立即下载
积分/C币:3
SQL Select语句完整的执行顺序 立即下载
积分/C币:3
北大青鸟 y2 Java和C# 和SQL select笔试题 特献给大家分享 立即下载
积分/C币:3
sql_select语句 立即下载
积分/C币:0
oracle sql语句(除select语句) 立即下载
积分/C币:0
SQL语言—SELECT更新操作 立即下载
积分/C币:0
sql语句中select top n与oracle的rownum与mysql的limit用法 立即下载
积分/C币:3
02基础选择器--select和selecAll,源码 立即下载
积分/C币:3
1.尚硅谷佟刚_SQL_基本SQL SELECT语句 立即下载
积分/C币:3
oracle之select查询 立即下载
积分/C币:0
select interface查詢介面 立即下载
积分/C币:3
select case用法课程表查询系统,VB6.0源代码 立即下载
积分/C币:3
jQuery下拉查询筛选插件Combo Select 立即下载
积分/C币:5
SELECT语句查询记录 立即下载
积分/C币:0
下拉模糊查询jQuery-select 立即下载
积分/C币:3
Select查询语句基本语法及常用语句 立即下载
积分/C币:3
select 查询语句练习 立即下载
积分/C币:3
SQL查询语句基础 立即下载
积分/C币:0
数据库T_SQL查询基础5.ppt 立即下载
积分/C币:3
SQL结构化查询语法基础 立即下载
积分/C币:3

热门专辑

VIP会员动态

关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
确认下载
img

SQL 基础--SELECT 查询

会员到期时间: 剩余下载个数: 剩余C币:593 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
C币充值 开通VIP
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可奖励5下载分

  • 举报人:
  • 被举报人:
  • 举报的资源分:
  • *类型:
  • *详细原因: