1.oracle10g 11g:g(grid)表示网格技术
以baidu搜索为准,现在想使用一个软件,但是此软件在离自己非常近的地方就存在了下载地址,但是与自己非常远的地方也同样存在一个下载地址,而搜索引擎就有可能没有搜索到离自己近的下载,而是使用了更远的下载。那么这样一来肯定会造成资源的浪费。
所以新的网格概念就是将网络划分一个个的网格,通过网格表示一个区域。
先找自己所在的"网格",找不到的话再去找其他"网格"。
2.输出环境变量设置:
每行显示的长度: set linesize 长度 (默认80)
每页显示的长度: set pagesize 长度
3.命令行输入:"sqlplusw"进入sqlplusw窗口操作界面
在窗口中输入"ed 文件名称",输入完后,会提示用户是否创建文件。
编辑完成后,就可以通过@文件名称的方式来执行命令了。
以下几种输入方式都是正确的:
假设新创建的文件demo是在D盘的根目录下面
(1)txt文件
@d:demo.txt
@d:demo.txt
(2)sql文件(默认的是sql文件,其他格式的文件执行的时候必须带后缀名)
@d:demo
@d:demo
4.子查询的分类
(1)单列子查询:返回的结果是只有一列。
(2)单行子查询:返回的结果是只有一行,有坑是一条完整的记录。
(3)多行子查询:返回多行记录。
5.事务处理
所谓事务处理就是保证数据操作的完整性,所有的操作要么全部成功,要么全部失败。
每一个连接到数据库上的用户都是一个session。
6.组函数和统计函数、聚合函数是同一个概念
统计函数:max()、min()、avg()、sum()、count()
(1).统计函数必须出现在分组统计之中。
(2).所谓分组是只列中存在重复的内容,使用group by的方式进行分组的统计。
(3).如果要加入分组条件,则编写having 子句,所有的统计函数作为条件的时候
只能在having中出现,不能在where中出现。
(4)分组函数允许嵌套,但是嵌套之后就不能再查询其他字段,包括分组字段。
7.添加检查约束:
--匿名
age number(3) not null check(age between 0 and 100)
sex varcahr2(2) default '男' check(sex in ('男','女'))
--命名
检查约束: constranit tablename_age_ck(约束名称) check(age between 0 and 100)
主键约束: constranit tablename_id_pk(约束名称) primary key(id)
唯一约束: constranit tablename_name_uk(约束名称) unique(name)
外键约束: constranit tablename_name_fk(约束名称) foreign key(字段) references 父表名称(父表主键字段)
约束的修改:
alter table tablename add constranit ablename_name_uk(约束名称) unique(name);
约束的删除:
alter table tablename drop constranit ablename_name_uk(约束名称);
8.级联删除
删除表的同时删除约束: drop table tablename cascade constranit
删除时级联删除内容: constranit tablename_id_pk(约束名称) primary key(id) on delete cascade
9.嵌套表:
一张表中又包含有一个子表
举例:
(1)创建子表类型
create type project_ty as object
(
proid number(4),
proname varchar2(20),
prodata date
);
(2)为类型创建一个名称
create type project_nt as table of project_ty;
(3)创建嵌套表
create table department
(
deptno number(2) primary key not null,
dname varchar2(20) not null,
projects project_nt
)nested table projects store as project_nt_tab_temp;
插入数据:
insert into department(deptno,dname,projects)
values(1,'研发部',
project_nt(
project_ty(1001,'f1',sysdate),
project_ty(1002,'f2',sysdate),
project_ty(1003,'f3',sysdate)
)
);
嵌套表查询:
select * from department;
select * from table(select projects from department where deptno=1);
嵌套表的更新:
--将项目编号为1001的项目名称,将此项目名称更新为"测试项目"
update tabletable(select projects from department where deptno=1) pro
set value(project_ty('1001','测试项目',sysdate))
where pro.proid = 1001;
10.可变数组
例如:一个部门有多个工人
(1)首先要创建一个工人类型
create type worker_ino as object(
id number,
name varchar2(20),
sex varchar2(2)
);
(2)创建数组类型
create type work_info_list as varry(10) of worker_info;
(3)创建表
create table department
(
deptno number(2) primary key not null,
dname varchar2(20) not null,
works work_info_list
);
插入测试数据
insert into department(deptno,dname,works)
values(1,'研发部',
worker_info_list(
worker_info(1,'张三','男'),
worker_info(2,'李四','女'),
worker_info(3,'王五','男')
)
);