CH2SQL查询和函数.docx

上传人:b****5 文档编号:2870540 上传时间:2022-11-16 格式:DOCX 页数:16 大小:66.73KB
下载 相关 举报
CH2SQL查询和函数.docx_第1页
第1页 / 共16页
CH2SQL查询和函数.docx_第2页
第2页 / 共16页
CH2SQL查询和函数.docx_第3页
第3页 / 共16页
CH2SQL查询和函数.docx_第4页
第4页 / 共16页
CH2SQL查询和函数.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

CH2SQL查询和函数.docx

《CH2SQL查询和函数.docx》由会员分享,可在线阅读,更多相关《CH2SQL查询和函数.docx(16页珍藏版)》请在冰豆网上搜索。

CH2SQL查询和函数.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1