Oracle数据库教学笔记Word文件下载.docx
- 文档编号:22453399
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:42
- 大小:54.33KB
Oracle数据库教学笔记Word文件下载.docx
《Oracle数据库教学笔记Word文件下载.docx》由会员分享,可在线阅读,更多相关《Oracle数据库教学笔记Word文件下载.docx(42页珍藏版)》请在冰豆网上搜索。
//**数值函数11
1、ROUND(n,m)四舍五入11
2、TRUNC(n,m)截取数字11
3、MOD(m,n)取余数;
11
4、CEIL(n)和FLOOR(n)取n的最大整数和取n的最小整数。
//**练习12
1、SYSDATE返回当前系统时间的DATE值,默认格式:
DD-MON-RR12
2、SYSTIMESTAMP返回的是一个表示当前系统时间的时间戳类型的值。
12
3、TO_DATE函数12
4、TO_DATE及日期的计算13
5、TO_CHAR将DATE按照给定格式转换为字符串。
13
6、RR用两位数来表示年份13
7、LAST_DAY(date)返回给定日期所在的月底日期。
14
8、ADD_MONTHS(date,i)对给定日期加上指定的月14
9、MONTHS_BETWEEN(date1,date2)14
10、NEXT_DAY(date,i)14
11、LEAST(expr1,expr2,expr3...)求最小值;
12、GREATEST(expr1,expr2,expr3...)求最大值;
13、EXTRACT()提取给定日期中指定的时间分量。
15
//**NULL操作15
1、NULL条件查询15
2、非空约束(NOTNULL)15
3、NVL(arg1,arg2)判断返回值16
4、NVL2(arg1,arg2,arg3)判断返回值16
Day03//**
(2)关联字:
查询语句17
1、SQL查询语句:
17
2、AND,OR关键字17
3、LIKE用于模糊匹配字符串17
4、IN和NOTIN判断是否在列表中或不在列表中18
5、BETWEEN...AND...用来查询判断在一个区间范围内18
6、ISNULL和ISNOTNULL18
7、ANY和ALL18
8、DISTINCT去重19
9、排序:
ORDERBY子句19
//**聚合函数19
1、MAX、MIN求给定字段的最大值和最小值19
2、AVG、SUM求给定字段的平均值和总和20
3、COUNT函数20
//**分组20
1、GROUPBY子句20
2、HAVING子句21
3、查询语句的执行顺序21
//**关联查询22
//**笛卡尔积
23
//**练习23
//**内连接23
//**外连接23
练习:
查看SMITH的领导在哪个城市工作。
25
Day04//**关联字:
高级查询26
1、子查询26
2、DDL中使用子查询26
3、DML中使用子查询27
4、子查询在FROM子句中的使用28
//**分页查询29
1、计算区间公式pageSize:
每页显示的条目数30
2、DECODE函数30
3、CASE语句,其功能和DECODE函数相似30
4、DECODE将不同字段看成一组31
//**排序函数31
1、ROW_NUMBER()函数31
2、RANK()函数32
3、DENSE_RANK()函数32
//**集合操作32
//**高级分组函数33
1、ROLLUP()33
2、CUBE()函数34
3、GROUPINGSETS()函数34
Day05//**关联字:
视图、序列、索引35
1、简单视图36
2、复杂视图37
3、序列38
//**索引39
1、复合索引40
2、修改和删除索引40
//**约束41
1、非空约束(NOTNULL)41
2、唯一性约束(Unique)42
3、主键约束(PrimaryKey)43
数据库基础、DDL、DML
/**SQL语句本身不区分大小写,但是出于可读性的目的,我们通常会将SQL中的关键字全
部大写,非关键字全部小写。
-->
SELECTSYSDATEFROMdual//查询当前时间
数据定义语言DataDefinitionLanguage
/*用于建立、修改、删除数据库对象,包括创建语句(CREATE)、修改语句(ALTER)、删除语句(DROP)。
这类语言不需要事务的参与,自动提交。
数据操作语言DataManipulationLanguage
/*用于改变数据库数据,包括INSERT(插入)、UPDATE(更新)、DELETE(删除)三条语句。
事务控制语言TransactionControlLanguage
/*用来维护数据一致性的语句,包括提交(COMMIT)、回滚(ROLLBACK)、保存点(SAVEPOINT)三条语句。
执行了提交、保存,则无法再回滚。
数据查询语言DataQueryLanguage
/*用来查询所需要的数据。
使用最广泛,语法灵活复杂。
数据控制语言DataControlLanguage
/*用于执行权限的授予和收回操作、创建用户等,包括授予(GRANT)语句,收回(REVOKE)语句,CREATEUSER语句。
/**数据库数据类型
1、NUMBER表示数字类型,经常被定义成NUMBER(P,S)形式,其中:
P表示数字的总位数;
S表示小数点后面的位数;
2、CHAR表示固定长度的字符类型,经常被定义成CHAR(N)形式,N表示占用的字节数,N的最大取值是2000;
CHAR,用不用够都占20个字节。
读取查找快,空间利用低!
3、VARCHAR2表示变长的字符类型,定义格式是VARCHAR2(N),N表示最多可占用的字节数,最大长度是4000字节;
VARCHAR2,用多少占多少空间。
查找慢,空间利用好!
注:
只有Oracle数据库才带2,其他不带2;
4、DATE用于定义日期时间的数据,长度是7个字节,默认格式是:
DD-MON-RR,例如:
“11-APR-71”。
如果是中文环境,是“11-4月-71”这种形式。
(有更精确的时间类型)
/**数据库语句语法
DDL数据定义语言
DDL是对数据库对象进行操作的语言,数据库对象包括:
表、视图、索引、序列。
1、CREATE语句:
创建表
CREATETABLE[schema.]table_name(
column_namedatatype[DEFAULTexpr][,…]
);
例子如下:
CREATETABLEemployee_moonjo(
主体:
CREATETABLE表名(
列名数据类型(属性值)其他,
)
idNUMBER(4),
nameVARCHAR2(20),
genderCHAR
(1),
birthDATE,
salayNUMBER(6,2),
jobVARCHAR2(30),
deptnoNUMBER
(2)
2、DESC查看表语句
DESC是查看表的数据结构,语法是:
DESC表名;
3、DROPTABLE删除表语句
DROPTABLE是删除表,语法是:
DROPTABLE表名;
4、DEFAULT指定默认值语句
数据库中所有数据类型的默认值都是null,在创建表的时候可以使用DEFAULT为某个字段单独指定一个默认值。
数据库中的字符串字面量是使用单引号的,虽然SQL语句本身不区分大小写,但是字符串的值是区分大小写的。
语法是:
列名数据类型()DEFAULT‘字符串’,
5、NOTNULL非空语句
非空(NotNull)是一种约束条件,用于确保字段值不为空。
不能为空!
语法结构:
列名数据类型()NOTNULL,-->
idNUMBERNOTNULL,
6、RENAME修改表名语句
修改表名,语法是:
RENAME旧表名TO新表名-->
RENAMEATOB
7、ALTER增加列语句
语法如下:
(新增入职时间,默认值为当前系统时间)
ALTERTABLE表名
ADD(
新增列名数据类型(默认值)其他-->
hiredateDATEDEFAULTSYSDATE
8、DROP删除列语句
ALTERTABLE表名DROP(要删除的列名);
9、MODIFY修改字段语句
可以修改字段的类型、长度、默认值、是否非空。
修改表结构都应当避免在表中有数据以后进行。
若表中有数据,修改表中字段是尽量不要修改类型,若修改长度尽量增大避免缩小,否则可能导致失败。
MODIFY(
被修改的列名修改项(类型、长度、默认值、是否非空等)
/**DML语句
DML是对表中的数据进行的操作,DML伴随事物控制(TCL),DML包括增、删、改。
INSERTINTOmyemp
(id,name,salary,deptno)
VALUES
(1,’jack’,5000,10);
1、INSERT插入语句
INSERTINTO表名
(列名1,列名2,列名3...)
(列1值,列2值,列3值...);
UPDATEmyemp
SETsalary=6000
WHEREid=1;
修改id为1的工资为6000
注:
新增的数据需进行“提交”工作,数据才能正在有效!
执行:
COMMIT语句,或者点提交按钮;
注意列名和数据的类型匹配。
UPDATE表名
SET修改语句
WHERE判断语句/条件;
3、DELETE删除表中的数据
DELETEFROMmyemp
WHEREname=‘rose’;
删除姓名为rose的记录
删除语句通常要添加where语句来限定要删除的数据的条件,否则就是清空表操作!
DELETEFROM表名
HWERE条件语句;
数据库基础
/**SELECT语句,用于查询表中的数据。
SELECT子句后面跟的是要查询的字段。
可以包括表中的具体字段,函数或者表达式。
FROM子句用来指定数据来源的表,WHERE子句用来添加过滤条件,这样做的结果是只将满足条件的记录查询出来。
语法:
SELECT查找内容FROM数据源表名WHERE查询条件;
SELECT的查找内容中,可以直接使用表达式,如:
selectsal*12fromemp;
查找年薪
//**字符串函数CONCAT()函数,用来连接字符串。
SELECTCONCAT(ename,sal)FROMemp;
将ename和sal字符串拼接在一起。
Concat可嵌套使用。
//**||函数,用途也是连接字符串,使用起来更方便。
用法:
SELECTename||salFROMemp;
//**LENGTH函数,查看字段的长度。
Lenght(n)
用法:
SELECTename,LENGTH(ename)FROMemp;
查询ename的字段长度。
//**UPPER、LOWER、INITCAP将字符串转为全大写、全小写以及首字母大写;
对于INITCAP而言,可以使用空格隔开多个单词,那么每个单词首字母都会大写。
语法:
SELECTUPPER(‘Helloworld’)FROMdual;
dual伪表,用于满足语法需求。
SELECTLOWER(‘HELLOWORLD’)FROMdual;
SELECTINITCAP(‘helloWORLD’)FROMdual;
//**TRIM、LTRIM、RTRIM去除当前字符串中两边的指定重复字符
LTRIM仅去除左侧的;
RTRIM,仅去除右边的。
SELECTTRIM(‘e’FROM‘eeeelisteeeee
’);
结果:
list,去除了所有的e
SELECTLTRIM(eeeelisteeeee’,‘e’);
listeeeee
SELECTRTRIM(eeeelisteeeee’,‘e’);
eeeelist
//**LPAD、RPAD补位函数
SELECTLPAD(sal,5,’$’)FROMEMP;
保存5位数并在左边添加$,可当左右对齐使用。
//**SUBSTR截取字符串,数据库下标都是从1开始的。
SELECTSUBSTR(‘thinkinginjava‘,13,4)FROMdual;
截取4个
SELECTSUBSTR(‘thinkinginjava‘,-4,4)FROMdual;
截取倒数4个
第三个参数不写,则是截取到末尾,指定的长度若超过实际可以截取的内容也是截取到末尾;
截取的位置可以是负数,若是负数则表示从倒数第几个字符开始截取。
//**INSTR(char1,char2[,n,m])函数,查找char2在char1中的位置。
n:
从第几个字符开始检索
m:
第几次出现若n、m不写则默认都是1。
SELECTINSTR(‘thinkinginjava’,‘in’,4,1)FROMdual;
从第4个字符开始查找‘in’在‘thinkinginjava’中,第1次出现的位置。
//**数值函数
//**ROUND(n,m)四舍五入
n为数值,m为取舍的位数;
m为整数是表示四舍五
入小数的第几位,为负数时表示四舍五入整数的第几位。
SELECTROUND(45.68,1)FROMdual;
//45.7
SELECTROUND(45.68,0)FROMdual;
//46
语法:
SELECTROUND(45.68,-1)FROMdual;
//50
//**TRUNC(n,m)截取数字
n为数值,m为截取的位数;
m为整数是表示截取小数的第几位,为负数时表示截取整数的第几位。
SELECTTRUNC(45.68,1)FROMdual;
//45.6
SELECTTRUNC(45.68,0)FROMdual;
//45
SELECTTRUNC(45.68,-1)FROMdual;
//40
//**MOD(m,n)取余数;
求m除于n的余数。
SELECTename,sla,MOD(sal,1000)FROMemp;
从emp表中查询姓名、工资及工资除于1000的余数。
//**CEIL(n)和FLOOR(n)取n的最大整数和取n的最小整数。
SELECTCEIL(45.678)FROMdual;
//46
SELECTFLOOR(45.678)FROMdual;
//45
//**练习
1、查看名字只有5个字母的员工的名字,工资,部门号?
SELECTename,sal,deptnoFROMmoonjo_emp
WHERELENGTH(ename)=5;
2、查看第三个字母是A的员工信息?
SELECT*FROMMOONJO_EMP
WHEREINSTR(ename,'
A'
1,1)=3;
//第一种做法
SELECT*FROMMOONJO_EMP
WHERESUBSTR(ename,3,1)='
;
//第二种做法
//**SYSDATE返回当前系统时间的DATE值,默认格式:
DD-MON-RR
//**SYSTIMESTAMP返回的是一个表示当前系统时间的时间戳类型的值。
SELECTSYSDATEFROMDUAL;
//17-11月-16
SELECTSYSTIMESTAMPFROMDUAL;
//17-11月-1601.38.22.937193000下午+08:
00
//**TO_DATE函数
可以将字符串按照指定的日期格式解析为一个DATE类型的值。
SELECTTO_DATE('
2008-08-0820:
08:
08'
'
YYYY-MM-DDHH24:
MI:
SS'
FROMDUAL;
注意事项:
在DATE格式中只能包含字母、符号、数字,若出现其他字符需用“”(双引号)括起来,部分符号也需要用双引号括起来。
例如:
('
2008年08月08日20:
YYYY“年”MM”月”DD”日”HH24:
//**TO_DATE及日期的计算
日期可以与一个数字进行加减法,这相当于加减指定的天。
两个日期可以进行减法,差为相差的天数。
栗子1:
查看每个员工入职至今多少天了。
SELECTename,SYSDATE-hiredateFROMMOONJO_EMP;
栗子2:
查看自己至今为止活了多少天。
SELECTSYSDATE-TO_DATE('
1991-10-21'
YYYY-MM-DD'
)
//**TO_CHAR将DATE按照给定格式转换为字符串。
把当前系统时间转换为字符串。
SELECTTO_CHAR(SYSDATE,'
//**RR用两位数来表示年份
可用下表来判断该年份。
区别于YY,YY表示当前世纪。
如:
输入年份为49,系统当前年份为16,则输入年份为本世纪,即2049年;
若输入年份为51,系统当前年份为16,则输入年份为上世纪,即1951年。
//**LAST_DAY(date)返回给定日期所在的月底日期。
栗子:
查看当月的月底日期。
SELECTLAST_DAY(SYSDATE)FROM
DUAL;
//**ADD_MONTHS(date,i)对给定日期加上指定的月
若i为负数则是减去。
查看给个员工的入职20周年纪念日。
SELECTLAST_DAY(SYSDATE)FROMDUAL;
SELECTename,ADD_MONTHS(hiredate,12*20)
FROMMOONJO_EMP;
//**MONTHS_BETWEEN(date1,date2)
根据两个日期之间相差的月,计算是根据date1-date2得到的。
查看每个员工入职至今多少个月了。
SELECTename,MONTHS_BETWEEN(SYSDATE,hiredate)
//**NEXT_DAY(date,i)
返回给定日期的第二天开始一周内的指定周几的日期。
i:
1表示周日,2表示周一,以此类推。
本周六是几号。
SELECTNEXT_DAY(SYSDATE,7)FROMDUAL;
//**LEAST(expr1,expr2,expr3...)求最小值;
GREATEST(expr1,expr2,expr3...)求最大值;
除了日期外,常用的数字也可以比较大小。
SELECTLEAST(SYSDATE,
TO_DATE('
2008-08-05'
))
//**EXTRACT()提取给定日期中指定的时间分量。
提取指定时间的小时。
SELECTEXTRACT(HOURFROMTIMESTAMP'
2008-10-1010:
10:
10'
//**练习:
查看1980年入职的员工。
SELECTename,hiredateFROMMOONJO_EMP
WHEREEXTRACT(YEARFROMhiredate)=1980;
//**NULL操作
//**NULL条件查询
在条件查询中,因为NULL不等于任何值,所以不能用“列名=NULL”这种形式查询。
必须用“列名ISNULL”来判断,或者用“列名ISNOTNULL”来查询非空数据。
删除性别为null的数据。
DELETEFROMMOONJO_STU
WHEREgenderISNULL;
//**非空约束(NOTNULL)
设置某字段不能为空,在创建表时使用。
设置非空后,该字段的值不能为NULL,否则将会报错。
/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 数据库 教学 笔记