标签:计算 高精度 修改 地址 efi struct 算术 uname 表结构
SQL查询与SQL函数
本章目标
了解Oracle数据类型
了解数据定义语言和数据操纵语言
了解事务控制语言和数据控制语言
掌握SQL操作符和SQL函数
SQL(structured query language)--结构化查询语言
通过SQL可以实现与Oracle服务器的通信
SQL是数据库语言,Oracle使用该语言存储和检索信息
表是主要的数据库对象,用于存储数据
用户 --------------------发送SQL语句查询------------------------->服务器
用户 <-------------发送命令输出结果到用户端--------------------服务器
SQL支持下列类别的命令:
--数据定义语言(DDL)
create、alter、drop
--数据操纵语言(DML)
select 、insert、update、delete
--数据控制语言(DCL)
grant、revork
--事务控制语言(TCL)
commit、rollback
Oracle数据类型
创建表时,必须为各个列指定数据类型
Oracle数据库的数据类型种类有:
字符类型
数值类型
日期时间类型
RAW/LONG RAW类型
LOB类型
Oracle数据类型--字符数据类型:
char 、varchar2 、 long
char
--当需要固定长度的字符串时,使用char数据类型。
--char数据类型存储字母数字值。
--char数据类型的列长度可以是1到2000个字节。
varchar2
--varchar2数据类型支持可变长度字符串
--varchar2数据类型存储字母数字值
--varchar2数据类型的大小在1至4000个字节范围内
long
--long数据类型存储可变长度字符数据
--long数据类型最多能存储2GB
Oracle数据类型--数值类型
number
--可以存储整数、浮点数和实数
--最高精度为38位;
数值数据类型的声明语法:
number(p,s)--p表示精度即总共多少位,s表示小数点所占的位数
Oracle数据类型--日期时间类型
日期时间数据类型存储日期和时间值,包括年、月、日,小时、分钟、秒
主要的日期时间类型有:
date--存储日期和时间部分,精确到整个的秒
timestamp--存储日期、时间和时区信息,秒值精确到小数点后6位。
Oracle数据类型--RAW/LONG RAW类型
RAW数据类型用于存储二进制数据
RAW数据类型最多能存储2000字节
LONG RAW数据类型用于存储可变长度的二进制数据
LONG RAW 数据类型最多能存储2GB
Oracle数据类型--LOB类型
LOB类型称为‘大对象’数据类型,可以存储多达4GB的非结构化信息,例如声音和视频文件等
LOB数据类型允许对数据进行高效、随机、分段的访问
clob 即character lob(字符Lob),它能够存储大量字符数据
blob 即binary log(二进制lob),可以存储较大的二进制对象,如图形、视频剪辑和声音文件
bfile 即binary file(二进制文件),它用于将二进制数据存储在数据库外部的操作系统文件中。
Oracle数据类型--伪列
Oracle中伪列就像一个表列,但是它并没有存储在表中
伪列可以从表中查询,但不能插入、更新和删除它们的值
常用的伪列有rowid和rownum
rowid是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用rowid伪列快速地定位表中的一行。
rownum是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数
数据定义语言:
数据定义语言(data defintion language)用于改变数据库结构,包括创建、更改和删除数据库对象。
用于操纵表结构的数据定义语言命令有:
--create table
--alter table
--truncate table
--drop table
数据操纵语言:
数据操纵语言(Data manipulation language)用于检索、插入和修改数据
数据操纵语言是最常见的SQL命令
数据操纵语言命令包括:
--select
--insert
--update
--delete
利用现有的表创建表的副本
create table 新表名 as select 列名 from 旧表名
例:
create table stu1 as select * from stu where stuNo=stuNo1;
选择无重复的行,在select中使用distinct
例:
select distinct * from 表名;
使用列别名
--为列表达式提供不同的名称
--该别名指定了列标题
......
插入日期类型的值
--日期数据类型的默认格式为‘DD-MON--RR’
--使用日期的默认格式
--使用TO_DATE函数转换
insert into order_master values (‘0001‘,‘12-5月-13‘,‘c’,‘25-5月-13‘);
insert into my_table(date_col) values(TO_DATE)(‘2013-10-18‘,‘yyyy-mm-dd‘);
插入来自其他表中的记录的语法:
insert into 表名 (字段列表) select 字段名 from 其他表名
例:
insert into masterInfo select * from masterInfo1
insert into masterInfo(stuNo,stuName) select stuNo1,stuName1 from masterInfo1
事务控制语言
事务是最小的工作单位,作为一个整体进行工作;
保证事务的整体成功或失败,称之为事务控制
用于事务控制的语句有:
commit--提交并结束事务处理
rollback--撤销事务中已经完成的工作
savepoint--标记事务中可以回滚的点
例:
update order_master set del_date=‘30-8月-05‘ where ordemo<=‘0002‘;
数据控制语言
数据控制语言为用户提供权限控制命令
用于权限控制的命令有:
grant--授予权限
revoke--撤销已授予的权限
例:
grant select on vendor_master to accounts with grant option;
revoke seclect,update on order_master from martin;
SQL操作符
Oracle支持的SQL操作符分类为:
算术操作符、比较操作符、逻辑操作符、集合操作符、连接操作符
算术操作符
算术操作符用于执行数值计算,可以在SQL语句中使用算术表达式,算术表达式由数值数据类型的列名、数值常量和连接它们的算术操作符组成
算术操作符包括 + - * /
例:
>select itemdesc,max_level - qty_hand avble_limit from itemfile where p_category=‘spares‘;
>select itemdestc,itemrate * (max_level - qty_hand) from itemfile where p_category=‘spares‘;
比较操作符
比较操作符用于比较两个表达式的值
比较操作符包括 = 、!= 、 < 、 > 、 <= 、 >= 、 between...and 、 in 、 like 、 is null。
例:
>select itemdesc,re_level from itemfile where qty_hand<max_level/2;
>select orderno from order_master where del_date in(‘06-2月-05‘,‘05-2月-05’);
>select vencode,venname,tel_no from vendor_master where venname like ‘i s‘;
逻辑操作符
逻辑操作符用于组合多个比较运算的结果以生成一个或真或假的结果。
逻辑操作符包括 与(and)、或(or)、非(not)
例:
>select * from order_master where odate>‘10-5月-13‘ and del_date<‘26-5月-13‘;
集合操作符
集合操作符将两个查询的结果组合成一个结果
union 、 union all 、 intersect 、 minus
intersect操作符只返回两个查询的公共行。
minus操作符返回从第一个查询结果中排除第二个查询中出现的行。
>select orderno from order_master minus select orderno from order_detail;
连接操作符
连接操作符用于将多个字符串或数据值合并成一个字符串
>select (venname||‘的地址是‘||venadd1||‘ ‘||venadd2||‘ ‘||venadd3)address from vendor_master where vencode=‘v001‘;
--通过使用连接操作符可以将表中的多个列合并成逻辑上的一行列;
操作符的优先级
SQL操作符的优先级从高到低的顺序是:
算术操作符
连接操作符
比较操作符
not逻辑操作符
and逻辑操作符
or逻辑操作符
SQL函数
Oracle提供一系列用于执行特定操作的函数
SQL函数带有一个或多个参数并返回一个值
SQL函数的分类:
单行函数 、 分组函数 、 分析函数
单行函数分类:
单行函数对于从表中查询的每一行只返回一个值
可以出现在select子句中和where子句中
单行函数可划分为:
日期函数
数字函数
字符函数
转换函数
其他函数
日期函数
日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果
日期函数包括:
add_months
months_between
last_day
round
next_day
trunc
extract
字符函数
字符函数接受字符输入并返回字符或数值
函数 输入 输出
initcap(char) select initcap(‘hello‘) from dual; Hello
lower(char) select lower(‘FUN‘) from dual; fun
upper(char) select upper(‘sun‘) from dual; SUN
ltrim(char,set) select ltrim(‘xyzadams‘,‘xyz‘) from dual; adams
rtrim(char,set) select rtrim(‘xyzadams‘,‘ams‘) from dual; xyzad
translate(char,from,to) select tran slate(‘jack‘,‘j‘,‘b‘) from dual; back
replace(char,search string,[rep string]) select replace(‘jack and jue‘,‘j‘,‘bl‘) from dual; black and blue
instr(char,m,n) select instr(‘worldwide‘,‘d‘) from dual; 5
substr(char,m,n) select substr(‘abcdefg‘,3,2) from dual; cd
concat(expr1,expr2) select concat(‘Hello‘,‘world‘) from dual; Hello world
转换函数
转换函数将从一种数据类型转换为另一种数据类型
常用的转换函数有:
to_char
to_date
to_number
例:
select to_date(‘2013-12-16‘,‘yyyy-mm-dd‘) from dual;
select to_number(‘100‘) from dual;
其他函数
用来转换空值的函数:
nvl nvl2 nullif
例:
select itemdesc,nvl(re_level,0) from itemfile;
select itemdesc,nvl2(re_level,re_level,max_level) from itemfile;
select itemdesc,nullif(re_level,max_level) from itemfile;
分组函数
分组函数基于一组行来返回结果
为每一组行返回一个值
avg min max sum count
例:
select count(*) from itemfile;
select avg(*) from itemfile where p_category=‘accessories‘;
select count(itemrate) from itemfile;
select max(max_level) from itemfile;
select count(distinct qty_hand) from itemfile;
select sum(itemrate * max_leve) from itemfile;
group by子句
group by子句 用于将信息划分为更小的组
每一组行返回针对该组的单个结果
例:
select p_category,max(itemrate) from itemfile group by p_category;
having 子句
having子句用于指定group by子句检索行的条件
select p_category,max(itemrate) from itemfile group by p_category having p_category not in(‘accessories‘);
分析函数
分析函数根据一组行来计算聚合值
用于计算完成聚集的累计排名、移动平均数等
分析函数为每组记录返回多个行
row_number rank dense_rank
下面三个分析函数用于计算一个行在一组有序行中的排位,序号从1开始
--row_number -- 返回连续的排位,不论值是否相等
--rank --具有相等值的行排位相同,序数随后跳跃
--dense_rank 具有相等值的行排位相同,序号是连续的
select d.dname,e.ename,e.sal,dense_rank() over (partition by e.deptno order by e.sal desc ) as denrank from emp e,dept d where e.deptno=d.deptno;
总结:
SQL是通用的数据库语言
SQL命令可分为数据定义语言、数据操纵语言、事务控制语言、数据控制语言
Oracle 支持的数据类型包括字符、数值、日期时间、raw和lob等
SQL支持的操作符包括算数、比较、逻辑、集合、和连接操作符
SQL函数大致分为单行函数、聚合函数和分析函数
描述truncate table 命令与delete命令的异同。
Oracle数据类型,DDL、DML、DCL、TCL语言,SQL操作符,SQL函数
标签:计算 高精度 修改 地址 efi struct 算术 uname 表结构
原文地址:http://www.cnblogs.com/zn615/p/7460638.html