(9)oracle 表的基本查询
查看表的结构
desc 表名;
desc student;
查看整张表的数据
select * from 表名; //查整张表很耗时间
select* from student;
查看表的一列,或几列
select 列名,列名 from 表名;
select name,age from student;
字符串连接 ||
select 'a'||'b' from dual
查询时过滤掉重复的行
select distinct 列名,列名 from 表名;
select distinct name,age from student;
使用算数表达式
用字段名进行加减乘除的运算
select score+5,name from student ; // 给所有人的成绩加5分,并查看成绩和对应的人名
取别名
select age "年龄" from student;
用nvl处理null值
select nvl(age,0) from student; //如果 age中有null值则把它改成0;
order by
asc 正序 desc 倒序
按查询结果的第三列排序
SELECT * FROM student ORDER BY 3 DESC
多字段排序
SELECT * FROM student ORDER BY 2 DESC,3 ASC --数字可换成字段
连接字符串
连接字符串有||相当于 sqlserver中的+
SELECT '工号为'||FNumber||'的员工姓名为'||FName FROM T_Employee;
题外在sql语言中字符串用‘’单引号
where 查询时的条件
select age from student where age>60;
使用 like 模糊查询
1、 可以使用一个或多个% 查询包含某个字符的字段。
select name from student where '%a%b%';
表示查找name中 包含 ....a....b.... 的字符。
2、_ 下划线 表示单个任意字符
select name from student where '_a_b_';
查询 name 有五个单词组成,并且第二位是a,第四位是b。
3、[] 查询出带有括号内的某一个字符
select name from student where '[abw]';
查询出的name字符带有a、b、w中的一个。
select age from student where '[0-9]';
包含 0到9中的任意一个数字。
4、[^] 找出的字段中不能包含括号里的字符
select name from student where '[^abd]';
name里不能含有 a 或者 b 或者 d。
in
相当于=加上or
SELECT *FROM supplier WHERE supplier_name = 'IBM' OR supplier_name = 'Hewlett Packard' OR supplier_name = 'Microsoft';
和这句话是相等的
SELECT * FROM supplier WHERE supplier_name in ( 'IBM', 'Hewlett Packard', 'Microsoft');
用in更加简练,直观。
exsits
???
查询 空 时用is null
select * from score where student is null;
时间查询
select DEAL_TIME from TABLE where DEAL_TIME >= to_date('2017-2-1','yyyy-mm-dd') and DEAL_TIME <= to_date('2017-3-1','yyyy-mm-dd');
select DEAL_TIME from TABLE where DEAL_TIME >= to_date('2017-2-1 23:59:59','yyyy-mm-dd hh24-mi-ss');
select DEAL_TIME from TABLE where to_char(DEAL_TIME,'yyyy-mm-dd')>='2017-01-02'
限制返回行数
select * from T_BD_STAFF where rownum = 1 --rownum <=10
如果固定想查第二行
select * from (select rownum as id,emp.* from emp where rownum<=50) where id=2
随机查询几行
DBMS_RANDOM.VALUE ()方法
SELECT 字段A, 字段B FROM (SELECT * FROM emp ORDER BY DBMS_RANDOM.VALUE ()) WHERE ROWNUM <= 3
dual
????
select into
登录用户日志查询
select sid, serial#, username, --连接用户名 program, --应用程序名 machine, --机器名 osuser, --操作系统用户 logon_time --登录时间 from v$session;
在 sqlpuls中 使用 ed 指令能打开编辑记事本,打开记事本后,保存-关闭。
使用 \ 能执行上一条数据
使用 a 命令追加上 sql的内容。
a sql --强调 a 后面一定要是两个空格 不然会和上条命令间无空格
查询统计大于1行的字段
select name from table group by name having count(name)>1