Oracle 10g数据库基础之基本查询语句-上程序员
书写SQL语句的原则算法
大小写不敏感,但单引和双引内的大小写是敏感的。切记!sql
关键字不能缩写数据库
能够分行书写,但关键字不能被跨行书写,单引内也不要跨行书写。express
通常每一个子句是一行ide
能够排版来增长可读性函数
字符串用单引工具
列的别名用双引性能
查询指定的行spa
查询指定的列
多张表联合查询
Select 语句能够查询指定的行,指定的列,也能够多张表联合查询来得到数据。上面的三句话,开宗明义的定义了SQL 的基本功能,书写高效的SQL语句是咱们永恒的追求,无论你是程序员仍是数据库管理员。Select既是入门所必备,又是数据库之颠峰。
大写的为关键字
小写的为咱们指定的名称
SELECT子句指定你所关心的列
FROM子句指定你所要查询的表
之因此称之为简易语法,由于彻底的SELECT语法很长,涉及到不少的逻辑关系,咱们由浅入深。虽然
不能大成,但小成总会有的。
通常咱们将select 叫作select子句,from 叫作from 子句。
该实验的目的是初步认识sql语句,执行一个最简单的查询.
使用scott在PL/ SQL.Developer.7工具上登陆
查看emp表的全部信息.
查询emp表的全部行,全部列。对于小的表咱们能够这样书写,对于大的表咱们通常查询指定条件的行和选定的列。Emp表在scott用户下.scott用户是一个练习账号,密码是tiger,若是你没有这个账号能够随时创建,练习完了能够随时删除.招之既来,挥之既去.
锁定解锁scott帐户:
该实验的目的是练习查询指定的列.
列的名称之间要使用逗号间隔,列的顺序由咱们来指定.
该实验的目的是使用表达式,对表的部分列进行运算.
其中sal+300是表达式,它并不存在于数据库中,是计算出来的结果。也可使用函数.
表达式的运算是有优先级的,和程序中的同样,先乘除后加减,括号强制优先级.
+ - * / 先乘除,后加减,括号强制优先级
我的一年总工资,年终奖为300元。
我的一年总工资,每月奖金为300元。
登陆:
创建会话,和数据库发生链接
链接到SCOTT用户,密码为tiger
若是不写密码,你回车后会提示你输入密码。
进一步的帮助
显示SQLPLUS命令的帮助,而不是SQL语法的帮助,它是查询的数据库内的一张表,因此你要获得帮助须要两个条件,1、数据库是打开的。2、存在HELP表
显示当前SQLPLUS的环境设置
显示当前所登陆的用户信息
该实验的目的是查看简单的数据字典,熟悉实验环境.
显示当前用户所拥有的表和视图。其中tab是数据字典,你在每一个用户下查看都看到是当前用户的表和视图,这是最基本的字典,咱们必定要知道当前用户下的表和视图。
显示DEPT表的全部行和全部列,* 表明全部的列。
查看表结构
对这两张表你们必定要熟悉,由于咱们全部的例题都是以这两个表为基础
查看当前缓冲区内的语句。
简写为l
修改scott的密码
该实验的目的是练习数据库的一个重要值null的使用.
Null值
其中comm列中有一些行没有值,是空值(null)。
Null值不等于0,也不等于空格。
Null值是未赋值的值,不入索引。
NULL是双刃剑,使用好了提升性能,你对它不了解,每每是错误的根源,切记!
该实验的目的是了解使用别名的目的和别名的使用方法.
别名的使用原则:
1。区分同名列的名称
2。非法的表达式合法化
3。按照你的意愿显示列的名称
4。特殊的别名要双引
5。直接写列的后面
6。使用as增长可读性
SQL> Select sal as salary,hiredate 上班日期 ,sal*12 年工资 from emp;
该实验的目的是使用distinct关键字,去掉重复的行.
SELECT 语句显示重复的行。用DISTINCT语法来去掉重复的行。
咱们会看到不少重复的行,若是咱们想去掉重复的行,咱们须要distinct关键字。
在ORACLE数据库的10G前版本,该语句须要排序才能去掉重复的行,而在10G中数据库并不须要排序,而是使用HASH算法来去掉重复的行,因为避免了排序,从而极大的提升了SQL语句的效率,由于10G的SQL内核改写了。效率更加的高。由于没有排序,因此输出也是无序的。
Where和order by 子句
语法
Where 必定要放在FROM 子句的后面。
符合条件的行会被筛选出来。
Order by 放在最后,用来排序显示结果
该实验的目的是使用where子句.
只显示10号部门的员工名称。
显示KING员工的详细信息。
关系运算:
Between:含上下界
>select deptno 部门编号,ename 姓名,sal 工资 from emp where deptno in(10,20);
查询NULL值
未知不等于未知,无穷不等于无穷.
not运算,补集,不是J打头的员工。
4。 IS [NOT] NULL, LIKE, [NOT] IN
5。Between
该实验的目的是掌握like的通配符.还有逻辑运算.
_ 通配一个,仅匹配一个字符,
% 通配没有或多个字符
SQL> select deptno 部门编号,ename 姓名 from emp where ename like 'J%';
首字母为J的员工,J后有没有字符,有多少字符都无论。
SQL> select deptno 部门编号,ename 姓名 from emp where ename like '_A%';
寻找第二个字母为A的员工,第一个字母必须有,是什么无所谓。
当你想查询_,%特殊字符时,请用escape.
咱们并不想查找S后必须有一个字符以上的员工,而是要剔除S,S出现的目的就是转义,将_转义了,这里的_不是通配符,而是实际意义的_。
通常咱们使用/来转义,以避免产生歧异。
该实验的目的是掌握排序操做.
不指明都是二进制排序,若是你想按照拼音,部首,笔画,法语等特殊的排序模式,请设定排序的环境变量。
默认是升序asc
降序要指定desc
位置排序,对集合操做时比较方便.
练习01:
查看scott中 emp表的信息:
练习02:
在scott中 emp表中,编号为7369的部门编号?
在scott中 emp表中,job与7900 员工相同的员工有哪些?
练习03:
在scott中 emp表中,在10号部门中谁的工资+奖金最高?
select ename 姓名,sal+nvl(comm,0) 总工资 from emp where (sal+nvl(comm,0))=( select max(sal+nvl(comm,0)) from emp where deptno IN (10));
《完》
--xjzhujunjie
--2012/05/15