3Oracle笔记

发布 2021-05-11 23:35:28 阅读 1499

oracle10g笔记。

一、ordbms

每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表窨相关联。

表空间的大小等于构成该表空间的所有数据文件大小之和。

段是构成表空间的逻辑存储结构,段由一组区组成。

一个区相当一行。

段分为:数据段、索引段、回退段和临时段。

段相当于一个表。

区为段分配空间,由连续的数据块组成。

区不能跨数据文件存在,只能存在于一个数据文件中。

create tablespace tablespacename datafile 'filename' size [k|m] [autoexected [off|on]

mysql: create user 'chenbing' @localhost identified by 'chenbing';

create user newusername identified by userpassword; /新建用户。

grant connect to username;//赋予权限。

grant select on to username;//赋予权限。

grant all on to username;//收回权限。

grant connect to username;//收回权限。

alter user scott account unlock;//解锁。

alter user scott account lock;//加锁用户。

revoke all on from username;//收回权限。

drop user username;//删除用户。

alter user 用户 identified by 新密码;

create table 权限包括:建表,删除,修改;

drop user scott cascade;

grant resource to martin; 角色允许用户使用数据库中的存储空间,有此权限才能建表。

二、修改表。

三种完整性:实体域引用自定义完整性。

大对象:clob:char

nclob:unicode

blob:bit

bfile:file

日期和时间在单引号内。

number(m)//m最长位数。

number(m,n)//m最长位数,n为小数位数。

pk,primary key

uq,unique key

df,default key

ck,check key

fk,foreign key

and or not 与或非。

alter table student_info

add constraint pk_stuinfo_stuid primary key(stu_id);

add constraint ..check(length(trim(stu_card))=18)

alter table student_info modify(stu_sex char(2) default '男');

alter table stuinfo modify(stu_sex char(2) default ''删除默认约束。

alter table test modify(joindate date default sysdate); 添加默认约束,中间不要加逗号。

alter table stuinfo modify(stu_sex char(2) null);-删除空约束。

alter table stu_exam add constraints

fk_exam_number foreign key(exam_number) references stu_info(stu_number);

alter table stu_exam add 字段名类型约束;

alter table stu_exam drop column 字段名;

查询条件为非空的:is not null;

查询示例:-1. 查询所有职员的所有信息。

select * from tbemp;

-2. 查询所有职员的姓名,**,地址。

select ename,etel,eaddr from tbemp;

-3. 查询所有女职员的详细信息。

select * from tbemp where(esex='女');

-4. 查询年龄在24到26岁之间的职员的姓名,性别。

select ename,esex from tbemp where(eage between 24 and 26);

-5. 查询家住长沙的女职员的姓名,**,地址。

select ename,etel,eaddr from tbemp where(esex='女' and eaddr like '%长沙%')

-6. 查询李云,孙一成,林笑的**,地址。

select ename,etel,eaddr from tbemp where(ename='李云' or ename='孙一成' or ename='林笑');

-7. 查询郴洲和株洲的职员的姓名,性别,年龄。

select ename,esex,eage from tbemp where(eaddr like '%郴洲%' or eaddr like '%株洲%')

-8. 查询家住长沙,年龄在25到28岁之间的男职员的姓名。

select ename from tbemp where(eaddr like '%长沙%' and esex='男' and eage between 25 and 28);

-9. 查询邮件地址为空的职员。

select ename from tbemp where(eemail is null);

-10.查询入职时间超过两年的员工

select ename from tbemp where(months_between(sysdate,ejointime)>2*12);

-11.查出1月份入职的员工

select ename from tbemp where(extract(mm from ejointime )=1月);

-12.将所有email为的邮箱改为。

update tbemp set eemail=replace(eemail,''

-13.找出年龄最小的两位长沙员工。

select ename from (select * from tbemp where (eaddr like '%长沙%')order by eage asc )where rownum <=2;

-14.查找员工信息,要求结果集表达方式为。

-字段名:个人信息。

-内容描述:'员工1,赵龙,今年25岁,家住湖南省长沙市伍家岭江南苑9栋203号'

select '员工1,'ename|| 今年' |eage ||家住' |eaddr as 个人信息 from tbemp

where (eid=1);

-15.求所有员工的年龄总和。

select eage,sum(eage) over ( order by eage range unbounded preceding ) l_csum from tbemp;

-16.分别求男,女员工年龄总和。

select eage,sum(eage) over ( order by eage range unbounded preceding ) l_csum from tbemp

where(esex='男');

select eage,sum(eage) over ( order by eage range unbounded preceding ) l_csum from tbemp

where(esex='女');

不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。其参数:

over(partition by columnname1 order by columnname2)含义:按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。例如:

employees表中,有两个部门的记录:department_id =10和20 select department_id,rank() over(partition by department_id order by salary) from employees就是指在部门10中进行薪水的排名,在部门20中进行薪水排名。如果是partition by org_id,则是在整个公司内进行排名。

2.不是over,是rank() over ,具体语法形如: rank ( over ( query_partition_clause] order_by_clause ) dense_rank ( over ( query_partition_clause] order_by_clause ) 可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序, 其中partition by 为分组字段,order by 指定排序字段

select mname as 姓名, sum(case when '语文' then end) as 语文, sum(case when '语文' then end) as 数学, sum(case when '语文' then end) as 英语, sum(case when '语文' then end) as 历史,from member,score,f where and

group by mname;

oracle 中在没有任何条件的情况下:一个行游标,一个列游标(指针)

select from where group by h**ing order by

--在oracle中null 为无穷大。

排列类型为:字符,number,日期。

sysdate//系统当前时间, 特殊函数。

select 'sdf' from dual;//dual是虚表。

upper(),lover()

>不等于。

select ename as 姓名 from emp; 要不就加""号,要不就什么都不加。

字段命别名:

ename as 姓名 --建议使用。

3oracle查询语句练习

实验三 查询语句的练习。一 实验目的。1.掌握select语句的基本语法 2.掌握子查询的表示 3.掌握多表查询的表示 二 实验内容及步骤。以scott登录数据库,查看scott用户已经存在的 并使用scott用户已存在的 做以下查询。注 把查询语句粘贴到相应题目下面,并保存。1 查看dept表结构...

oracle学习笔记 3

学习笔记 3 ddl create,alter,drop 创建用户 授权及收回授权 grant,revoke 数据库操作语言 select,insert,delete,update 常用系统函数 字符 length,lengthb,ltrim,rtrim,trim,substr,replace 字符...

oracle第3讲笔记 2

j a如何连接和操作oracle数据库。原理图。实现 我们在eclipse中,编写一个j a程序,完成对emp表的crud操作。j a连接oracle有两种方式。直连。jdbc原理。做jdbc开发有两个前提。1.import 有时 2.把导入到你的j a项目里。特别说明 如果使用jdbc直连,需要启...