Oracle 基本数据查询
2011-08-02 11:19
483 查看
SELECT * FROM customers; SELECT * FROM customers WHERE customer_id = 2; SELECT ROWID,customer_id FROM customers; SELECT rownum, customer_id, first_name||' '||last_name FULL_NAME FROM customers; SELECT SYSDATE FROM DUAL; SELECT SYSDATE+2 FROM DUAL; SELECT TO_DATE(SYSDATE) - TO_DATE('2-JAN-2011') FROM DUAL; SELECT price*2 "Double Price" FROM products; SELECT * FROM customers WHERE dob IS NULL; --NVL的作用是将为空值的列加是默认值 SELECT CUSTOMER_ID, FIRST_NAME, LAST_NAME, NVL(DOB, '1-JAN-2000') AS DOB FROM customers; SELECT DISTINCT CUSTOMER_ID FROM purchases; SELECT * FROM customers WHERE customer_id <> 2; SELECT * FROM customers WHERE customer_id <= 3; --比较操作符 >、 <、 >=、 <=、 <>或!=、 ANY、 SOME、 ALL --只要大于ANY集合中的一个则满足条件 SELECT * FROM customers WHERE customer_id > ANY(2,3,4); --大于ALL中的所有数据才能为真 SELECT * FROM customers WHERE customer_id > ALL(2,3,4); --/*类似操作还有 --LIKE NOT LIKE --IN NOT IN --BETWEEN NOT BETWEEN --IS NULL IS NOT NULL --IS NAN IS NOT NAN NAN是非数字,NOT NAN是数字 --IS INFINITE IS NOT INFINITE --INFINITE是无穷的BINARY_FLOAT和BINARY_DOUBLE --*/ SELECT * FROM customers WHERE first_name NOT LIKE '_o%'; SELECT * FROM promotions WHERE name LIKE '%\%%' ESCAPE '\'; SELECT * FROM customers WHERE customer_id IN(2,3,4); SELECT * FROM customers WHERE customer_id NOT IN(2,3,4); --此处注意在子查询中要考虑返回值为空的时候需要用NVL函数, --否则NOT IN中只要有NULL值就会返回FALSE SELECT * FROM customers WHERE customer_id NOT IN(2,3,4,NULL); SELECT * FROM customers WHERE customer_id BETWEEN 1 AND 4; SELECT * FROM customers WHERE customer_id NOT BETWEEN 1 AND 4; --NAN的意思是非数字 SELECT * FROM customers WHERE customer_id IS NAN; --逻辑运算符AND OR NOT SELECT * FROM customers WHERE dob>'01-JAN-1970' AND customer_id>3; SELECT * FROM customers WHERE dob>'01-JAN-1970' OR NOT customer_id > 3; --ORDER BY进行排序 SELECT * FROM customers ORDER BY last_name; SELECT * FROM customers ORDER BY first_name ASC, last_name DESC; --直接用数字表示第几列 SELECT * FROM customers ORDER BY 1 ASC, 2 DESC; --多表连接查询 SELECT products.name, product_types.name FROM products, product_types WHERE products.product_type_id = product_types.product_type_id AND products.product_id = 3; SELECT products.name, product_types.name FROM products, product_types WHERE products.product_type_id = product_types.product_type_id ORDER BY products.name; --使用表别名 SELECT P.NAME, PT.NAME FROM products P, product_types PT WHERE p.product_type_id = pt.product_type_id ORDER BY p.name; --笛卡尔集 SELECT PT.product_type_id, P.product_id FROM product_types PT, products P; --多表连接查询 SELECT C.FIRST_NAME, C.LAST_NAME, P.NAME AS PRODUCT, PT.NAME AS TYPE FROM customers C, purchases PR, products P, product_types PT WHERE c.customer_id = pr.customer_id AND p.product_id = pr.product_id AND p.product_type_id = pt.product_type_id ORDER BY p.name; --不等连接 SELECT E.FIRST_NAME, E.LAST_NAME, E.TITLE, E.SALARY, SG.SALARY_GRADE_ID FROM employees E, salary_grades SG WHERE e.salary BETWEEN sg.low_salary AND sg.high_salary ORDER BY sg.salary_grade_id; --外连接('(+)'位于与含空值列相反的一边) SELECT P.NAME PRODUCT, PT.NAME TYPE FROM products P, product_types PT WHERE p.product_type_id = pt.product_type_id (+) ORDER BY p.name; --左外连接和右外连接 --左外连接 SELECT P.NAME PRODUCT, PT.NAME TYPE FROM products P, product_types PT WHERE p.product_type_id = pt.product_type_id (+) ORDER BY P.NAME; --右外连接 SELECT P.NAME PRODUCT, PT.NAME TYPE FROM products P, product_types PT WHERE p.product_type_id (+) = pt.product_type_id ORDER BY P.NAME; --外连接的限制 1、只能在连接的一端使用外连接操作符,不能在两端都使用外连接操作符 -- 2、不能同时会用一个外连接条件和另外一个使用OR操作符的连接条件 --自连接(同一个表进行连接, 必须会用不同的表别名来实现连接) SELECT W.FIRST_NAME||' '||W.LAST_NAME||' WORKS FOR ' ||M.FIRST_NAME||' '||M.LAST_NAME FROM employees W, employees M WHERE W.manager_id = M.employee_id ORDER BY W.first_name; SELECT W.FIRST_NAME||' '||W.LAST_NAME||' WORKS FOR ' ||M.FIRST_NAME||' '||NVL(M.LAST_NAME, 'shareholders') FROM employees W, employees M WHERE W.manager_id = M.employee_id (+) ORDER BY W.first_name; --内连接 SELECT P.NAME, PT.NAME FROM products P INNER JOIN product_types PT ON p.product_type_id = pt.product_type_id(+) ORDER BY p.name; SELECT E.FIRST_NAME, E.LAST_NAME, E.SALARY, SG.SALARY_GRADE_ID FROM employees E INNER JOIN salary_grades SG ON e.salary BETWEEN sg.low_salary AND sg.high_salary ORDER BY sg.salary_grade_id; --使用USING关键字(使用USING关键字的时候最好不要使用表别名,否则会出错) SELECT P.NAME, PT.NAME FROM products P INNER JOIN product_types PT USING(product_type_id) ORDER BY p.name; --多表内连接 SELECT C.LAST_NAME, P.NAME AS PRODUCT, PT.NAME AS TYPE FROM customers C INNER JOIN purchases PR USING (customer_id) INNER JOIN products P USING (product_id) INNER JOIN product_types PT USING (product_type_id) ORDER BY p.name; --多列内连接 --SELECT * FROM --TABLE1 INNER JOIN TABLE2 --USING(COLUMN1,COLUMN2,…); --使用USING关键字的外连接 --左外连接 SELECT P.NAME, PT.NAME FROM products P LEFT OUTER JOIN product_types PT USING(product_type_id); --右外连接 SELECT P.NAME, PT.NAME FROM products P RIGHT OUTER JOIN product_types PT USING(product_type_id); --全外连接 SELECT P.NAME, PT.NAME FROM products P FULL OUTER JOIN product_types PT USING(product_type_id);
相关文章推荐
- Oracle基本操作--数据查询
- Oracle学习之路(一):oracle简介+基本sql语句+条件查询+排序数据理论与案例
- oracle心得1--oracle简介@基本sql语句@条件查询@排序数据理论与案例
- oracle的表的数据管理2 -- 基本查询
- oracle心得1--oracle简介@基本sql语句@条件查询@排序数据理论与案例
- oracle心得1--oracle简介@基本sql语句@条件查询@排序数据理论与案例
- Oracle技术之利用数据泵导出查询结果(一)
- 写一段Jdbc连Oracle的程序,并实现数据查询.
- Oracle数据字典查询技巧
- oracle 实现按周,月,季度,年查询统计数据
- ORACLE查询数据闪回SQL语法
- oracle 查询语句基本知识
- Mysql查询数据第一讲之查询数据基本语法
- Oracle基本数据类型存储格式浅析
- Oracle基本查询
- oracle查询包含大小写的数据
- oracle分页查询数据重复问题的解决
- ORACLE-用户常用数据字典的查询使…
- oracle的查询数据表(二)
- oracle 基本查询