csdn涨薪技术-软件测试Oracle数据库全套教程

1.什么是数据库?

>> 存储数据的仓库

【文章末尾给大家准备了大量的福利哦】

2.常见的数据库有哪些?

Oracle>>甲骨文

Mysql>>甲骨文

SQLServer>>微软

Access>>微软

DB2>>IBM

人大金仓>>国产

3.生活中哪些地方使用数据库?

超市商品管理系统>>商品信息

网上购物商城>>商品信息和账户信息

银行管理系统>>账户信息

12306>>账户信息和车次信息

一、数据库发展史

1.1 程序管理阶段

20世纪50年代中前期

特点:数据不能长期保存

1.2 文件系统阶段

20世纪50年代后期-->20世纪60年代中后期

特点:数据缺乏独立性

1.3 数据库系统阶段

20世纪60年代后期

特点:数据实现共享,减少冗余

二、数据库中专业术语

2.1 关系

一个关系就是一张二维表(比如:Excel)

2.2 属性

二维表中的一列叫做属性,或者“字段”或者“

2.3 元组

二维表中的一行叫做元组,或者“记录”或者“

三、Oracle数据库及连接工具介绍

3.1 Oracle数据库是美国ORACLE公司研发的一款关系型数据库,市场使用率比较高,特点有:安全性高、访问速度快、可以跨平台。主要版本有:Oracle9i、

Oracle10g、Oracle11g、Oracle12c

连接工具介绍:

1)SQL Developer----Oracle 自主研发

2)PL/SQL Developer

3)Navicat

3.2 数据库访问

开始>cmd>DOS>sqlplus>请输入用户名:system

                              输入口令:123456

连接到:

Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

SQL>

3.3 表空间

表空间是一个虚拟的概念可以无限大,但是需要由数据文件作为载体。

表空间是用来存储数据库对象(表、视图、索引、列)的容器,表和表空间的关系就像文件和文件夹关系,因为主要存储表,所以称为表空间。

a. 在数据库创建的时候,系统会默认创建表空间(SYSTEM)

b. 可以通过SYSTEM表空间,创建其他表空间

c. 一个数据库中,可以有多个表空间,或者只有一个SYSTEM表空间

3.4 数据类型

3.4.1 字符型

char、varchar、varchar2

(1)char(n)表示固定长度的字符串,n表示字符串的最大长度,当实际要保存的长度小于n时,在字符串的右侧使用空格补齐

(2)varchar(n)表示可变长度的字符串,n表示字符串的最大长度,当实际要保存的长度小于n时,按照实际长度保存

(3)varchar2(n)是Oracle公司自主研发的数据库类型,和varchar类型类似,也是可变长度的字符串,但是兼容性更好,在企业开发中,常使用varchar2代替varchar。

3.4.2 数值型

number

(1)number(n)表示整数n表示整数的最大位数

例如:number(3)  100  999

(2)number(n,m)表示整数或者小数,n表示有效的数值。m表示小数的最大位数,n-m表示整数的最大位数。

例如:number(5,2)  123.45  599.48

3.4.3 日期型

date 表示日期类型,年月日时分秒

默认日期格式DD-MON月-YY

DD---多少号

MON---月份

YY---年份

3.5 SQL语句

结构化查询语句,通过SQL语句,可以对数据库进行操作。

SQL语句分类:

(1)数据定义语言DDL(Data Ddefinition Language)

主要是对数据库中的表进行创建、修改、删除

创建---->create

修改---->alter

删除---->drop

(2)数据操纵语言DML(Data Manipulation Language)

主要是对表中的数据,进行插入、修改、删除

主要为以上操作 即对数据进行操作的,对应上面所说的查询操作 DQL与DML共同构建了多数初级程序员常用的增删改查操作。而查询是较为特殊的一种 被划分到DQL中。

插入---->insert

修改---->update

删除---->delete

(3)TCL 事务控制语句

主要是对数据进行提交和回滚

提交事务---->commit

回滚事务---->rollback

TCL_事务控制语言

TCL 溯

    transaction  事务   --  DML

           定义为把一连串的操作作为单个逻辑工作单元处理

               -----     例如:银行转账

事务特性   ACID

    原子性     atomicity           所有的数据修改  要么一起执行  要么不执行

    一致性     congsistency     所有的数据修改同时得到反应

    隔离性     isolation             另一个事务需要在此事务结束之后才能执行

    持久性     durability           数据变动是永久的

  

使用事务的优点:

   他们保证了数据的一致性

   使用事务使得数据修改更为灵活而且修改过程是可控的

   即使在用户处理失败或者系统发生故障时数据仍然是安全的

   事务保证DML(数据操纵语言)语句对于数据的所作的变动是一致的

隐式事务   DDL

显式事务   DCL   - commit

commit  语句完成显式事务,并且使得所有的修改是永久有效的

rollback   语句终止当前事务,使得数据库返回到以前的状态

实例:

  1.  select * from student;
  2.     update student set sex = '人' where stuNo = '00011';
  3.     commit;
  4.     rollback; -- 回滚至上一commit之后 
  5.   show autocommit;  -- 默认off
  6.   set autoCommit on;
  7.   set autoCommit off;
  8.     
  9.     create table AA(
  10.       AA char(10)
  11.     );  -- 隐式commit
  12.   select * from bankcount;  
  13.   -- 多条语句 事务
  14.   update bankcount set money = money - 10000 where countno = '110 000 2000 888';
  15.   update bankcount set money = money + 10000 where countno = '110 000 2000 889';
  16.   rollback;
  17.   commit;
  18.   
  19.   -- rollback   定义保存点 savePoint;
  20.   SAVEPOINT aa;
  21.     update bankcount set money = money + 10000 where countno = '110 000 2000 888';
  22.   SAVEPOINT bb;
  23.     update bankcount set money = money - 10000 where countno = '110 000 2000 889';
  24.   rollback to bb;   -- 回滚之保存点之后
  25.   commit;

在下列情况下,数据修改自动被回滚: 

    1. 系统崩溃或发生故障. 

    2. SQL*Plus 意外终止. 

隔离性: 

  上锁防止多个用户同时修改数据.

  上锁可以是隐式或显式的. 

  上锁的一些基本内容:

             上锁可预防并发事务之间的破坏性的交互.

             上锁是自动施行的,无须用户干预.

             上锁把操作限制到可能的最小粒度. 

             只有在事务结束后,上锁才被解除.

             DML行数据排它锁

             事务排它锁

(4)数据查询语言DQL(Data Query Language)

主要是对数据进行查询(数据库学习的重点)

查询---->select

3.6 创建表

格式:

create table 表名(

列名1 数据类型 primary key,

列名2 数据类型,

......

列名n 数据类型

);

create table stu(

id number(4) primary key,

name varchar2(20),

sex char(3)

);

create table stu2(

id number(4) primary key,

name varchar2(30)

);

练习1:创建一张表,表名为stu3,表中包含的字段有

id number(4) primary key

name varchar2(30)

address varchar2(50)

create table stu3(

id number(4) primary key,

name varchar2(30),

address varchar2(50)

);

练习2:创建一张表,表名为stu5,表中包含的字段有

id number(4) primary key

name varchar (30)

sex char(3)

address varchar2(50)

score number(5.2)

stime date

create table stu5(

id number(4) primary key, --编号

name varchar(30), --姓名

sex char(3), --性别

address varchar2(50), --地址

score number(5,2), --分数

stime date --时间

);

3.7 查看表结构

格式:desc表名;

案例:查看stu表的表结构

desc stu;    

练习3:查看stu5表的表结构

desc stu5;

3.8 插入数据

3.8.1 向全部列插入数据

格式: insert into 表名 values(列值1,列值2,......列值n);

说明: 表中的列和values中的列值是一一对应的关系

验证: select * from 表名;

案例: 向stu表中,插入2条记录

(1)desc stu;  3个值

(2)

insert into stu values(1001,'rose','');

insert into stu values(1002,'jack','男');

insert into stu values(1003,'cat','男');

(3)select * from stu;

练习:向stu2表中插入3条记录并验证

(1)desc stu2;  2个值(ID和name)

(2)

insert into stu2 values(1004,'tedu');

insert into stu2 values(1005,'from');

insert into stu2 values(1006,'come');

(3)select * from stu2;

练习:向stu3表中插入2条记录并验证

(1)desc stu3;

(2)

insert into stu3 values(1007,'大王','杭州');

insert into stu3 values(1008,'小王','成都');

(3)select * from stu3;

3.8.2 向指定列插入数据

insert into 表名(列名1,列名2,......列名n) values(

列值1,列值2,......列值n);

说明:表名中的列名必须和values中的列值是一一对应的关系(数量、顺序、类型)

验证:select * from 表名

案例:向stu表中插入2条记录

ID    NAME    SEX

109   辰东

110             女

insert into stu(id,name) values(109,'辰东');

insert into stu(id,sex) values(110,'女');

select * from stu;

练习:向stu3表中插入2条记录

ID     NAME     ADDRESS

234    杨过         null

235    null        终南山

insert into stu3(id,name) values(234,'杨过');

insert into stu3(id,address) values(235,'终南山');

select * from stu3;

练习:向stu5表中插入数据,具体要求如下:

DD-MON月-YY------>'29-3月-19'

1.使用全部列插入方式,插入2条记录

desc stu5;

insert into stu5 values(1,'tom','男','北京',100.55,'29-3月-19');

select * from stu5; -----验证

insert into stu5 values(2,'rose','女','杭州',)

select * from stu5; -----验证

2.使用指定列插入方式,插入2条记录

ID             NAME           SEX

insert into stu5(id,name,sex) values(4,'lucy','女');

ID             SCORE          STIME

insert into stu5(id,score,stime) values(5,100,'20-3月-19');

复习:

1.数据类型

字符型

固定char(3)  可变varchar(20)  可变varchar2(30)

数值型

整数number(3)  整数和小数number(5,2)

日期型

date 年月日时分秒 DD-MON月-YY

2.创建表

create table 表名(

列名1 数据类型 primary key,

列名2 数据类型,

......

列名n数据类型

);

3.查看表结构

说明:表结构就是查看表中有几列和每列的数据类型

desc 表名;

4.插入语句

全部列插入数据

insert into 表名 values(列值1,列值2,...列值n);

指定列插入数据

insert into 表名(列名1,列名2,...列名n) values(列值1,列值2,...列值n);

3.9修改(更新)语句

格式: update 表名 set 列名1=该列新值,列名2=该列新值,...列名n=该列新值 where 条件;

说明: 如果没有where条件,修改表中全部数据。

案例:创建一张表stu6,表中包含的字段有:id number(4) primary key,

name varchar2(20)

sex char(3)

address varchar2(50)

score number(5,2)

create table stu6(

id number(4) primary key,

name varchar(20),

sex char(3),

address varchar2(50),

score number(5,2)

);

练习:

insert into stu6 values(101,'tom','男','美国',80);

insert into stu6 values(102,'lucy','女','法国',90);

insert into stu6(id,sex,address,score) values(103,'男','北京','100');

insert into stu6(id,name,sex) values(104,'rose','女');

insert into stu6(id,name,score) values(105,'jack','65');

insert into stu6(id,sex,address) values(106,'男','上海');

select * from stu6;

格式: update 表名 set 列名1=该列新值,列名2=该列新值,...列名n=该列新值 where 条件;

案例:修改stu6表中,编号(id)是102的,地址(address)修改为中国

update stu6 set address='中国' where id=102;

select * from stu6;

练习:修改stu6表中,编号(id)是101的记录,将分数(score)修改为100

答案:

update stu6 set score=100 where id=101;

select * from stu6;

练习:修改stu6表中,编号(id)是103的记录,将姓名(name)修改为lili

答案:

update stu6 set name='lili' where id=103;

练习:修改stu6表中,姓名(name)是rose的记录,将分数(score)修改为80.5

答案:

update stu6 set score=80.5 where name='rose';

练习:修改stu6表中,地址(address)是上海的记录,将姓名(name)修改为xiaoh,分数(score)修改为60.55

答案:

update stu6 set name='xiaoh',score=80.5 where address='上海';

练习:修改stu6表中全部数据,将地址(address)修改为北京---->特殊情况

答案:

update stu6 set address='北京'

3.10删除表中的数据

格式:

delete from 表名 where 条件;

说明:如果没有where条件,删除全部记录。

案例:删除stu6表中,编号(id)是105的记录。

答案:

delete from stu6 where id=105;

select * from stu6;

练习:删除stu6表中,姓名(name)是rose的记录

答案:

delete from stu6 where name='rose';

select * from stu6;

练习:删除stu6表中全部数据---->(特殊情况)

答案:

delete from stu6;

select * from stu6;

3.11删除表

格式:drop table 表名;

案例:删除stu6表

答案:

drop table stu6;

3.12查询语句(重点)

英文

汉语

table

primary

主键

insert

插入

values

update

更新(修改)

set

设置

where

哪里

delete

删除(表中)

from

来自

drop

删除(表)

select

查询

commit

保存

distinct

去重

order by

排序

asc

升序

desc

降序

and

并且

or

或者

not

非(取反)

is null

为空

is not null

不为空

alter

修改(表)

constraint

约束

unique

唯一

3.12.1查询全部列数据

格式:select * from 表名;

说明: *:表示全部列

案例:查询emp、dept、salgrade表中的全部数据

emp---->员工表

dept---->部门表

salgrade---->工资等级表

答案:

select * from emp;

select * from dept;

select * from salgrade;

3.12.2查询指定列数据

格式:select 列名1,列名2,......列名n from 表名;

案例:查询emp表中,员工编号(empno),员工姓名(ename),员工职位(job),工资(sal)

select empno,ename,job,sal from emp;

练习:查询emp表中,员工编号(empno),职位(job),入职时间(hiredate),部门编号(deptno)

答案:

select empno,job,hiredate,deptno from emp;

练习:查询dept表中,部门编号(deptno),部门名称(dname),部门地址(loc)

select deptno,dname,loc from dept;

3.12.3 给列起别名

格式:select 列名1 别名1,列名2 别名2,...列名n 别名n from 表名;

案例:查询emp表中,员工编号(empno),员工姓名(ename),职位(job),领导编号(mgr),奖金(comm)

答案:

select empno 员工编号,ename 员工姓名,job 职位,mgr 领导编号,comm 奖金 from emp;

练习:查询salgrade表中,工资等级(grade),最低工资(losal),最高工资(hisal)

答案:

select grade 工资等级,losal 最低工资,hisal 最高工资 from salgrade;

练习:查询dept表中,部门名称(dname),部门地址(loc)

答案:

select dname 部门名称,loc 部门地址 from dept;

3.12.4 去掉重复的列值(去重)

格式:select distinct 列名 from 表名;

案例:去掉部门编号(deptno)重复的列值,在emp表中

select distinct deptno from emp;

练习:查询emp表中,职位(job)的种类(笔试题)

答案:

select distinct job from emp;

练习答案:

create table stu5(

id number(4) primary key, --编号

name varchar(30), --姓名

sex char(3), --性别

address varchar2(50), --地址

score number(5,2), --分数

stime date --时间

);

create table stu01(

sno number(8) primary key,

sname varchar2(20),

sex char(3),

age number(3),

etime date,

address varchar2(50)

);

复习:

1.更新(修改)语句

格式: update 表名 set 列名1=该列新值,列名2=该列新值,...列名n=该列新值 where 条件;

2.删除表中的数据

格式:delete from 表名 where 条件;

3.删除表

格式:drop table 表名;

4.查询全部列数据

格式:select * from 表名;

5.查询指定列数据

格式:select 列名1,列名2,......列名n from 表名;

6.给列名起别名

格式:select 列名1 别名1,列名2 别名2,...列名n 别名n from 表名;

7.去掉重复的列值(去重)

格式:select distinct 列名 from 表名;

3.12.5 排序(order by)

格式:select */列名 from 表名 order by 列名1 asc/desc,列名2 asc/desc;

说明:asc---->升序排列

    desc---->降序排列

案例:查询emp表中,员工编号(empno),员工姓名(ename),职位(job),工资(sal),根据员工编号(empno)降序排列

答案:

select empno,ename,job,sal

from emp

order by empno desc;

练习:

查询emp 表中,编号(empno),姓名(ename),职位(job),入职时间(hiredate),工资(sal),根据工资升序排列。

答案:

select empno,ename,job,hiredate,sal

from emp

order by sal asc;

练习:

查询emp表中,编号(empno),姓名(ename),职位(job),部门编号(deptno),首先根据部门编号升序排列,如果部门编号一致,根据员工编号降序排列。

答案:

select empno,ename,job,deptno

from emp

order by deptno asc,empno desc;

练习:

查询emp表中,编号(empno),姓名(ename),职位(job),工资(sal),首先根据工资升序排序,如果工资一致(相同),再次根据编号(empno)降序排列。

答案:

select empno,ename,job,sal

from emp

order by sal asc,empno desc;

注意:order by 永远放在格式的最后面。

 重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料

需要的私我关键字【000】免费获取哦 注意关键字是:000

项目实战:

大型电商平台:

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

全套软件测试自动化测试大厂面经

python自动化测试++全套模板+性能测试

听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!

猜你喜欢

转载自blog.csdn.net/m0_60054525/article/details/125262641