Oracle query statements and the use of finishing

Based on long useless to Oracle recently little miss, read a lot of blog so far not seen the satisfaction of finishing therefore, of course, this is on the basis of another set of Cartesian and post-function code, beginner Oracle database people will often some books or video courses mentioned in several common database tables, such as EMP / DEPT / sALGRADE these and other specific forms of what is in place to use it? We must first clear these tables here: these tables are stored in the system account SCOTT, use the following command to configure, small series uses a login PLSQL Oracle SQL statements to activate the user scott .

SQL is a language which is the basic language of relational database operations (mainly relational database: SQL SERVER, MySQL, Oracle)

SQLPlus he is an environment, the client tools to interact with Oracle databases

SQL statements are not case-sensitive; keywords can not be abbreviated, for example: SELECT

SQLPlus command is not case-sensitive; keywords can be abbreviated, for example: CONNECT - "CONN

SQL statement and statement SQLPlus common key functions

--SQL语句
CREATE 创建
ALTER  修改
DROP, TRUNCATE, DELETE   删除
SELECT 查询
INSERT 插入
UPDATE 更新,修改
GRANT  REVOKE DCL定义权限
COMMIT,ROLLBACK,SAVEPOINT TCL控制语言
SQL语句需要以“;”号结束
--SQLPlus命令
Desc[RIBE] 用于列出数据库对象的定义
SHOW 用于显示环境变量值,例如show databases
Conn[ECT],COL[UMN],PASS[WORD]等

Real change password

--SQL语句
ALTER USER 用户名 IDENTIFIED BY 新密码;
--SQLPlus命令
PASSWORD:该命令用于修改用户的口令
PASSW[ORD][USERNAME],USERNAME用于指定用户名,修改注意的是如果修改其它用户口令则需要一DBA身份进行登录(SYS和SYSTEM)
举例说明:CMD输入SQLPlus--》用户名--》用户密码--》结果进入该用户

Lookup table alias table fields

--SQL语句
SELECT ENAME AS '雇员名',SAL AS '工资' FROM EMP;
--SQLPlus命令
col ename heading '雇员名'
col sal heading '工资'
select ename,sal from emp

After the query results prove successful it has been modified, of course, users can enter their own making modifications

--在scott用户下面默认的scott用户是被锁定的先解锁就能登陆上了使用下面的语句解锁scott: 
alter user scott account unlock; 
--解锁之后可能会要求你修改密码: 
alter user scott identified by newpassword; 
--再登陆: 
sqlplus scott/newpassword
SELECT * FROM EMP查询结果如下
1	7369	SMITH	CLERK	7902	1980/12/17	800.00		20
2	7499	A_LLEN	SALESMAN	7698	1981/2/20	1600.00	300.00	30
3	7521	WARD	SALESMAN	7698	1981/2/22	1250.00	500.00	30
4	7566	JONES	MANAGER	7839	1981/4/2	2975.00		20
5	7654	MARTIN	SALESMAN	7698	1981/9/28	1250.00	1400.00	30
6	7698	BLAKE	MANAGER	7839	1981/5/1	2850.00		30
7	7782	CLARK	MANAGER	7839	1981/6/9	2450.00		10
8	7788	SCOTT	ANALYST	7566	1987/4/19	3000.00		20
9	7839	KING	PRESIDENT		1981/11/17	5000.00		10
10	7844	TURNER	SALESMAN	7698	1981/9/8	1500.00	0.00	30

First, the basic structure of the query syntax

--讲一下本文章的大纲先来熟悉一下
SELECT * |{[DISTINCT]COLUMN | EXPRESSION [ALIAS],...}
FROM TABLE [WHERE CONDITION]
TABLE  用于指定表名
COLUMN 用于指定列名
EXPRESSION 用于指定表达式
ALIAS 用于指定列的表名
CONDITION 用于指定查询条件
--特定列查询也就是常说的根据表字段查到具体的某个值
--全部列查询 这个就是不加表字段条件
--排除重复行关键字 distinct 
--条件查询:过滤数据(比较运算符的使用,范围查询,空值判断,逻辑运算符的使用)

Distinct here to speak about the beginning because Xiao Bian also a bit ignorant to the whole (is needed here is exactly the same table field before they can take effect or not)

--排除重复行关键字 distinct
基本格式:Select  Distinct 列名  * From Table
原始数据查询:举例:SELECT deptno,job From EMP;
1	20	CLERK
2	30	SALESMAN
3	30	SALESMAN
4	20	MANAGER
5	30	CLERK
--需要注意的是当重复的数据中有空的表字段时也会查询出来
去重处理查询举例:SELECT DISTINCT(deptno),job From EMP;
1	20	CLERK
2	30	SALESMAN
3	20	MANAGER
4	30	CLERK

Column Field single-table queries

SELECT * FROM EMP
EMPNO,ENAME,MGR,SAL 分别对应雇员编号,雇员名,工资,补助
别名 AS 后可以加''可不加 FROM 来自于哪个表
连接符 || 举例:SELECT ENAME||'的岗位是:'||JOB FROM EMP
字符串可以使SELECT列表中的字符,数字,日期,每次返回一行是字符串也会被输出一次
--应用scott.emp表查询雇员编号,雇员名,雇员名称,雇员的年收入
SELECT EMPNO,ENAME,MGR,MGR*12 AS SUM_MONKEY FROM EMP
--查看雇员编号,雇员名,年收入(年薪加半月工资)
SELECT EMPNO,ENAME,MGR*12+MGR/2 AS Year_MONKEY FROM EMP
--查看雇员编号,雇员名,加1薪后的年收入
SELECT EMPNO,ENAME,MGR*12+MGR AS Year_MONKEY FROM EMP
--查看雇员编号,雇员名,每月工资涨5200后的年收入
SELECT EMPNO,ENAME,(MGR+5200)*12 AS Year_MONKEY FROM EMP
--查询雇员编号,雇员名,工资,补助计算出实发工资的信息
SELECT EMPNO,ENAME,MGR+SAL FROM EMP --需要注意的是在算术运算中有NULL时,其显示为NULL

Query Settings formatting and introducing the characters of the date column

--查询的数据类型为日期类型的列,如DATA类型,默认显示格式为DD--MON-RR;
alter session set nls_language='SIMPLIFIED CHINESE'; --设置简体中文格式
alter session set nls_language='AMERICAN' --设置美国英语格式
alter session set nls_date_format='YYYY/MM/DD'; --设置特定格式
--熟悉在WHERE子句中使用数字值,字符值,日期值的格式,可直接引用数字值,也可以但引号引入字符值
--关键字 WHERE
数字值举例:SELECT * FROM EMP WHERE DEPTNO=20;
字符值举例:SELECT * FROM EMP WHERE ENAME='SCOTT';
日期值举例:SELECT * FROM EMP WHERE HIREDATE='1980/12/17';

Second, the query conditions: filter data (comparison operators, range queries, a null value is determined, using logical operators such as)

=> <> = <= <> Or! = Comparison operators

--比较运算符 = > < >= <= <>或者写成!=
等于运算举例:查询EMP表中MGR等于7698的用户信息
SELECT * FROM EMP WHERE MGR=7698;
大于运算举例:查询EMP表中MGR大于等于7698的用户信息
SELECT * FROM EMP WHERE MGR>=7698;
小于运算举例:查询EMP表中MGR小于7698的用户信息
SELECT * FROM EMP WHERE MGR<7698;
大于等于举例:查询EMP表中MGR大于等于7698的用户信息
SELECT * FROM EMP WHERE MGR>=7698;
大于小于举例:查询EMP表中MGR大于等于7698的用户信息
SELECT * FROM EMP WHERE MGR>7698 AND MGR<7789;
小于等于举例:查询EMP表中MGR小于等于7698的用户信息
SELECT * FROM EMP WHERE MGR<=7698;
不等于运算举例:查询EMP表中MGR不等于7698的用户信息
SELECT * FROM EMP WHERE MGR!=7698;

Between ... And the scope of inquiry

--范围查询 BETWEEN ... AND 用于指定俩者键包含的边界
--语法格式:BETWEEN 较小值 AND 较大值
--举例:查询出EMP表中MGR是7521-8000的用户信息
SELECT * FROM EMP WHERE MGR>=7521 AND MGR<=8000;
等价于:SELECT * FROM EMP WHERE MGR BETWEEN 7521 AND 8000;
--范围查询 IN 执行列或表达式结果匹配列表中的任意一个值
--语法格式:IN(值1,值2,...值n)
举例:查询出EMP表中JOB是MANAGER,CLERK的用户信息
SELECT * FROM EMP WHERE JOB IN('MANAGER','CLERK');
等价于:SELECT * FROM EMP WHERE JOB='MANAGER' OR JOB='CLERK';

LIKE% _ and ESCAPE fuzzy query

--模糊查询LIKE 当执行模糊查询是需要使用通配符%或者_
通配符%:用于表示0个或者多个字符
通配符_:用于表示单个字符
举例说明:查询出EMP表中ENAME以S开头的用户信息
SELECT * FROM EMP WHERE ENAME LIKE 'S%';
等价于:SELECT * FROM EMP WHERE ENAME LIKE 'S____';
同理等价于:SELECT * FROM EMP WHERE ENAME LIKE 'S_%';
--模糊查询中特殊符号的处理 关键符 ESCAPE \
举例:查询出EMP表中ENAME中A开头第二个为_的用户信息 这个表中没有这个信息需要的同学UPDATA一下
UPDATE  EMP SET  ENAME='A_LLEN' WHERE ENAME='ALLEN';
--先来查看一下没有特殊处理过查询
SELECT * FROM EMP WHERE ENAME LIKE 'A_%' ESCAPE '\';
1 7499  A_LLEN  SALESMAN  7698  1981/2/20 1600.00 300.00  30
2 7876  ADAMS CLERK 7788  1987/5/23 1100.00   20
--使用特殊符号处理
SELECT * FROM EMP WHERE ENAME LIKE 'A\_%' ESCAPE '\';
1 7499  A_LLEN  SALESMAN  7698  1981/2/20 1600.00 300.00  30

IS [NOT] NULL determination operator

判断空值 IS NULL 用于判断列或表达式结果是否为空可以用IS NULL 或IS NOT NULL但是不能使用=NULL或!=NULLlai1判断
举例说明:查询出EMP表中COMM字段为空的信息
SELECT * FROM EMP WHERE COMM IS NULL;
举例说明:查询出EMP表中COMM字段不为空的信息
SELECT * FROM EMP WHERE COMM IS NOT NULL;

NOT / AND / OR logical operator

--逻辑运算符 AND OR NOT分别对应的是并且,或,否
--AND:主要指定同时满足的俩个条件或多个条件
--OR:主要用于多个条件只要满足其中一个即可
--NOT:用于指定相反的条件
--AND逻辑操作符举例说明:查询出EMP表中JOB为MANAGER,并且DEPTNO=10的用户信息
SELECT * FROM EMP WHERE JOB='MANAGER' AND DEPTNO=10;
--OR逻辑操作符举例说明:查询出EMP表中JOB为MANAGER 或者SAL>3000的用户信息
SELECT * FROM EMP WHERE JOB='MANAGER' OR SAL>3000;
--NOT逻辑操作符举例说明:查询出EMP表中JOB除了CLERK,SALESMAN之外的用户信息
SELECT * FROM EMP WHERE JOB NOT IN('CLERK','SALESMAN');
--这里回顾一下IN操作符:查询出EMP表中JOB值为CLERK,SALESMAN的用户信息
SELECT * FROM EMP WHERE JOB IN('CLERK','SALESMAN');
--总结一下这三个操作符的优先级:NOT优先级最高,AND其次,OR优先级最低
--举例说明:查询出EMP表中SAL>200或者DEPTNO=30的,并且JOB不是CLERK,SALESMAN的用户信息
SELECT * FROM EMP WHERE (SAL>2000 OR DEPTNO=30)AND JOB NOT IN('CLERK','SALESMAN');

* / + - Arithmetic Operators

--算数运算符
alter user scott account unlock;
alter user scott identified by QING0201; 
SELECT * FROM EMP
--应用scott.emp表查询雇员编号,雇员名,雇员名称,雇员的年收入
SELECT EMPNO,ENAME,MGR,MGR*12 AS SUM_MONKEY FROM EMP
--查看雇员编号,雇员名,年收入(年薪加半月工资)
SELECT EMPNO,ENAME,MGR*12+MGR/2 AS Year_MONKEY FROM EMP
--查看雇员编号,雇员名,加1薪后的年收入
SELECT EMPNO,ENAME,MGR*12+MGR AS Year_MONKEY FROM EMP
--查看雇员编号,雇员名,每月工资涨5200后的年收入
SELECT EMPNO,ENAME,(MGR+5200)*12 AS Year_MONKEY FROM EMP
--查询雇员编号,雇员名,工资,补助计算出实发工资的信息
SELECT EMPNO,ENAME,MGR+SAL FROM EMP --需要注意的是在算术运算中有NULL时,其显示为NULL
SELECT ENAME||'的岗位是:'||JOB FROM EMP

ASC / DESC sorting data

--排序数据 关键字ORDER BY  ASC升序 DESC倒序 默认不加的时候为升序
--语法结构:SELECT * |COLUMN[,COLUMN...]FROM TABLE [WHERE CODITION] [ORDER BY COLUMN [ASC|DESC]]
--单列升序举例说明:查询出EMP表中所有的SAL的ENAME,SAL信息并以SAL升序显示
SELECT ENAME,SAL FROM EMP ORDER BY SAL ASC;
--等价于默认不加的时候为升序举例说明:
SELECT ENAME,SAL FROM EMP ORDER BY SAL;
1	KING	3000.00
2	FORD	5000.00
--单列降序举例说明:
SELECT ENAME,SAL FROM EMP ORDER BY SAL DESC;
1	KING	5000.00
2	FORD	3000.00
--空值升降序举例说明:采用EMP表如果没有该表的同学自己创建吧,空值默认为最大
SELECT COMM FROM EMP ORDER BY COMM;
SELECT COMM FROM EMP ORDER BY COMM ASC ;
1	0.00
2	NULL
SELECT COMM FROM EMP ORDER BY COMM DESC ;
1	NULL
2	0.00
Published 35 original articles · won praise 16 · views 190 000 +

Guess you like

Origin blog.csdn.net/qq_38795430/article/details/97610957