sql相关的文件.docx
- 文档编号:4904215
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:49
- 大小:32.08KB
sql相关的文件.docx
《sql相关的文件.docx》由会员分享,可在线阅读,更多相关《sql相关的文件.docx(49页珍藏版)》请在冰豆网上搜索。
sql相关的文件
oracleSQL
SQLstruncturedquerylanguage(结构化查询语言)
文件FILE
DATABASE(数据库)
SQL
DDL(datadefinitionlanguage数据定义语言结构画表头)
createtable(创建表)(column列数据类型datatype,宽度width
constraint约束)
altertable(修改表结构)
droptable(删除表)
DML(datamanipulationlanguage数据操作语言数据填行)
insert插入数据
update修改数据
delete删除数据
TCL(transactioncontrollanguage事务控制语言)
commit(提交)
rollback(回滚)
DQL(dataquerylanguage数据查询语言)
select
DCL(datacontrollanguage数据控制语言)
grant(授权)
revoke(回收权限)
databaseobject数据库对象
table(表)index(索引)view(视图)sequence(顺序号序列号)
RDBMS(relationshipdatabasemanagementsystem数据库管理系统)
ORACLEoracle10gsoftwaremysql
IBMdb2
MSSQLServer
---------DBA(databaseadministrator)
installoracle10g(安装oracle10g软件)
createdatabase(创建数据库)
startup(open打开状态)
---------SD(softwaredeveloper)
--->登录数据库(建立数据库连接)
--->SQL语句
console
telnet192.168.0.26
telnet192.168.0.23
osopenlab/open123%$shell提示符
sqlplus
dbopenlab/open123SQL>select
echo$ORACLE_SID(环境变量)
oracledbserver(oracle数据库服务器)的名字open状态
sqlplus
setenvORACLE_SIDhiloo
ERROR:
ORA-01034:
ORACLEnotavailable
没有hiloo这个oracle数据库服务.
cmd(windows)shell(unix)都是命令解释器
C/Sclient/server(客户端/服务器)
客户端程序和服务器端程序在同一台机器上sqlplus
客户端程序和服务器端程序在不同的机器上jdbc(tcp/ip)
客户端程序和服务器端程序在同一台机器上
D:
\>setORACLE_SID=hiloo
D:
\>setORACLE_SID
ORACLE_SID=hiloo
%setenvORACLE_SIDhiloo
%echo$ORACLE_SID
ORA-00955:
nameisalreadyusedbyanexisting(存在)object
createtabletest(c1number)
tablecreated
desctest(describetest显示表结构)
insert
1rowinserted
oracleSQL
SQLstruncturedquerylanguage(结构化查询语言)
文件FILE
DATABASE(数据库)
SQL
DDL(datadefinitionlanguage数据定义语言结构画表头)
createtable(创建表)(column列数据类型datatype,宽度width
constraint约束)
altertable(修改表结构)
droptable(删除表)
DML(datamanipulationlanguage数据操作语言数据填行)
insert插入数据
update修改数据
delete删除数据
TCL(transactioncontrollanguage事务控制语言)
commit(提交)
rollback(回滚)
DQL(dataquerylanguage数据查询语言)
select
DCL(datacontrollanguage数据控制语言)
grant(授权)
revoke(回收权限)
databaseobject数据库对象
table(表)index(索引)view(视图)sequence(顺序号序列号)
RDBMS(relationshipdatabasemanagementsystem数据库管理系统)
ORACLEoracle10gsoftwaremysql
IBMdb2
MSSQLServer
---------DBA(databaseadministrator)
installoracle10g(安装oracle10g软件)
createdatabase(创建数据库)
startup(open打开状态)
---------SD(softwaredeveloper)
--->登录数据库(建立数据库连接)
--->SQL语句
console
telnet192.168.0.26
telnet192.168.0.23
osopenlab/open123%$shell提示符
sqlplus
dbopenlab/open123SQL>select
echo$ORACLE_SID(环境变量)
oracledbserver(oracle数据库服务器)的名字open状态
sqlplus
setenvORACLE_SIDhiloo
ERROR:
ORA-01034:
ORACLEnotavailable
没有hiloo这个oracle数据库服务.
cmd(windows)shell(unix)都是命令解释器
C/Sclient/server(客户端/服务器)
客户端程序和服务器端程序在同一台机器上sqlplus
客户端程序和服务器端程序在不同的机器上jdbc(tcp/ip)
客户端程序和服务器端程序在同一台机器上
D:
\>setORACLE_SID=hiloo
D:
\>setORACLE_SID
ORACLE_SID=hiloo
%setenvORACLE_SIDhiloo
%echo$ORACLE_SID
ORA-00955:
nameisalreadyusedbyanexisting(存在)object
createtabletest(c1number)
tablecreated
desctest(describetest显示表结构)
insert
1rowinserted
源表from后面的表名结果集select语句的查询结果
select语句select子句from子句
select
投影操作(select子句)选择操作连接操作
select子句列名,表达式,函数
算术表达式字符表达式(字符串拼接)
select*fromdept_hiloo
empno员工编号
mgr该名员工领导的员工编号
语法检查,语义检查,生成执行计划,执行该计划,产生结果集.
select表达式列别名fromtabname
字符串用''
列别名用"",空格或者大小写敏感
insert包含null,没值,算术表达式中包含null值,结果一定为null.null可以按无穷大理解.
nvl(p1,p2)返回值nvl(bonus,0)空值转换函数p1,p2的数据类型一致
pl/sql程序函数
ifp1isnullthen
returnp2;
else
returnp1;
endif;
distinct不同区别去重
distinctdeptno,jobfromemp_hiloodistinct之后,from之前的所有列联合去重
selectfromwhere
where子句实现选择操作where条件表达式列名比较运算符值
wheresalary>5000
where子句执行在select子句之前,所以列别名不能用于where子句
表达式比较运算符值(尽量不用)
betweenand闭区间范围>=and<=
in(集合)<=>=any(跟集合里的任意一个值相等)<=>=or=
ORA-01797:
thisoperator(运算符)mustbefollowed(跟)byANYorALL
c1between10and20
c1in(10,20)
like像字符
通配符%0或多个字符_任意一个字符
'S'like'S%'like'S_'
_%有两个含义一个代表通配符,另一个代表它本省
isnull
否定形式
isnullisnotnull
=<>!
=
betweenandnotbetweenand比小的小比大的大
likenotlike
innotin
notin<=><>all(跟集合里的所有值都不相等)<=><>and<>
建连接
DDLDMLTCL
selectdistinctfromwhere
fromwhereselectdistinct
where数据类型比较运算符(betweenandinlikeisnull)null
课堂练习
1列出员工名称以及工资
selectename,salaryfromemp_hiloo
2列出员工名称以及年薪
selectename,salary*12fromemp_hiloo
3列出员工名称以及一年的总收入
selectename,(salary+nvl(bonus,0))*12tot_salfromemp_hiloo
4公司里有哪些不同的职位
selectdistinctjobfromemp_hiloo
5公司里每个部门有哪些不同的职位
selectdistinctdistinctdeptno,jobfromemp_hiloo
6工资大于5000的员工的名称和工资
selectename,salaryfromemp_hiloowheresalary>5000
7工资大于5000的员工的名称和年薪
selectename,salary*12fromemp_hiloowheresalary>5000
8年薪大于60000的员工的名称和年薪
selectename,salary*12fromemp_hiloowheresalary>5000
9哪些员工的职位是clerk
selectename,jobfromemp_hiloowherejob='clerk'
10哪些员工的职位是Manager
selectename,jobfromemp_hiloowherejob='Manager'
11哪些员工的职位是clerk,不知道clerk的大小写
selectename,jobfromemp_hiloowherelower(job)='clerk'
12找出工资在5000到10000之间的员工的名称和年薪
selectename,salary*12fromemp_hiloo
wheresalarybetween5000and10000
13哪些员工的职位是clerk或Manager或salesman
selectename,jobfromemp_hiloo
wherejobin('clerk','Manager','salesman')
14哪些员工的名字的第二个字符是a.
selectename,jobfromemp_hiloo
whereenamelike'_a%'
15哪些员工的职位的前两位字符是j_(j_salesman符合条件)
转义
selectename,jobfromemp_hiloo
wherejoblike'j\_%'escape'\'
16哪些员工没有奖金
selectename,bonusfromemp_hiloo
wherebonusisnull
17哪些员工有奖金
selectename,bonusfromemp_hiloo
wherebonusisnotnull
关于null的讨论
insert包含null,没值,算术表达式中包含null值,结果一定为null.null可以按无穷大理解.
distinctbonus,bonus包含多个null值,结果集包含一个null值.
判断一个列的取值是否为空,用isnull
null=null不成立1<>null不成立null<>null不成立
对于in来说,集合里面是否包含null值,对结果集没影响
对于notin来说,集合里面包含null值,结果集一定是norowsselected.(没有任何记录)
函数function
单行函数upper(p1)
p1是参数,按参数的数据类型分类
字符函数upperlower
数值函数roundtrunc
日期函数sysdateadd_months
一般函数nvl(bonus,0)nvl(ename,'A'),nvl(hiredate,sysdate)
转换函数to_date,to_char,to_number
多行函数(组函数)
数值函数roundtrunc
round(p1,p2)四舍五入
round(1.235,2)-->1.24
round(1.235,0)=round(1.235)-->1
round(15.5,-1)20
trunc(p1,p2)截取
trunc(1.235,2)-->1.23
trunc((15.5,-1)10
日期类型
session会话通过connection创建session
alter(修改)sessionset(设置)
SQL>altersession
2setnls_date_format='yyyymmddhh24:
mi:
ss';
date世纪年月日时分秒7个字节(固定)
缺省日期格式DD-MON-RR
ORA-01861:
literal(文字值)doesnotmatch(匹配)formatstring(格式串)
to_dateto_char说明date类型是格式敏感的.
2008080808:
08:
08
ORACLE_SID
sqlplususername/passwd
sql>connectopenlab/open123
转换函数
system(系统级)session(会话级)statment(语句级)
insertintotestvalues
(to_date('2008080808:
08:
08',
'yyyymmddhh24:
mi:
ss')
);
selectto_char(c1,'yyyymmddhh24:
mi:
ss')fromtest;
产生一个日期值to_date
处理一个日期值to_char
隐式转换系统转换
显式转换用户调用转换函数
'03'=3缺省方式:
字符型-->数值型
to_number('03')=3char_to_number
to_number('ab')invalid(无效)number
to_char(salary)number_to_char
to_char(sysdate)date_to_char
日期运算
日期+(-)数值日期-日期
日期函数
add_months(sysdate,1)add_months(sysdate,-6)
months_between(sysdate,hiredate)相差了多少月
last_day(sysdate)某月的最后一天
一般函数
nvl,coalesce()
ORA-00932:
inconsistent(不一致)datatypes(数据类型):
expected(期待)NUMBERgotCHAR
1selectename,empno,
2coalesce(to_char(mgr),'Boss')
3*fromemp_hiloo
ORA-01722:
invalid(无效)number
1selectename,empno,
2nvl(to_char(mgr),'Boss')
3*fromemp_hiloo
课堂练习
1请找出3月份入职的员工.
SQL>selectename,hiredate
2fromemp_hiloo
3whereto_char(hiredate,'mm')='03';=3
SQL>l
1selectename,hiredate
2fromemp_hiloo
3*whereto_char(hiredate,'fmmm')='3'
fm去掉前导0或者两端的空格
2十分钟之后
SQL>selectsysdate,sysdate+1/144
2fromdual;
3列出ename,empno,mgr,其中zhangsanfeng的mgr显示Boss
函数function
sysdate无参数的函数
upper(ename)
ename值参数函数有返回值,返回值指定数据类型
单行函数upper(p1)
p1是参数,按参数的数据类型分类
字符函数upperlower
数值函数roundtrunc
日期函数sysdateadd_months
一般函数nvl(bonus,0)nvl(ename,'A'),nvl(hiredate,sysdate)
转换函数to_date,to_char,to_number
多行函数(组函数)
数值函数roundtrunc
round(p1,p2)四舍五入
round(1.235,2)-->1.24
round(1.235,0)=round(1.235)-->1
round(15.5,-1)20
trunc(p1,p2)截取
trunc(1.235,2)-->1.23
trunc((15.5,-1)10
日期类型
session会话通过connection创建session
alter(修改)sessionset(设置)
SQL>altersession
2setnls_date_format='yyyymmddhh24:
mi:
ss';
date世纪年月日时分秒7个字节(固定)
缺省日期格式DD-MON-RR
ORA-01861:
literal(文字值)doesnotmatch(匹配)formatstring(格式串)
to_dateto_char说明date类型是格式敏感的.
2008080808:
08:
08
ORACLE_SID
sqlplususername/passwd
sql>connectopenlab/open123
转换函数
system(系统级)session(会话级)statment(语句级)
insertintotestvalues
(to_date('2008080808:
08:
08',
'yyyymmddhh24:
mi:
ss')
);
selectto_char(c1,'yyyymmddhh24:
mi:
ss')fromtest;
产生一个日期值函数的返回值是日期类型to_date
处理一个日期值,处理的参数是日期类型to_char(hiredate,'mm')
隐式转换系统转换
显式转换用户调用转换函数
'03'=3缺省方式:
字符型-->数值型
to_number('03')=3char_to_number
to_number('ab')invalid(无效)number
to_char(salary)number_to_char
to_char(sysdate)date_to_char
日期运算
日期+(-)数值日期-日期
日期函数
add_months(sysdate,1)add_months(sysdate,-6)
months_between(sysdate,hiredate)相差了多少月
last_day(sysdate)某月的最后一天
一般函数
nvl,coalesce()
ORA-00932:
inconsistent(不一致)datatypes(数据类型):
expected(期待)NUMBERgotCHAR
1selectename,empno,
2coalesce(to_char(mgr),'Boss')
3*fromemp_hiloo
ORA-01722:
invalid(无效)number
1selectename,empno,
2nvl(to_char(mgr),'Boss')
3*fromemp_hiloo
排序
orderby是最后一个子句,orderby在select之后执行
orderby列名asc(升序,缺省)desc(降序)
orderby后面跟列名,列别名,表达式(函数),位置
字符,数值,日期都可以排序
多行函数(组函数)
avg()平均值数值
sum()求和数值
count()计数数值字符日期
min()最小值数值字符日期
max()最大值数值字符日期
avg(all)avg(distinct)
组函数处理的是所有的非空值,count(*)返回记录数,空值不影响
groupby
ORA-00937:
notasingle-groupgroupfunction不是组函数
在没有groupby的情况下,select后面只要有一个组函数,其他的必须是组函数
在有groupby的情况下,sele
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sql 相关 文件