首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

关于oracle数据库-根本 SQL SELECT 语句

2012-11-26 
关于oracle数据库-----基本 SQL SELECT 语句基本SELECT语句:SELECT标识选择哪些列。FROM标识从哪个表中选择

关于oracle数据库-----基本 SQL SELECT 语句
基本SELECT语句:SELECT  标识选择哪些列。FROM      标识从哪个表中选择。----SELECT  *|{[DISTINCT]column|expression[alias],...}FROM table; * 选择全部列----SELECT * FROM   departments; 选择特定的列

----SELECT department_id,location_idFROM  departments;

注意     SQL语言大小写不敏感。     SQL可以写在一行或者多行     关键字不能被缩写也不能分行     各子句一般要分行写。     使用缩进提高语句的可读性。

算术运算符

     *     /     +     -  

     乘除的优先级高于加减     优先级相同时,按照从左至右运算     可以使用括号改变优先级

定义空值

     空值是无效的,未指定的,未知的或不可预知的值

     空值不是空格或者0。空值在数学运算中的使用     包含空值的数学表达式的值都为空值列的别名:     重命名一个列。     便于计算。     紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。     AS可以省略

|| 连接符

     把列与列,列与字符连接在一起。     用‘||’表示。     可以用来‘合成’列。

重复行

     默认情况下,查询会返回全部行,包括重复行,在SELECT子句中使用关键字‘DISTINCT’删除重复行

     SELECT DISTINCTdepartment_idFROM  employees;

where 过滤

    使用WHERE子句,将不满足条件的行过滤掉。

    SELECT employee_id,last_name, job_id, department_idFROM  employeesWHERE  department_id = 90 ;

    ***WHERE子句紧随FROM子句字符和日期

    字符和日期要包含在单引号中。    字符大小写敏感,日期格式敏感。    l默认的日期格式是DD-MON-RR。

    SELECT last_name,job_id,department_idFROM  employeesWHERE last_name='Whalen';

比较运算:

     BETWEEN    1  AND   10  在两个值之间(包含边界)   

     使用BETWEEN运算来显示在一个区间内的值

     SELECT last_name,salaryFROM  employeesWHERE salaryBETWEEN 2500 AND 3500;

 

     IN(set)   等于值列表中的一个

     使用IN运算显示列表中的值。

     SELECT employee_id,last_name, salary,manager_idFROM  employeesWHERE manager_idIN (100, 101, 201);

 

     LIKE   模糊查询

    使用LIKE运算选择类似的值     l选择条件可以包含字符或数字:     ?%代表零个或多个字符(任意个字符)

     SELECT  first_nameFROM  employeesWHERE first_nameLIKE 'S%';

     ?_代表一个字符

     SELECT  first_nameFROM  employeesWHERE first_nameLIKE 'S_';

     ?‘%’和‘-’可以同时使用

     SELECT last_nameFROM  employeesWHERE last_nameLIKE '_o%';

      可以使用ESCAPE标识符选择‘%’和‘_’符号,代表取\后面字符的本意,在下面的sql语句中‘_’不代表一个字符,就代表_

     SELECTemployee_id,last_name,job_id FROM  employees   WHERE job_id LIKE  '%SA\_%'ESCAPE '\';

 

     IS NULL   空值     使用IS (NOT)NULL判断空值。

     SELECT last_name,manager_idFROM  employeesWHERE manager_idIS NULL;

使用ORDERBY子句排序     ?ASC(ascend):升序     ?DESC(descend):降序     ?ORDERBY子句在SELECT语句的结尾。     ?默认是升序排序

      SELECT   last_name,job_id,department_id,hire_dateFROM     employeesORDER BY hire_date;

降序排序

     SELECT   last_name,job_id,department_id,hire_dateFROM    employeesORDER BY hire_date DESC;

 

单行函数     操作数据对象     接受参数返回一个结果     只对一行进行变换     每行返回一个结果     可以转换数据类型     可以嵌套     参数可以是一列或一个值这类函数改变字符的大小写:     LOWER('SQLCourse')  结果course

     UPPER('SQLCourse')  结果 COURSE

     INITCAP('SQLCourse')    结果   Course

字符控制函数

     CONCAT('Hello','World') 结果 HelloWorld

     SUBSTR('HelloWorld',1,5) 结果 Hello

     LENGTH('HelloWorld') 结果 10

     INSTR('HelloWorld','W')  结果 6

LPAD(salary,10,'*') 结果 *****24000

     RPAD(salary,10, '*')  结果  24000*****

     TRIM('H' FROM 'HelloWorld')  结果 elloWorld

     replace('abcd','b', 'm') 结果amcd

日期

     Oracle 中的日期型数据实际含有两个值: 日期和时间。     默认的日期格式是DD-MON-RR.            函数SYSDATE返回:                日期                时间

                  SELECTSYSDATE    FROM  DUAL; 显示系统日期

                  select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 显示日期和时间

CASE表达式

     在需要使用IF-THEN-ELSE逻辑时

     CASEexprWHENcomparison_expr1THENreturn_expr1

         [WHEN comparison_expr2THEN return_expr2

          WHENcomparison_exprnTHENreturn_exprn

          ELSEelse_expr]

     END

分组函数

     分组函数作用于一组数据,并对一组数据返回一个值。

组函数类型

     不能在 WHERE子句中使用组函数。    

     AVG(平均值), COUNT(计数),  MAX(最大值), MIN(最小值), SUM(合计)

     可以对数值型数据使用AVG和SUM函数。

     可以对任意数据类型的数据使用MIN和MAX函数。

     COUNT(*)返回表中记录总数。

     DISTINCT(distinct)关键字

     -------------COUNT(DISTINCTexpr)返回expr非空且不重复的记录总数

GROUP BY子句语法

     可以使用GROUPBY子句将表中的数据分成若干组

     在SELECT列表中所有未包含在组函数中的列都应该包含在GROUPBY子句中。

     -------------------SELECT   department_id, AVG(salary)FROM    employees GROUP BY department_id ;

     包含在GROUPBY 子句中的列不必包含在SELECT列表中

     -------------------SELECT   AVG(salary) FROM     employees  GROUP BY department_id ;

    在GROUPBY子句中包含多个列

     -------------------SELECT   department_iddept_id,job_id, SUM(salary)FROM    employees GROUP BY department_id, job_id ;

 多表查询

    使用连接在多个表中查询数据。

     在 WHERE字句中写入连接条件。     在表中有相同列时,在列名之前加上表名前缀

     --------------------SELECT  table1.column,table2.columnFROM  table1, table2WHERE table1.column1=table2.column2;

表的别名

    ---------------------SELECT e.employee_id,e.last_name,e.department_id,d.department_id,d.location_idFROM  employees e , departments d WHERE e.department_id =d.department_id;

     使用别名可以简化查询。     使用表名前缀可以提高执行效率。     如果使用了表的别名,则不能再使用表的真名。子查询:     子查询 (内查询) 在主查询之前一次执行完成。     子查询的结果被主查询使用 (外查询)。注意事项     子查询要包含在括号内。     将子查询放在比较条件的右侧。     单行操作符对应单行子查询,多行操作符对应多行子查询。

多行子查询

    IN    等于列表中的任何一个  

    ANY    和子查询返回的任意一个值比较

     -------在多行子查询中使用ANY操作符

      --------------SELECT employee_id,last_name,job_id, salary FROM   employees WHERE salary < ANY (SELECT salary FROM   employees WHERE  job_id = 'IT_PROG')

AND    job_id <> 'IT_PROG';

 

    ALL   和子查询返回的所有值比较

    ---------在多行子查询中使用ALL操作符

     ---------------SELECT employee_id,last_name,job_id, salary FROM  employeesWHERE  salary < ALL (SELECT salary FROM   employees WHERE  job_id = 'IT_PROG')

AND    job_id <> 'IT_PROG';

 

热点排行