CH2SQL查询和函数.docx
- 文档编号:2870540
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:16
- 大小:66.73KB
CH2SQL查询和函数.docx
《CH2SQL查询和函数.docx》由会员分享,可在线阅读,更多相关《CH2SQL查询和函数.docx(16页珍藏版)》请在冰豆网上搜索。
CH2SQL查询和函数
Oracle数据类型
类型
类型标识符
说明
数字类型
number(最大长度[,小数位])
存储整数、浮点数(最高精度38位)
int
整数型(38位)
字符类型
char
定长字符型,最大2000个字符enamechar(20)
nchar
unicode定长字符型,最大1000个字符
varchar
不推荐使用
varchar2
变长字符型,最大4000个字符
nvarchar2
Unicode变长字符型,最大2000个字符
long
变长字符型,最长2GB
日期类型
date
存储日期和时间部分,默认格式:
DD-MM月-YY精确到秒
(sysdate返回当前的系统时间)
timestamp
日期、时间和时区信息,秒值精确到小数点后6位
(systimestamp返回日期、时间、时区的系统时间)
RAW类型
RAW
与char类似,只是以二进制方式存储数据,最大2000字节
LONGRAW
存储可变长度的二进制数据,最大2GB
LOB类型
CLOB
大量字符数据
(大对象类型)
BLOB
二进制对象,如图形、视频剪辑和声音文件
可达4GB
BFILE
二进制文件,用于将二进制数据存储在数据库外部的操作系统文件中
dual表oracle的一个特殊表只一行记录oracle用来存放临时的系统数据
select'helloworld'fromdual;
获取系统时间:
selectsysdateas当前系统时间,systimestamp当前时间戳fromdual;
Oracle伪列
伪列就像一个表列,但是它并没有存储在表中
伪列可以从表中查询,但不能插入、更新和删除
常用的伪列有ROWID和ROWNUM
ROWID是表中行的存储地址,
该地址可以唯一地标识数据库中的一行,可以使用ROWID伪列快速地定位表中的一行
ROWNUM是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数
selectrowid,rownum,enamefromscott.emp;
--oracle三层嵌套分页
select*from
(
selectrw.*,rownumrnfrom
(select*fromscott.emporderbysaldesc)
rwWhererownum<=5
)wherern>0
SQL主要命令:
数据定义语言(DDL)
createalterdroptruncate
--createtable
--学生表字段:
编号,姓名,性别,年龄,生日,地址,身份证号
createtablescott.student
(
studentIdintnotnull,
studentNamevarchar2(20),
sexnchar
(1)default'男',
agenumber(3),
birthdaydate,
addressnvarchar2(100),
idCardchar(18),
constraintPK_studentprimarykey(studentId)
)tablespaceusers;
--如果没有指定表空间则放在默认表空间
--成绩表字段:
编号,Java分数,C#分数,JSP分数,学生编号
createtablescott.mark
(
markIdnumber(10)notnull,
Javanumber(4,1),
C#number(4,1),
JSPnumber(4,1),
studentIdint,
constraintPK_markprimarykey(markId)
)tablespaceusers;
--表加注释说明
commentontablestudentis'学生表';
--字段加注释说明
commentoncolumnstudent.idcardis'身份证号码';
commentoncolumnmark.Javais'Java成绩';
commentoncolumnmark.hibernateis'hibernate成绩';
--查看表结构
descmark;
--altertable
--更新student中的address默认值为'地址不详'
altertablestudentmodifyaddressdefault'地址不详';
--成绩表添加Struts列
altertablemarkaddstrutsnumber(4,1);
--成绩表删除Struts列
altertablemarkdropcolumnstruts;
--student表sex列添加检查约束男或女
altertablestudent
addconstraintCHK_student_sexcheck(sex='男'orsex='女');
--mark表studentId列添加外键约束
altertablemark
addconstraintFK_mark_studentforeignkey(studentId)referencesstudent(studentId);
--删除student表sex列检查约束
altertablestudent
dropconstraintCHK_student_sex;
--droptable
droptablemark;
--截断表和删除表记录
deletefromtable_name
删除表内容产生大量的回滚信息,所以如果表很大,则删除速度较慢
truncatetabletable_name删除表内容不写日志速度快
不能回滚
数据操纵语言(DML)
insertselectupdatedelete
序列
是Oracle用于生成唯一、连续序号的对象,实现自动增长
--创建序列语法
create[alter]sequence序列名--不允许更改起始值
[startwith100]
[incrementby1]--递增
[maxvalue100000|nomaxvalue][minvalue100|nominvalue]
[cycle|nocycle]--达到最大值或最小值是否循环
[cache30|nocache]--高速缓冲存储器integer默认20
[order]--按顺序生成序列号
示例:
createsequenceSEQ_STUDENT
startwith100
incrementby1
maxvalue1000000;
--引用序列
sequence_name.nextval--获取下一个序列值
sequence_name.currval--获取当前序列值
selectSEQ_STUDENT.Nextvalfromdual;
selectSEQ_STUDENT.CURRVALfromdual;
--修改序列
altersequenceseq_studentmaxvalue2000000;
--删除序列
dropsequenceseq_student;
--insert注意日期数据类型的默认格式为“DD-MM月-YY”
日期函数:
TO_date(‘日期’,’格式’)
insertintostudent(studentId,studentname,sex,age,birthday,idCard)
values(seq_student.nextval,'东方不败','男',22,'25-5月-90','123456789123456781');
insertintostudent(studentId,studentname,sex,age,birthday,idCard)
values(seq_student.nextval,'西门吹雪','女',28,
to_date('1992-5-26','YYYY-MM-DD'),null);
commit;
insertintomark(markId,java,c#,jsp,studentid)values(1,88.5,90.5,99,101);
insertintomark(markId,java,c#,jsp,studentid)values(3,88.5,90.5,99,101);
insertintomark(markId,java,c#,jsp,studentid)values(2,80.5,75.5,55,102);
commit;
--update
updatemarksetjava=100,c#=99.5wheremarkId=1;
commit;
--delete
deletefrommarkwheremarkId=2;
commit;
--select
--distinct去除重复行
selectdistinctstudentnameas学生姓名fromstudent;
--orderby
select*fromstudentorderbyage;
selectstudentName姓名,age年龄,address地址fromstudentorderbyage;
--表间数据复制
createtable表名asselect..
createtablescott.newempas(selectempno,ename,salfromscott.empwheresal>2000)
createtablenewemp2asselectename,salfromempwhere1=2;--只复制表结构
--以下复制源表数据需要先创建表
insertinto表名select..
createtablescott.newemp3(enamevarchar2(20),salnumber(10,2))
insertintoscott.newemp3selectename,salfromscott.empwheresal>2000
commit;--需要提交事务
事务控制语言(TCL)
commitrollbacksavepoint
事务是把多个操作作为一个不可分割的整体的最小工作单元
insertintoemp(empno,ename,sal)values(3333,'小三',8000);
insertintoemp(empno,ename,sal)values(2222,'小二',8000);
这两个语句作为一个整体,即在一个事务里,使用事务可以控制都成功或都失败
事务特性:
原子性
一致性
隔离性
持久性
Oracle事务控制基本操作:
事务边界(开始和结束)
Oracle事务开始于第一次执行的DML
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CH2SQL 查询 函数