今天SQL练习哦!资料

-------------------------------------------------------------------------
三、SQL-DQL:数据查询语言
--------------------------------------------------------------------------
1、普通SELECT全部列
练习(查出EMPLOYEES中所有的列):

2、普通的SELECT部分列
练习(查出EMPLOYEES中first_name,salary两列):

3、限制性的SELECT查询,单条件WHERE
练习(查出部门编号是50的所有列)

4、限制性的SELECT查询,复合条件WHERE(and)
练习(查出部门叫King的,工资小于20000的员工)

5、限制性的SELECT查询,复合条件WHERE(or)
练习(查出工资小于4000和工资大于20000)

练习(查出工资在4000和20000区间的员工)

6、限制性的SELECT查询,复合条件WHERE(or、and)
练习(查出部门编码是50的,工资高于20000和工资小于4000的员工)

7、查询排序 ORDER BY (desc, asc)
练习(查询last_name,salary工资按照从小到大的顺序排列)

练习(查询last_name,salary工资按照从大到大的顺序排列)

8、查询分组GROUP BY
练习(列出公司所有部门,每个部门一条记录不能重复department_id);有2种写法注意distinct的用法


9、查询分组合计GROUP BY +SUM +Order by
练习(分组合计公司每个部门的工资总和,并且从低到高排序)

10、限制性的查询分组合计GROUP BY +SUM +Where


---------------------------------------------------------------------------
四、SQL-DDL的学习 create,drop,alter,truncate,rename
---------------------------------------------------------------------------
一)、create 创建表
--------------------------------------------------------------------------
1、创建表 Jxc_Spx
2、在Sptxm和Spbm上分别的创建2根索引


二)、alter 对表的改
--------------------------------------------------------------------------
1、增加列 bz 在表 Jxc_Spx 上
2、删除列 bz 在表 Jxc_Spx 上


三)、rename 修改表名
--------------------------------------------------------------------------
1、修改表名 Jxc_Spx 为 Jxc_Spx_bak


四)、truncate 清空数据,不记录日值
--------------------------------------------------------------------------
清空 Jxc_Spx中的数据


五)、drop 删除表
--------------------------------------------------------------------------
删除表 Jxc_Spx

--------------------------------------------------------------------------
五、SQL-DML的学习 insert,update,delete
--------------------------------------------------------------------------

一)、insert
--------------------------------------------------------------------------
1、往Jxc_Spxx中插入单行的值

2、把Jxc_Spxx中的值插入到Jxc_Spxx_bak中

3、有条件的把把Jxc_Spxx中的值插入到Jxc_Spxx_bak中


二)、update
--------------------------------------------------------------------------
1、修改 Jxc_Spxx 表中的 编号为0001的商品的进价为50

2、修改 Jxc_Spxx 表中的 编号为0002的商品的进价为50,售价为100
修改多列

3、参照 Jxc_Spxx_bak 中的数据,把Jxc_Spxx中的进价和售价更新为和Jxc_Spxx_bak 中一样

三)、delete
--------------------------------------------------------------------------
1、删除编号为0001的数据


--------------------------------------------------------------------------
六、SQL-函数
--------------------------------------------------------------------------
一)、函数的定义
-------------------------------------------------------------------------
1、函数的定义:有输入参数,有返回值
2、函数类型:通用函数,字符处理函数,数字处理函数,类型转换函数
3、通用函数
4、查询系统当前登陆用户
select user from dual;
dual:系统表,哑表

二)、函数的介绍
---------------------------------------------------------------------------
1、字符处理函数
---------------------------------------------------------------------------
LOWER
定义:大写转换小写
举例:
select LOWER('SQL Course') from dual;
Select wpcs,LOWER(wpcs),LOWER(LOWER(wpcs)) from jxc_Spx;
----------------------------------------------------------------------------
UPPER
定义:小写转换大写
举例:
select UPPER('SQL Course') from dual;
Select wpcs,UPPER(wpcs),UPPER(UPPER(wpcs)) from jxc_Spx;
----------------------------------------------------------------------------
LOWER,UPPER的混和使用
Select wpcs,LOWER(wpcs),UPPER(wpcs),UPPER(LOWER(wpcs)) from jxc_Spx;
----------------------------------------------------------------------------
INITCAP ()
返回string 将每个单词的首字母大写,所有其他字母小写
select INITCAP('SQL Course') from dual;
----------------------------------------------------------------------------
CONCAT ()
Oracle的concat函数只能连接两个字符串
select CONCAT('Good','String') from dual;
----------------------------------------------------------------------------
SUBSTR
字符串截取函数
select SUBSTR('String',2,3) from dual;
比较:
select SUBSTR('String',1,3) from dual;
select SUBSTR('String',0,3) from dual;
----------------------------------------------------------------------------
INSTR
查找字符位置
select INSTR('hello','e') from dual;
----------------------------------------------------------------------------
LENGTH
判断字符串长度
select LENGTH('String') from dual;
----------------------------------------------------------------------------
TRIM
去除空格
select TRIM(' String ') from dual;
RTRIM()去除右空格
LTRIM()去除左空格
----------------------------------------------------------------------------
LENGTH和TRIM的联合使用
不加Trim
select LENGTH(' String ') from dual;
加 Trim
select LENGTH(TRIM(' String ')) from dual;


练习:
1、把last_name,和first_name用“-”号连接起来,并且2字段的第一个字母大写;
2、利用以学的函数,在一条语句中把' deng , nansen '改成 “Nansen-Deng”


----------------------------------------------------------------------------
2、数字处理函数 - 无外呼是对函数的一种处理还计算
----------------------------------------------------------------------------
ROUND
----------------------------------------------------------------------------
可以四舍五入
select ROUND(45.923,2) from dual;
select ROUND(45.923,0) from dual;
select ROUND(45.923,-1) from dual;

TRUNC
----------------------------------------------------------------------------
截取到小数点后位数,不四舍五入
select TRUNC(45.923,2) from dual;
select TRUNC(45.923,0) from dual;
select TRUNC(45.923,-1) from dual;
select TRUNC(45.923,-2) from dual;

MOD
----------------------------------------------------------------------------
取余数
select MOD(1600,300) from dual;

Sum 合计
-----------------------------------------------------------------------------
sum(salary)
select sum(salary) from employees;

Max 最大
-----------------------------------------------------------------------------
max(salary)
select max(salary) from employees;

Min 最小
-----------------------------------------------------------------------------
select min(salary) from employees;

count()行数
-----------------------------------------------------------------------------
select count(*) from employees;

AVG 求平均值
-----------------------------------------------------------------------------
select AVG(salary) from employees;


练习:
-----------------------------------------------------------------------------
1、用一条SQL语句汇总每个部门的"合计工资","平均工资精确到小数点后2位","最大工资","最小工资","部门人数"并且显示部门ID


----------------------------------------------------------------------------
3、日期处理函数
----------------------------------------------------------------------------
--日期在Oracle数据库中存储为数字,
--存储的内容是世纪,年,月,日,小时,分钟,秒
--日期的默认显示格式
--日期可以进行加减运算,单位是天
--考虑加一个小时如何操作

--日期函数:
sysdate 系统时间
----------------------------------------------------------------------------
select sysdate from dual;

MONTHS_BETWEEN 比较月的差值
----------------------------------------------------------------------------
select MONTHS_BETWEEN(sysdate,sysdate-180) from dual;

ADD_MONTHS增加月数
----------------------------------------------------------------------------
select ADD_MONTHS(sysdate,2) from dual;

NEXT_DAY 得到比日期D晚的由CHAR命名的第一个周几的日期.
----------------------------------------------------------------------------
select NEXT_DAY(sysdate,6) from dual;

LAST_DAY 月底
----------------------------------------------------------------------------
select LAST_DAY(sysdate) from dual;
select LAST_DAY(TO_DATE('1999.10.20 18:30:05','yyyy.mm.dd hh24:mi:ss')) from dual;

----------------------------------------------------------------------------
4、类型转换函数
----------------------------------------------------------------------------
TO_CHAR 转换为字符型(长度匹配)
----------------------------------------------------------------------------
select TO_CHAR(12345.237,'9,999,999.99') from dual;
select TO_CHAR(12345,'$9,999,999.99') from dual;
select TO_CHAR(21,'00000') from dual;

TO_NUMBER 转换为数字型(长度匹配,字符匹配)
----------------------------------------------------------------------------
select TO_NUMBER('$12,345','$9,999,999') from dual;

TO_DATE 转换为日期型(标识符匹配)
----------------------------------------------------------------------------
TO_DATE('1999.10/20 18:30:05','yyyy.mm/dd hh24:mi:ss')
select TO_DATE('1999-10-20 18:30:05','yyyy-mm-dd hh24:mi:ss') from dual;

----------------------------------------------------------------------------
七.、多表连接查询
----------------------------------------------------------------------------
---------------------------------------------------------------------------
一)、多表关联的产生
---------------------------------------------------------------------------
a个表里面的需要的数据,存在于b,D,E表,同时a表和b,d,e表中又有相关联的条件

---------------------------------------------------------------------------
二)、一个简单的2表关联查询
---------------------------------------------------------------------------

1、用where和join的方式检索并显示员工姓名,以及员工所在部门的名称
---------------------------------------------------------------------------

---------------------------------------------------------------------------
三)、多表关联
---------------------------------------------------------------------------
--employees: 员工表
--departments: 部门表
--jobs: 职务


1、练习:用where和join的不同方式查询出 员工姓名/部门名称/工作名称

2、练习:用where和join的不同显示JOB_HISTORY中所有列,并用Join语句把表中的所有ID 替换为NAME
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值