Web阶段–Oracle数据库基础知识点

一、数据库

1.定义

是一个数据存储管理的软件,全称rdbms(关系数据库管理系统),简称数据库(db)

2.为什么需要应用数据库?

1.现有文本文件存放数据缺陷a.程序复杂,效率低b.无法体现类型,无法做数据检查c.无法存储大量数据d.增删改查不方便
2.作用:对数据进行持久化(persistence)操作的。

3.数据库存储数据的结构

Table(表格) 实际负责数据存储的单元,通常也叫做“实体集”
Column(列) 表示业务数据中的一个具体的属性,也成为“字段”
Row(行)  存放了一组相关业务数据,通常叫做“实体”
主键:(Primary key) :可以唯一标识一组业务数据,非空,唯一
外键(Foreign Key):体现两张表数据关系的字段,值必须取自另一个表的主键,可以为null,可以重复

4.数据库的分类

1.关系型数据库(RDB Relationship DataBase)Oracle|DB2       MySQL|SQLServer|Postgre
2.对象型数据库 Object DataBase  对象
3.NOSQL数据库Hbase Rdis MongoDB ...

二、Oracle安装(XE版)

1.需要注意的问题

1.oracle安装路径需要不能含有中文或者空格。
2.安装过程中务必记录安装过程中所提示的信息以及自己填写的信息-----端口号/口令

2.卸载

一旦安装失败,不能使用360等第三方卸载工具卸载,要使用本oracle软件重新修复安装或者卸载

3.测试Oracle安装是否成功

1.查看oracle相关服务是否启动I:WIN+R-->输入services.mscII:OracleServiceXE:oracle核心服务,必须启动III:监听器OracleXETNSListener:允许网络上其他计算机通过1521(默认端口)端口来访问数据库服务
2.打开cmd--sqlplus--输入用户名:sys as sysdba----密码:安装过程中自己设置的密码,查看是否能够登陆成功
3.打开数据库主页:用户名为:sys密码:同上  查看是否能够进入数据库操作页面
4.解锁hr用户I:sqlplus sys as sysdba II:输入管理员密码III:解锁hr用户:alter user hr account unlock;VI:设置hr的密码: alter user hr identified by 密码;

三、Oracle数据库(访问、工作方式,命令区别)

1.Oracle数据库的访问方式

1.命令行方式访问 sqlplus 访问
2.Web页面访问 isqlplus [oracle11g 开始不再支持]
3.第三方工具 PL/SQL developer 工具

2.oracle数据库工作方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLs7I3ET-1589167180702)(C:\Users\ASUS\Desktop\160 班级目录\1.png)]

3.命令区别

1)sql命令 : 结构化的查询语言(重点),不可以缩写,不区分大小写,必须以;结尾
2)plsql命令: oracle数据库方言
3)sqlplus命令:工具自身的命令(可以缩写)start --- sqlplus命令,执行sql文件  desc --- 描述表结构

四、Oracle命令(重点)

1.查询命令

语法:select 字段名,字段名... from 表名;
1.可以显示该表全部信息或者部分信息案列:请查询员工的编号,姓名,工资和所在部门编号Select employee_id,last_name,salary,department_id from employees;案列:请查询员工的详细信息 (通过*表示所有字段)Select * from employees;
2.可以对查询的字段做数学运算案列:请查询员工的编号,姓名,以及年薪Select employee_id,last_name,salary*12 from employees;注意:1.数字类型+-*/    2.字符串类型不能做任何数学运算  3.日期类型值可以加减,以“天”为单位
3.可以为结果里的字段定义“别名”语法:紧跟在列之后空格接着写,如果含有特殊字符或者需要区分大小写,使用双引号select employee_id id, last_name, salary*12 “anual salary”from employees;4.字符串连接操作 :  || 案列:请显示员工编号,姓名,以及完整邮箱地址Select employee_id,last_name,email||’@zparkhr.com.cn’from employees;注意:如果在sql命令里使用到了字符串字面值或者日期字面值,需要使用单引号
5.distinct 去除查询结果里的重复数据案列:请显示我们公司里所有的职位 job_id Select distinct job_id from employees;

2.Order by排序

语法:select...from....order by 排序条件asc[默认的](升序)/desc降序
案列:请打印员工详细信息,并按照工资排序Select * from employees order by salary ;
案列:排序条件可以通过字段名,别名,或者下标指定Select employee_id,last_name,salary*12 from employees order by 3;
案列:多个排序条件Select * from employees order by salary,department_id;
案列:先按工资升序,工资相同在按部门升序排列Select * from employees order by salary,department_id desc; 先升再降
案列:先按工资降序,工资相同在按部门升序排列Select * from employees order by salary desc , department_id desc; 关于null值 : oracle中null被认定为最大值

3.条件查询(where) — 逐行筛选

语法:select...from....where筛选条件  order by....
1.等值条件判断    =   !=    【重点】案列:请查询30部门的员工信息Select * from employees where department_id=30;案列:请查询last_name叫做‘King’的员工信息Select * from employees where last_name = ‘King’ ;注意:字符串字面值区分大小写
2.逻辑判断   >   >=  <   <=   and   or  !    【重点】案列:请查询工资介于5000到10000的员工信息Select * from employees where salary>=5000 and salary<=10000 ;案列:查询last_name大于King的last_nameselect * from employees where last_name>=’King’;
3.多条件值查询(枚举) --- in     not in   【了解】案列:请查询30,50,70部门的员工信息复杂的写法:Select * from employees where department_id=30 or department_id=50 or …优化的写法:Select * from employees where department_id in(30,50,70);
4.区间查询 --- between …and     not between…and   【了解】案列:请查询工资介于5000到10000的员工信息Select * from employees where salary between 5000 and 10000;  包括边界值
5.关于null值查询  is null      is not null案列:请查询部门编号为null的员工信息Select * from employees where department_id is null;

4.模糊查询

语法:通配符:模糊查询时用来占位的符号:%----0到多个字符    _----有且只有一个字符
案列:请查询last_name是以‘K’开头的员工信息Select * from employees where last_name like ‘K%’;
案列:请查询last_name是由四个字符组成的员工信息Select * from employees where last_name like ‘____’;
案列: 请查询last_name是以’S_’开头的员工信息Select * from employees where last_name like 'S(_%' escape '(';转义字符:使得紧跟在它之后的字符就按照本意处理,不做任何特殊用途,oracle没有默认的转义字         符,使用时需要说明

5.oracle提供的函数(单行函数 组函数)

1.单行函数 : 作用于表里的一行数据,产生一个结果的函数1)abs函数:计算一个数据的绝对值select abs(salary) from employees;    --- 107行select abs(-126) from employees;    ----107行2)dual:哑表,oracle提供的单行单列表,为了维护select语句的完整性,里面的数据没有任              何意义,也不允许向里面存放数据select abs(-126) from dual;   --- 1行3)sysdate:获取db sv里的当前系统日期select sysdate from dual;数据库默认日期格式  dd-mon-rr 4) to_char( date日期值 ,‘格式字符串’)   【重点】作用 : 将给定的日期值按照格式字符串的要求转换成字符串类型值案列:请显示详细的当前系统时间Select to_char(sysdate,’yyyy-mm-dd,day,hh24:mi:ss’) from dual;案列:请显示2005年入职的员工信息Select * from employees where hire_date like ‘%05’;Select * from employees where to_char( hire_date, ‘yyyy’)=2005;案列:按照入职月份升序的方式显示员工信息Select * from employees order by to_char(hire_date,’mm’);5) to_date(string,’格式字符串’)将给定的string按照格式字符串的要求变成数据库支持的日期值思考:请写一句sql命令,查询你出生的那天是星期几Select to_char(to_date('1993-9-3','rr-mm-dd'),'day') "日期" from dual
2.组函数:作用于一组数据执行一次产生一个结果(表是一个超级大组)1)max() , min()  : 最大,最小值 , 适用于所有类型的数据select max(salary) from employees where department_id=30;2)avg() : 求平均值 ,适用于数字类型字段3)sum() : 求和, 适用于数字类型字段select max(salary),min(salary),avg(salary),sum(salary) from employees;4)count() : 统计数量注意: 所有组函数在统计时,null值都不在统计范畴count(字段名)  : 统计指定字段里非空值的数量count(*) : 统计结果中行的数量案列:统计30部门的人数Select count(*) from employees where department_id=30;案列:请统计公司里有多少种职位select count(job_id)from (Select distinct job_id from employees);

6.分组语句 group by

语法select....from....where...group by 分组条件.....order by...
硬性语法规定:1.只有出现在group by里的字段,才能够单独出现在select里2.没有出现在group by里的字段,必须配合组函数才能出现在select里3.如果在group by里对字段应用了某个单行函数,那么这个字段在select里必须使用同样的单行     函数才能出现
案例:请查询各部门最高工资思路:1.确定数据来源表:  from employees   107行2.数据筛选 :     没有               107行3.确定分组条件: group by department_id   4.统计数据:     select department_id, max(salary) 合并:Select department_id,max(salary) from employees group by department_id ;
案例:请统计1997年各部门的入职员工人数思路:1.from employees      107行2.where to_char(hire_date,‘yyyy’)=1997      29行3.group by department_id4.select department_id, count(*) 合并:Select department_id,count(*) from employees  where             to_char(hire_date,’yyyy’)=1997 group by department_id;
案列:请统计1997年各个月入职的员工人数思路:1.from employees2.where to_char(hire_date,’yyyy’)=19973.group by to_char(hire_date,’mm’)4.select to_char(hire_date,’mm’),count(*) 合并:select to_char(hire_date,’mm’),count(*)  from employees  where to_char(hire_date,’yyyy’)=1997  group by to_char(hire_date,’mm’)

7.having分组后数据筛选

语法:select....from....where...group by 分组条件.....having对组数据筛选 order by...
案例:请查询各部门人数,只显示人数大于2的信息Select department_id,count(*) From employees group by department_id having count(*)>2
案例:请查询30,50部门的最高工资1.Select department_id,max(salary) from employees where department_id in(30,50)      Group by department_id; 2.Select department_id,max(salary) from employees group by department_id            Having department_id in(30,50))
having和where的区别1.where:在group by之前执行,此时数据以行为单位存在,where里不能使用组函数2.having:在group by之后执行,此时数据以组的形式存在,having里不能使用单行函数3.如果一个功能having和where都可以实现,则优先选择where

五、伪列

1.数据库表里不存在的,通过select * 无法查询到的列 --- rownum  rowidSelect * , rownum , rowid from employees;   -- error解决方式一:Select  employees.* , rowid , rownum from employees; 方式二:Select  e.*,rowid,rownum from employees e ;
2.Rowid : 是一条记录在数据库里的唯一标识,是对记录所在空间的物理地址运算得到
3.Rownum:数据库服务器会为每一个出现在查询结果里的,满足要求的记录进行编号,从1开始编号案列:请打印员工表的前五行数据Select * from employees where rownum<=5;案列:请打印员工表的第6到第10行数据Select * from employees where rownum between 6 and 10;error这个要用到子查询注意: rownum必须从1开始使用(<   <=    =1  >=1   between 1 and … )
4.表名.*  或  表别名.*Select 后使用了*代表所有字段,其后如果再跟其它伪列或表达式 函数,则oralce纠结所有的含义,使用表名.* 指代 *只代表 指定表名中的所有字段 而不代表其它元素。为了简单SQL语句,可以给表 起别名,语法为  select...from  employees 别名,从而使用 表别名.* 。注意:表别名 的语法中 没有as关键字。

六、子查询

1.概念:

在一个查询命令执行过程中,嵌入另外一个查询语句(子查询)

2.作用

提供主查询需要的数据

3.查询步骤以及思路的案例

1.请查询公司里工资最高的员工信息a. 查询最高工资是多少   resultselect max(salary) from employees ;  b. 查询员工信息,工资等于resultselect * from employees where salary = result ;合并select * from employees where salary = ( select max(salary) from employees );
2.子查询结果为单行单列 --- 一个值  【重点】案列:请查询公司里工资高于平均工资的员工信息1. select avg(salary) from employees; ------ result2. select * from employees where salary > result ;合并:select * from employees where salary > ( select avg(salary) from employees) ;
3.子查询的结果为多行一列 ---- 多个值 【了解】案列:请查询与‘King’在同一部门工作的员工信息1. 查询King所在的部门编号select department_id from employees where last_name='King'; (查询到的部门是:80和90)2. 查询在 80和90部门工作的员工select * from employees where department_id in (80,90);合并:select * from employees where department_id in (select department_id from employees where last_name='King');
4.子查询结果是多行多列 --- 一张表(虚拟表)【重点】作用:可以针对虚拟表做二次查询案列:请查询员工表里工资最高的五名员工信息1. 对员工表数据做排序 按照工资降序排列select * from employees order by salary desc;  --- result 虚拟表2. 对结果数据筛选 where rownum<=5select * from (select * from employees order by salary desc) where rownum<=5
5.数据分页:对满足要求的数据分段显示【重点】1)显示的数据不需要排序开发步骤---查询第m到第n行数据第一步:先查询前n行数据,同时生成rn字段(rownum的别名)、第二步:根据rn字段获取需要的数据案列:打印表里的第六到第10名员工信息1.显示表里的前10行数据select e.*,rownum rn from employees e where rownum<=102. 利用虚拟表里的普通字段rownum进行数据查询select  *  from (select e.*,rownum rn from employees e where rownum<=10)where rn between 6 and 10;2)显示的数据需要排序开发步骤---查询第m到第n行数据第一步:先对表里的数据按要求排序  tab1第二步:针对tab1先查询前n行数据,同时生成rn字段(rownum的别名)、第三步:根据rn字段获取需要的数据案列:打印工资最高的第六到第10名员工信息1. 先排序select * from employees order by salary desc   -- t12. 查询前n行,生成rnselect t1.*,rownum rn from t1 where rownum<=10  -- t23. 根据rn获取需要的数据select * from t2 where rn between 6 and 10;合并select * from(select t1.*,rownum rn from (select * from employees order by salary desc) t1 where rownum<=10 )  where rn between 6 and 10;

七、关联子查询(了解)

案例:打印各部门工资最高的员工信息Select * from employees e1 where salary = (select max(salary) from employees e2Where e2.department_id= e1.department_id ) ;
图解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2V6hYdpK-1589167180707)(C:\Users\ASUS\Desktop\160 班级目录\2.png)]

难点:1.Where是逐行判断、2.表的别名可以标志查询语句

八、表连接

1.概念

 当查询结果数据来自于多两张表时,需要使用特定的连接条件将两张表的记录连接在一起,这种语法“表链接”案例:请查询员工的编号,姓名,工资,以及所在部门的名称
select employee_id,last_name,salary,department_name from employees , departments
where employees.department_id = departments.department_id;

2.分类

1.内连接语法:使用关键字inner join连接两张表,其中inner可以省略,使用关键字on给定连接条件,其他判定条件仍然使用where指定案列:请查询60部门的员工编号,姓名,工资,以及部门名称select e.employee_id,e.last_name,e.salary,d.department_name from employees e inner join  departments d  on  e.department_id = d.department_id where e.department_id = 60 ;特点:只考虑连接条件成立的记录,对于连接条件出现null的记录直接舍弃,不出现在结果中
2.外连接特点:可以处理连接条件为null的记录分类:a.左外连接【重点】使用关键字left outer join连接两张表,其中outer可以省略 ,连接条件使用on给定  在表连接过程中,以左表为主(左表记录全部出现),右表辅助案例:请查询员工表的所有信息,以及对应的部门信息select e.*,d.*  from employees e left join departments don e.department_id = d.department_id; b.右外连接  使用关键字right outer join连接,outer可以省略,连接条件用on给定  在表连接过程中以右表为主,左表辅助案例:请查询员工表的所有信息,以及对应的部门信息select e.*,d.* from departments d right join employees e on e.department_id = d.department_id ;c.全外连接使用关键字full outer join连接,outer可以省略,两张表的记录全部出现案例:请查询员工表的所有信息,以及对应的部门信息select e.*,d.* from employees e full join departments d on e.department_id = d.department_id ;
3.自连接案列:请打印员工的姓名,以及他上司的姓名select  e.last_name, m.last_name from employees e left  join  employees m on  e.manager_id = m.employee_id ;
4.多表连接(语法)案列 请查询员工的姓名,所在部门的名称,以及所在的城市select e.last_name,d.department_name,lo.city from employees e left join departments d on e.department_id = d.department_id left join locations lo on d.location_id = lo.location_id;

3.面试题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lUPFpUGI-1589167180711)(C:\Users\ASUS\Desktop\160 班级目录\1557197468732.png)]

九、建表

1.语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66gHe9uO-1589167180715)(C:\Users\ASUS\Desktop\160 班级目录\第二阶段\第二阶段课堂笔记\数据库\assets\1557200438929.png)]

2.合法标识符

1.由 字母 、数字、_、$、# 组成 , 其中数字不能开始
2.不区分大小写,长度控制在30个字符
3.不能是关键字,不能与数据库当前用户下的其他对象命名冲突

3.数据类型

a.数字类型(不区分整数和浮点类型)1) number( v1, v2 )  ---  有效位数为v1,其中小数点后占v2位, v1最大可取值为38案例: number(7,2) --- 表示的最大数字 99999.992) number(v1)  ---- 一个整数3) number  ----  表示一个很大的浮点数 , 类似于java里的double
b.字符串类型(不区分字符和字符串)1)  varchar2( n ) : 可变长字符串,最大容量n个字节,根据实际值的长度调整存储空间,n的最大取值40002)  char(n) : 定长字符串,长度n个字节,使用固定长度存储数据,n的最大取值为40003) nvarchar2(n) : 可变长字符串,最大容量是n个字符,n最大取值为1333
c.日期类型1)  date :  标准日期格式  dd-mon-rr ,可以精确到秒       sysdate2)  timestamp : 时间戳  , 可以精确到10负六次方秒     systimestamp
d.大数据类型1)  blob :  二进制大对象, 最大空间4G2)  clob : 字符大对象 ,  最大空间 4G

4约束

a.主键约束:使用关键字 primary key 定义, 特点是非空唯一 ,简称pk
b.非空约束: 使用关键字not null定义 , 特点是字段必须有数据,简称nn
c.唯一约束:使用关键字unique定义,当前字段里的值不重复(有值时,值不重复),简称uk唯一键
d.检查约束(自定义约束):使用关键字check定义,简称ck
e.外键约束:使用关键字  references 表名(字段名)定义 , 简称fk,特点值必须来自于关联表的主键(foreign key)案例:team(id ,name ,amount)create table team(id number(3) primary key,name varchar2(15) not null,     父表amount number(2));student(id ,name,mobile,email,study_date,married,tid)create table student(id number(5) primary key,name varchar2(15) not null,mobile char(11) not null,                 子表email varchar2(30) unique check( email like '%@%'),study_date date default sysdate,married number(1) default 0,tid number(3) references team(id));

5.特殊约束的定义(联合键)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Q7qWI7W-1589167180718)(C:\Users\ASUS\Desktop\160 班级目录\第二阶段\第二阶段课堂笔记\数据库\assets\1557214480324.png)]

Ⅹ、数据库的增删改查

1.添加数据 insert

1.全表插入(为表里所有的字段插入数据)语法: insert into  表名  values( 值1,值2,..... )要求:值的个数,类型,顺序必须与表里字段完全一致案例:请向team表插入一条数据insert into team values(1,'超神',8);案例:请向学生表里插入一条数据insert into student values(1,'zhangsan','12345678909','zhangsan@123.com',sysdate,0);
2.选择插入语法:insert into 表名(列1,列2,....) values(值1,值2,....)要求: 值的个数,类型,顺序必须与前面小括号里的选择一致  对于表里非空,并且没有默认值的字段,必须入选案列:请向student表里有选择的插入一条数据insert into student(id,name,mobile) values(3,'wangwu','90876543212');

2.修改数据 update

语法: update 表名  set   字段名=新值,字段名=新值   where  .... ;
案例:update student set email='wangwu@123.com',tid=1 where id=3;

3.删除数据 delete

语法: delete from 表名  where 条件 ;
案例:delete from student where id=3;    okdelete from team where id=1;       删除主键不成功

4.关于删除功能的补充

1. 关于数据的删除1) delete 删除数据 : 直接清空表里的数据,保留数据所占空间2) truncate命令:截断表里的数据,数据被删除,同时数据所占空间被释放,只保留表头(先销毁表,再创建表头)语法: truncate table  表名 ;3) drop 命令: 删除表( 数据 和 结构 )语法: drop  table   表名 【cascade constraint 】;

5.关于关联表的删除

1) 有外键指向的两个表创建时: 先父后子
2)删除动作 :  先子后父
注意:a.希望删除父表数据 先删除子表数据,在删除自己;或者先清空子表相应的外键,在删除自己b.希望删除父表 drop table 表名 cascade  constraint;cascade constraint : 级联操作子表的外键约束,在删除父表的同时,将子表里的外键约束删

6.SQL命令的分类

1. DQL:数据查询语言,完成数据的查询操作(select)【重点】
2. DML:数据操纵语言,完成对数据的访问操作(insert,update,delete)【重点】
3. DDL:数据定义语言,用来操作数据库里对象的命令(create【重点】  drop   truncate  alter rename)
4. DCL:数据控制语言,权限管理的命令 (grant revoke)(commit 提交 rollback 回滚)

十一、事务

1.概念

是操作数据库的最小单位,是由一组不可再分的sql命令组成的集合,事务的大小取决于实际业务的难易程度

2.实现原理

 数据库服务器会为每一个连接上来的client,开辟一小块内存空间(回滚段),用来暂时保存sql命令的执行结果,在事务没有结束之前,回滚段里的数据只对当前client可见,当事务结束时,需要client明确处理回滚段中的数据。 事务成功则发出commit指令,数据库会将回滚段的数据写入数据文件;失败则发出rollback,db会将回滚段数据清空。

3.事务边界

1.begin:执行第一条sql命令时,事务被开启
2. end:1) 执行了一组DML(insert update delete)命令,都需要手动输入commit或者rollback来结束事务2) 执行了一条DDL 或者 DCL 命令,命令后自带commit,执行成功事务直接结束3) 执行了一组DML命令后,断开client连接,正常退出做commit,非正常退出做rollback案例:insert  update  commit  delete  update  create  insert  update  exit结论:含有三个事务,其中第二个事务的commit是create命令自带的,delete和update结果随着create的commit一起被写入数据库

4.数据安全

1) 数据服务器为表里的每一行数据提供一把“锁”,称之为“行级锁”
2) 写锁 : 是因为事务对记录做了(insert update delete)添加了“行级锁”当前事务对表里的记录做了增删改动作之后,数据库服务器会将事务操作过的记录加“行级锁”,锁没有打开之前,其他事务不能在对该条记录做DML命令。当事务结束时,行级写锁会自动打开释放,随机分配给其他等待这个锁标记的client。
3) 查询功能不受写锁控制(查到的内容是数据库里的原始数据)
4) 读锁: 可以在查询过程中对记录加锁(手动完成)select * from xxx for update;得到所有查询结果 并 对结果里的行加锁 select * from xxx for update nowait;查询数据同时获取记录的锁,如果无法成功立刻返回select * from xxx for update wait n;获取锁时可以等待n秒,如果n秒后无法获取立刻返回

十二、主键的自动生成策略

1.max函数生成

1)第一步:通过max函数查询表里的最大主键值 select  max(id) from 表名 ;   ---result
2)第二步:对max(id)+1 生成新的主键插入到表里 insert into 表名 values( result+1,  ......)
3)缺陷: 多个用户并发访问时,还是有可能出现主键冲突

2.通过系统提供的函数生成主键

1)sys_guid():会返回一个128bit的数字,注意需要将之间字段的数据类型改为number
2)dbms_random.random() : 可以返回一个随机整数(可能正,可能负)

3.通过自定义表来生成主键

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HHvgh5VX-1589167180721)(C:\Users\ASUS\Desktop\160 班级目录\第二阶段\第二阶段课堂笔记\数据库\assets\1557297704789.png)]

十三、序列

1.作用

是一种oracle数据库对象,可以生成一系列唯一的数值,用来作为主键插入表

2.创建:

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SWnNP44t-1589167180724)(C:\Users\ASUS\Desktop\160 班级目录\第二阶段\第二阶段课堂笔记\数据库\assets\1557298680937.png)]

3.使用

通过序列提供的变量 nextval 来获取序列里的值1.查看 : select  seq1.nextval  from  dual; 2.插入 : insert into test1 values( seq1.nextval , 'aaa' );

4.删除

drop sequence 序列名 ;

十四、试图

1.概念

一个起了名字的查询语句(只存储命令,不存储数据)

2.创建

create view  视图名  as   查询语句 ;
访问使用视图,相当于在调用视图里存储的查询语句 。

3.作用

1)简化查询 create view v1 as  select * from employees order by salary desc;案例:查询工资最高的前五名员工select  * from v1 where rownum <=5;案例:查询工资最高的6-10名员工select * from (  select v1.*,rownum rn from v1 where rownum<=10 ) t2 where rn between 6 and 10;
2)帮助权限控制create view  emp as select employee_id,last_name,...,department_id from employees;create view boss as select * from employees;作用:取消employees表的访问权限

4.删除视图

drop  view   视图名;

十四、索引

1.组成

是一个两列多行的表格,第一列一般是对字段值的排序,第二列一般是这个值所在的地址。
案例: 针对name字段添加索引   ( 对name字段的所有值排序,rowid)

2.作用

提高查询效率(db sv 会自动为表里的 pk 和  uk 建立索引)

3.创建

create index  索引名  on  表(字段);

4.索引时间开销

索引不是越多越好1)如果查询的结果记录比较多,不适合用索引2)频繁增删改的数据库表不适合建立过多的索引

Web阶段--Oracle数据库基础知识点相关推荐

  1. Oracle数据库基础知识点大全(一)

    Oracle数据库基础知识点大全 一.数据库基本概念 E-R模型 数据库对象 二:标准SQL包含了4种基本的语句类别 三:DML语句(数据操作语句) 数字和日期使用的数学表达式 常用 where 查询 ...

  2. Oracle数据库基础知识点汇总

    1.数据库 database 2.主键 ,表的唯一性标识的一列,主键的值永远不能重.primary key 主键的类型:单一主键:一列构成的:复合主键:多个列组合起来充当主键.多采用流水号,单一列当做 ...

  3. 【Oracle SQL数据库-教学2】--- Oracle数据库基础

    [Oracle SQL数据库-教学2]- Oracle数据库基础 文章目录 [Oracle SQL数据库-教学2]--- Oracle数据库基础 本期主要内容: 一. 数据库管理系统概述 ① 数据处理 ...

  4. Oracle数据库基础教程

    查看书籍详细信息: Oracle数据库基础教程 编辑推荐 体现作者多年的数据库管理与开发经验,结合大量实用技巧,重点突出,便于灵活掌握,提供典型应用实例与上机实验,分析详细,实用性强. 本书是作者结合 ...

  5. oracle 数据库怎么查询,Oracle 数据库基础查询

    1.1文件存储 对数据的存储需求一直存在.数据保存的方式,经历了手工管理.文件管理,数据库管理阶段. 文件存储方式保存数据的弊端: 1.缺乏对数据的整体管理,数据不便修改: 2.不利于数据分析和共享; ...

  6. SSH:Oracle数据库基础

    2019独角兽企业重金招聘Python工程师标准>>> Oracle数据库基础 一:Oracle基础知识 Oracle数据库的主要特点 (1.)支持多用户,大事务量的事务处理 (2. ...

  7. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  8. oracle 语句 在线测试,2017年Oracle数据库基础测试答案.doc

    . . word完美格式 2017年Oracle数据库基础测试答案 姓名 成绩 一.单项选择题(每题1分,共60分) 列出EMP表中,从事每个工种(JOB)的员工人数 A.select job fro ...

  9. Oracle数据库基础教程:入门其实很简单

    为什么80%的码农都做不了架构师?>>>    Oracle数据库基础教程:入门其实很简单 Oracle数据库系统是目前最流行的客户/服务器数据库之一.本文集从初学者的角度出发,由浅 ...

最新文章

  1. caffe的prototxt文件
  2. 搞懂了这几点,你就学会了Web编程
  3. docker脚本安装 阿里云_让运行在 Docker 中的 Ghost 支持阿里云 OSS
  4. Python: Python中的AttributeError错误
  5. Linux内核笔记--内存管理之用户态进程内存分配
  6. 拿了年终奖后,发现自己又拖后腿了?对不起,可能事实并没有那么糟糕...
  7. apache derby_Apache Derby数据库用户和权限
  8. [转]JavaScript:只能输入数字(IE、FF)
  9. linux while read文件,linux shell脚本用while read逐行读取文本的问题
  10. NFS与NAS谁更适合VMware
  11. 为了多拿点补贴,马斯克甚至还当过“渣男”?
  12. 苹果自研5G调制解调器将在2023年量产 采用台积电4nm工艺
  13. html-webpack-plugin 中使用 title选项设置模版中的值无效
  14. 使用openssh的登录的三种方法
  15. (原创)Windows系统后安装ubuntu,无法选择启动ubuntu。
  16. OpenCV人工智能图像处理学习笔记 第6章 计算机视觉加强之机器学习中 SVM和HOG特征
  17. Kindle PaperWhite 3 5.8.10越狱成功!
  18. Linux操作系统-----应用开发概述
  19. Java异或性能测试速度为2.5GiB/s
  20. rd640服务器引导,ThinkServer RD640 OS安装手册 V1.4.pdf

热门文章

  1. 第二章:Django快速上手
  2. 树莓派救援机器人制作
  3. 微信API接口目录大全
  4. androidStudio配置安装git以及下载项目
  5. 408 计算机学,问一下 今年计算机考408的有哪些学校?
  6. idea中web文件没有小蓝点问题解决
  7. 基于matlab的LDPC编译码误码率仿真,调制方式为64QAM
  8. 初学者必看!3D建模要学什么软件?
  9. React使用Video.js播放rtmp,hls视频
  10. vue---批量删除表格数据