SQL标准语言内容大全(2)

2019-01-19 12:57

?

3、* 表示查询所有列。

4、hr.department指查询hr schema(人力资源方案)中的departments(部门)表。

5、查询出来的结果是一个二维表,表头是字段名,每一行数据即代表一个部门对象的所有信息。

部门表所有数据 查询出部门表的所有数据。

select * from hr.departments;

?

? 练习-所有表的数据 (15分钟)1、用select语句依次查询所有表的数据。

select * from hr.countries; select * from hr.regions;

? ? ? ? ? ? ?

select * from hr.locations; select * from hr.jobs; select * from hr.job_history; select * from hr.employees; select * from hr.departments;

2、将每个表的查询结果与之前用show columns语句查询出的表结构进行对照。

show columns from hr.countries;

? ?

2-2错误的sql语句

sql语句在输入的过程中经常会出错,常见的错误比如说: 1、关键字写错,如select 写成了 selct, from 写成了 form

2、from 对象写错了,如 departments写成了department,或忘记加hr. 3、字段名写错了

....

当sql语句写错的时候,执行sql语句会报错,给出错误信息并且会附带一个错误码,错误信息试图描述错误出现在语句的什么位置,而错误码用来指明错误的类型。

? 练习-select改错 (5分钟)找出以下语句的错误,修改使之能正确运行:

selcet * form hr.employes;

?

2-3选择特定列

?

1、除了用 * 查询所有列之外,我们也可以在select子句中指定列名,按顺序列出所有想要查询的列名,用逗号分隔,例如:

select location_id, department_id from hr.departments;

?

2、在查询的每个列名后面,可以设置列别名,在列名和列别名之间可选用关键字 as,例如:select location_id lid, department_id as dep_id from hr.departments; 如果列别名包含空格或特殊字符,或者想大小写区分,可用双引号括起来。

?

练习-指定列和别名

?

(5分钟)在员工表中查询员工编码、姓氏、岗位编码、聘用日期,将标题分别改为:员工#、姓名、岗位、Hire Date。

? ?

查询员工表指定字段

查询员工表,显示每位员工的员工编号、姓氏(last_name)、职务代码、聘用日期。 如果忘记了字段名,记得用show columns from hr.employees; 列别名 将以下sql语句的列名修改为中文别名

select location_id, department_id from hr.departments;

? ?

? ?

2-4选择算术表达式

1、在select子句中,可以使用算术表达式,可将已有列参与表达式计算输出一个新的显示列(只是显示,没有真的存储新列),例如:

select last_name, salary, salary+300 from hr.employees;

?

2、算术表达式可用运算符 + - * /,其优先级为 * / + - ,可用小括号强制优先计算。例如:

select last_name, salary, 12*(salary+100) from hr.employees;

?

以上最后一列表示年薪,月薪加每月奖金 然后乘以12个月。

3、空值:如果某一列没有存入数据,就认为该值为空,空不同于零或空格,就是指没有,我们的例子数据库中,将空值的查询返回 null,例如:

select last_name, job_id, salary, commission_pct from hr.employees;

?

提成比率字段,只有销售岗位才有,普通员工的提成比率为空值。

4、如果算术表达式中的字段为空值,则结果也为空值,不会报错。例如:

select last_name, 12 * salary * commission_pct from hr.employees;

演示-工资加300 查询员工表的姓氏、工资、工资+300。

select last_name, salary, salary+300 from hr.employees; 演示-年薪表达式

查询员工表中每个员工的年薪,年薪 为 每个月月薪+100 ,然后乘以12月。 select last_name, salary, 12*(salary+100) from hr.employees; 演示-空值 查询员工表的提成比率

select last_name, job_id, salary, commission_pct from hr.employees;

演示-表达式中的空值 查询员工的年度提成金额

select last_name, 12 * salary * commission_pct from hr.employees;

练习-找错 (5分钟)以下语句有四个错误,请找出错误所在: select employee_id, last_name

sal x 12 ANNUAL SALARY from hr.employees;

2-5连接运算符

1、连接运算符 ||:将列链接到其它列、字符串、算术表达式或常数值,从而形成一个单一的输出列。例如:

select last_name || first_name as \

2、文字字符串:用单引号包含,可用在select子句中,作为文字字符串,查询结果中每个行都会显示。

select 'abc' from hr.employees;

3、文字字符串可用于连接运算,用以分割及描述合成的内容,例如:

select '姓:'||last_name || ',名:'||first_name as \

演示-连接姓名 将员工表的姓氏和姓名连接起来,形成一个输出列“name”。 select last_name || first_name as \ 演示-文字字符串 演示文字字符串

select 'hello' from hr.employees;

演示-文字连接 将姓氏和名字连接起来,中间增加文字字符串说明。

select '姓:'||last_name || ',名:'||first_name as \ 练习-员工头衔 (5分钟)将员工姓氏与岗位连接起来,中间用逗号及空格分割,然后设置别名为 Employee and title。

2-6重复行

1、在select查询语句中,默认结果会显示所有的行,即使这些行是重复的,例如

select department_id from hr.employees;

查询结果会看到许多部门编码是重复的。

2、可以通过 distinct 关键字消除重复行,例如:

select distinct department_id from hr.employees;

如上,distinct放在要消除重复的列前,以空格分离。

3、可以在distinct限定的列后面再指定其它列,消除重复的结果会影响所有的列,根据列的组合进行重复的消除,例如:

select distinct department_id, job_id from hr.employees;

演示-消除重复 查询所有员工一共分布在多少个部门。

select distinct department_id from hr.employees;

练习-提成比率 (5分钟)请查询当前员工一共设置了几种提成比率。

2-7基本select语句总结

select * | {[distinct] column | expression [alias], ...} from table;

上面语句中:

1、* : 选择所有列 2、distinct: 消除重复项 3、column: 选择制定的列 4、expression:表达式 5、alias: 列别名

3-1where子句

1、在sql 语言中,使用where子句可以限制查询的范围,例如:

select * from hr.employees where department_id = 90;

查询部门编码为90的所有员工信息。

2、where的条件:在where关键字后面跟着的条件限制范围为满足条件的所有行。条件的语法如下 :

运算表达式 比较符 值或表达式 salary >= 6000

last_name = 'smith' //字符串用单引号 hire_date = '01-JAN-95' //日期用单引号

last_name like '%ith' //模糊匹配,表示以'ith'结尾的字符串 commission_pct is null //提成比率为空值

注意:表中所有字段都可以参与条件的比较,不管是否在select中。 3、常用的比较符

= > >= < <= <> !=

[not] in (set) // 表示在后面的集合里面 [not] like //模糊匹配 [not] is null //是否为空

[not] between ... and ... //在两个值之间(包含两个值)

演示-部门90的员工 查询部门编码为90的员工信息

select employee_id, last_name, job_id, department_id from hr.employees where department_id = 90;

练习-查询高薪员工

(5分钟)查询工资超过12000的员工的姓氏和工资 练习-id查找

查询工号为176的员工信息,了解他在什么部门,做什么工作。

3-2between条件

1、用between条件可以查询值在一个范围内的行,例如

select last_name, salary from hr.employees

where salary between 2500 and 3500; //下限在前,上限在后

2、between的取反条件可以用 not between,例如

select last_name, salary from hr.employees

where salary not between 2500 and 3500;

演示-between

查询工资在2500和3500之间的员工。

select last_name, salary from hr.employees

where salary between 2500 and 3500;

练习-薪资范围查询

(5分钟)查询工资不在5000到12000范围内的员工的姓氏、部门、岗位、工资。

3-3 in条件

1、使用in条件可以限制指定集合中的值,当条件表达式在集合内时,就会满足条件,in条件也被称之为成员条件。

select employee_id, last_name, manager_id from hr.employees

where manager_id in (100,101,201);

以上查询经理为100、101、201的所有员工。

2、in可以使用所有数据类型,比如以下示例返回员工姓氏满足集合条件:

select employee_id, last_name from hr.employees where last_name in ('Hartsten', 'Vargas');

//注意如果是日期或字符串,要用单引号

演示-经理集合查询 查询经理为100、101或201的所有员工 练习-部门集合查询

(5分钟)用in条件查询在部门20和50中的所有员工的姓氏和部门编号

3-4 like条件

1、用like条件可以对字符串执行模糊匹配查找,例如:

select employee_id from hr.employees

where first_name like 's%'; //以s开头的字符串


SQL标准语言内容大全(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新人教版一年级语文下册期末字词专项复习题[1]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: