Oracle笔记-简单查询
cmd中sqlplus 用户名/密码登录Oracle
例:cmd中sqlplus scott/tiger
1.格式化操作
查询emp表中的全部内容:SELECT *FROM emp
设置折行:SET LINESIZE 300
设置换页:SET PAGESIZE 30
2.调用记事本
使用ed命令 格式:ed 文件名
若不存在会自动创建记事本文件,默认创建的文件路径是C:\用户\用户名,可以在记事本中编辑命令
若要执行命令,格式:@文件名
3.显示用户
在一个数据库中会有多个操作用户,想确认当前的用户是哪位,则使用“show user”命令
若进行不同用户的切换,使用命令格式:CONN用户名[/密码] [AS SYSDBA] 如果现在使用的是除sys用户外的登录,想切换到sys用户登录,那么必须设置“SYSDBA”,否则无法登录。即CONN sys/change_on_install AS SYSDBA
若想进行无用户登录,在cmd中使用命令“sqlplus /nolog”
4.调用本机程序
HOST命令。例如:现在要执行一个文件拷贝的程序,命令语法结构:“COPY 原始文件路径 拷贝目标文件路径” 假如f盘有个a.sql的文件,希望拷贝为b.sql,则在cmd中执行“COPY f:\a.sql f:\b.sql”,若想在sqlplus中执行,在前面加HOST,即“HOST COPY f:\a.sql f:\b.sql”
SQL简介与数据表分析
SQL指的是结构化的查询语言。
SQL简单查询
简单查询的SQL语法结构如下:
SECLECT [DISTINCT]*|列 [别名],列 [别名],... FROM 表名称 [别名];
例:查询emp表中的全部记录 SELECT * FROM emp;
查询emp表中empno,ename,sal,job列的记录:SELECT empno,ename,sal,job FROM emp;
同时可以直接对列做四则运算:SELECT ename, sal*12 年薪 FROM emp; 可以直接写中文,但实际开发不要使用中文
同时可以改给列加上别名:SELECT ename, sal money FROM emp;
在进行简单查询的过程中,还支持数据的链接操作,使用“||”进行连接,例:SELECT empno || ename FROM emp;
实现“编号:XXX,姓名:XXX”的格式化操作:SELECT '编号:'||empno||', 姓名:'||ename FROM emp;
在简单查询的操作中的DISTINCT关键字的主要目的是消除重复内容。比如查询所有雇员的职位信息:SELECT job FROM emp; 所得到的内容会有重复的职位,这时使用:SELECT DISTINCT job FROM emp; 消除掉重复内容,这里的消除掉的是查询出来的所有列内容都相同的内容。
SQL限定查询
对查询到的数据行进行控制,需要使用WHERE关键字
格式:③SELECT [DISTINCT] * | 列 [别名],列 [别名] ...
①FROM 表名称 [别名]
②[WHERE 限定条件(s)];
注意语句实际执行顺序
限定条件有以下几种运算
关系运算:> , = , < , >= , <= , !=(<>);
范围运算:BETWEEN...AND;
空判断:IS NULL , IS NOT NULL;只能通过这两个关键字判断是否为空,而不能用=关键字
IN判断:IN, NOT IN, exists()(复杂查询);
模糊查询:LIKE , NOT LIKE。
以上限定符都只能判断一次,如果需要若干个限定符连接,那么需要使用逻辑运算:AND(与)、OR(或)、NOT(非);
在Oracle中的所有运算符都不受数据类型的限制,不仅可以对数字进行判断,同时也可以对字符串、日期进行判断。其中字符串意义不大,重点是日期判端 例如:查询出所有在1981年雇佣的雇员信息
范围:1981-01-01(‘01-1月-1981’)~1981-12-31(31-12月-1981),这个时候可以按照已有的数据结构通过字符串来描述日期
IN操作符
IN是根据一个指定的范围进行数据查询
例子:查询出雇员编号是7369、7566、7788、9999的雇员信息
I 利用关系运算符进行操作。
SELECT * FROM emp WHERE empno=7369 OR empno=7566 OR empno=7788 OR empno=9999; 执行了四次判断,性能较差
II 利用IN操作符
SELECT * FROM emp WHERE empno IN(7369,7566,7788,9999); 语句又短且性能较好,应作为首选。注意:在使用IN操作时,也可以使用NOT IN。在使用NOT IN的时候如果查找的数据范围中含有null值,那么不会有任何查询结果返回,IN操作无此限制。
模糊查询:LIKE
LIKE可以实现数据的模糊查询操作,要使用LIKE必须使用如下的两个匹配符号:"_": 匹配任意的一位符号 "%": 匹配任意的符号(包含0位、1位、多位)。
例:查询所有雇员姓名中以字母A开头的雇员信息
SELECT * FROM emp WHERE ename LIKE 'A%';
查询所有雇员姓名中第二个字母为A的雇员信息
SELECT * FROM emp WHERE ename LIKE '_A%';
查询所有雇员姓名中含有字母A的雇员信息
SELECT * FROM emp WHERE ename LIKE '%A%';
关于LIKE的两点说明:如果在使用LIKE时,没有设置任何关键字,那么表示全部;LIKE可以在任意的数据类型上使用。
查询排序
ORDER BY
语法结构:
③SELECT [DISTINCT] * | 列 [别名],列 [别名] ...
①FROM 表名称 [别名]
②[WHERE 限定条件(s)]
④[ORDER BY 排序字段 [ASC|DESC], 排序字段[ASC|DESC], ...];
注意语句实际执行顺序
既然ORDER BY在SELECT子句后执行,那就意味着ORDER BY可以使用SELECT子句中定义的别名。
对于字段排序有两种形式:
升序:ASC,默认不写排序也是升序
降序:DESC。由高到低进行排序。
排序可以在任意数据类型上进行。
例如:按照雇佣日期由早到晚排序
SELECT *
FROM emp
ORDER BY hiredate ASC;
所有的排序操作都是在WHERE筛选之后进行的。
总结