ORACLE数据库(重新认识oracle)

ORACLE数据库

数据库简介 文件存储数据的缺点
数据库与数据库管理系统
关系型数据库

主流关系型数据库 大型数据库
中小型数据库
SQL语言 结构化查询语言
数据定义语言(DDL)
数据操作语言(DML)
数据查询语言(DQL)
数据控制语言(DCL)
事物控制语言(TCL)
Oracle访问 远程登录数据库服务器
使用SQL*PLUS访问数据库
使用SQL Developer访问数据库

Oracle数据类型 SQL语句基础语法
create建表语句
NUMBER
CHAR
VARCHER2
DATE
创建表 使用CREATE语句
DEFAULT
NOT NULL
修改表 修改表名
修改列
增加列
删除列
DML INSERT语句
UPDATE语句
DELETE语句

一、数据库介绍
1.文件存储数据的缺点
对数据的存储需求一直存在。保存数据的方式,经历了手工管理、文件管理等阶段,直至数据库管理阶段。

文件存储方式保存数据的弊端:
实现了记录内的结构性,但整体无结构,数据不便修改(只能改个别数据,不方便统一批量修改);
不利于数据分析和共享;
数据量急剧增长,大量数据不可能长期保存在文件中。

数据库应运而生,是人们存放数据、访问数据、操作数据的存储仓库。

2.数据库与数据库管理系统
数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。
数据库管理系统(Database Management System,简称DBMS):管理数据库的软件。

数据库,简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。

DBMS和DB
DBMS-DB

3、关系型数据库
关系数据库,是建立在关系模型基础上的数据库,使用关系模型把数据组织到数据表(Table)中,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示
关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表(Table)及其之间的联系组成的一个数据组织。
主流数据库产品:
Oracle(Oracle)
DB2(IBM)
SQL Server(MS)
MySQL(Oracle)
TABLE

4.表
在关系数据库中,数据被存放于二维数据表(Table)中。表是数据库中存储数据的基本单元。

一个关系数据库由多个数据表组成,数据表是关系数据库的基本存储结构,由行和列组成,行(Row)也就是横排数据,也经常被称作记录(Record),列(Column)就是纵列数据,也被称作字段(Field)。表和表之间是存在关联关系的。
在软件开发技术比如 Java 中 , 现实世界的实体使用对象来描述 , 所以数据表和对象之
间存在一种对应关系。数据表相当于类(Class) , 数据表的行就是某个对象的实例(Instance) ,
其中每个列都是对象实例的属性(Field)。
TABLE

二、主流关系型数据库
SYSTEM

1.大型数据库
Oracle数据库概述
Oracle是当今著名的Oracle(甲骨文)公司的数据库产品,它是世界上第一个商品化的关系型数据库管理系统,也是第一个推出和数据库结合的第四代语言开发工具的数据库产品。
Oracle采用标准的SQL结构化查询语言,支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、WINDOWS等多种平台。Oracle公司的软件产品丰富,包括Oracle服务器产品,Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前最新的版本是Oracle 12c。

DB2数据库概述
DB2是IBM的关系型数据库管理系统,DB2有很多不同的版本,可以运行在从掌上产品到大型机不同的终端机器上。DB2 Universal Database Personal Edition和DB2 Universal Database Workgroup Edition分别是为OS/2和Windows系统的单用户和多用户提供的数据库管理系统。
DB2在高端数据库的主要竞争对手是Oracle

2.中小型数据库
SQL Server
Microsoft SQL Server是运行在Windows NT服务器上,支持C/S结构的数据库管理系统。它采用标准SQL语言,微软公司对它进行了部分扩充而成为事务SQL(Transact-SQL)。
Microsoft SQL Server几个初始版本适用于中小企业的数据库管理,但是后来它的应用范围有所扩展,已经触及到大型、跨国企业的数据库管理

MySQL数据库概述

MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。
与其它的大型数据库例如Oracle、IBM DB2等相比,MySQL自有它的不足之处,如规模小、功能有限等,但对于一般个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
2008年1月16日,Sun正式收购MySQL。2009年4月20日,SUN被Oracle公司收购 。

数据库比较表
数据库 MySQL SQL Server Oracle
授权价格 当前,MySQL 采用双重授权(Dual Licensed),他们是 GPL 和 MySQLAB 制定的商业许可协议。如果你在一个遵循 GPL 的自由(开源)项目中使用 MySQL,那么你可以遵循GPL 协议免费使用 MySQL。否则,你需要购买 MySQLAB 制定的那个商业许可协议。Windows $200 Unix 或 Linux 自行安装免费 Unix 或 Linux 第三方安 装$200 SQL 2008 标准版: [1CPU 无限用户 R2 版本] ¥31900 [R2 5 用户] ¥5500 SQL 2008 企业版: [1CPU 无限用户 R2 版本] ¥143800 [R2 10 用户] ¥25400 Oracle 10G//11G 标准版 [10 用户] ¥25600 Oracle 10G//11G 标准版 [1CPU 无限用户] ¥157600 Oracle 10G //11G 企业版 [25 用户] ¥213500 Oracle 10G //11G 企业版 [1CPU 无限用户] ¥276000
平台支持 各种平台,适合 Linux 只能运行在Windows 平 台 支持大多数平台
特点 MySQL 比较小,易于安装维护和管理,操作简单,最重要的是它是三个中唯一一个开源数据库,但目前也属于Oracle 公司的产品了。对于中小型应用都可以支持,最大并发是6000, 性能不错。一般 PHP 程 序比较喜欢用 MySQL。 SQL Server 是微软的产品,对 .net 程序支持比较好,对于一般的应用来说都够用了。基本上.net 阵营中很少使用SQL Server 以外的数据库产品。 Oracle 是 Oracle 的数据库产品,它体积比较庞大,可以在同一机器上运行多个实例,一般用来开发大型应用 (例如分布式)
优缺 价格 便宜(部分免费) 适中 较贵

点 容量 使用 MyISAM 存储引擎,最大表尺寸为65536TB。MySQL 数据 库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL 内部限 制决定。 数据库大小 524258 TB 文件大小(数据文 件)16TB 文件大小(日志文件)2TB 无限,根据配置决定
难易 度 较易上手,简单快速 容易,图形化的用户界面使得易用性和友好性 较强 较难,偏复杂
存 储 可存储 (限于 MyISAM 类型表) 可存储 可存储
备 份 不支持热备份 可备份 可备份
数据类 型 基本 sql 数据,不完全支持扩展 大部分 sql 数据类型以及扩展 标量(scalar)、复合(composite)、引用(reference)、 和 LOB 四种类型
安全性 一般,复杂而非标准 没有获得任何安全证书 Oracle 的安全认证获得最高认证级别的 ISO 标准认证。数据安全级别为 C2 级(最高级)。
性能 使用 CPU 和内存极少, 性能很高,但拓展性稍差 当用户连接多时性能会变的很差,并且不够稳定,并行实施和共存模 型并不成熟。 全面,完整,稳定, 但一般数据量大, 对硬件要求较高
维 护 方便简单 比较容易 复杂,工作量大
开发环 境 PHP+MySql+Linux .net+SQLServer+wind ows 适合任何系统与开发语言
其他 使用缺省的 IP 端口,但是有时候这些IP 也会被 一些黑客闯入;使用 没有开放性,安全性和伸缩性也都不高,客户 端支持及应用模式 ,是 数据库崩溃后回复很麻烦,因为他把 很多东西放在内存

MyISAM 配置,不慎损坏数据库,结果可能会 导致所有的数据丢失 C/S 结构,只支持 windows 客户,数据不容易恢复 里;数据库连接要慢些,最好用连接 池;
在 windows 下的性能 在 windows 下的性能 (秒): 连结时间:0.28493 插入一万条记录 : 12.94204 更新一万条记录 : 50.34521 删除一万条记录 : 31.28243 查询 15909 条记录(无引索):10 添加引索后快于 mysql
(秒):
连结时间:0.01364 Oracle 在 Linux 下
插入一万条记录 : 的性能,在少量数
2.80973 据 时 速 度 低 于
更新一万条记录 : sqlserver 与
速度 812.48759 mysql , 在千万级
删除一万条记录 : 时速度快于 Mysql
184.05414 但低于 sqlserver,
查询 15909 条记录(无 而超过了亿级时速
引索):0.9 度最快
而在Linux 下mysql 各项
数据都要快于 sqlserver

SQLserver 在windows 下的性能 以及 Oracle, MySQL 在linux 下的性能作比较(还有其他数据库系统,例如 DB2,informix 等)结果,在 500 并发连接以下, SQLserver 只比 Oracle, MySQL 稍弱一点点,比其他数据库系统都强!但到了 750 就开始拉大距离,上了 1000 以后所有数据库系统都不行了,只有 MySQL 还紧紧地追着 oracle,而 SQLserver 的性能下降的最厉害,到了 1200 以后,SQLserver 成为最后一名,弱于参与测试的所有数据库系统。
另外,Oracle 自始至终都是最强悍的,不过 MySQL 始终追得很紧,平均下来,性能上只是在 1000 并发连接以后距离才与 Oracle 拉大。

注:
以上的价格为参考数据,不代表目前实际价格。

三、SQL语言
1.结构化查询语言
SQL(Structured Query Language) 是结构化查询语言的缩写,是一种语言。

SQL 语言可以用来在关系数据库上查询数据 , 操纵数据 , 定义数据 , 控制数据 , 使软件开发人员、数据库管理员都可以通过 SQL 语言对数据库执行特定的操作。大多数数据库都使用相同或者相似的语言来操作和维护数据库。
SQL可分为:
数据定义语言(DDL) : Data Definition Language
数据操纵语言(DML) : Data Manipulation Language
事务控制语言(TCL):Transaction Control Language)
数据查询语言(DQL):Data Query Language
数据控制语言(DCL) : Data Control Language

1.数据定义语言(DDL)
用于建立、修改、删除数据库对象,包括创建语句(CREATE)、修改语句(ALTER)、删除语句(DROP)。
使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROPTABLE删除表等动作。这类语言不需要事务的参与,自动提交。

2.数据操作语言(DML)
用于改变数据库数据,包括INSERT、UPDATE、DELETE三条语句。
其中,INSERT语句用于将数据插入到数据库中,UPDATE语句用于更新数据库中已存在的数据,DELETE用于删除数据库中已存在的数据。DML语言和事务是相关的,执行完DML操作后必须经过事务控制语句提交后才真正的将改变应用到数据库中。

3.数据查询语言(DQL)
用来查询所需要的数据。在工作中使用最多,语法灵活复杂。

4.数据控制语言(DCL)
用于执行权限的授予和收回操作、创建用户等,包括授予(GRANT)语句,收回(REVOKE)语句,CREATE USER语句,其中GRANT用于给用户或角色授予权限, REVOKE用于收回用户或角色已有的权限。DCL语句也不需要事务的参与,是自动提交的。数据控制语言一般由数据库管理员使用。

5.事务控制语言(TCL)
用来维护数据一致性的语句,包括提交(COMMIT)、回滚(ROLLBACK)、保存点(SAVEPOINT)三条语句,其中COMMIT用来确认已经进行的数据库改变, ROLLBACK语句用来取消已经进行的数据库改变,当执行DML操作后(也就是上面说的增加、修改、删除等动作),可以使用COMMIT语句来确认这种改变,或者使用ROLLBACK取消这种改变。SAVEPOINT语句用来设置保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变。

四、ORACLE访问
1.远程登录数据库服务器
Oracle数据库作为市场以及技术上领先的数据库产品,提供了丰富和简单易用的数据库开发和管理工具。有两种主要工具:
1).命令行工具,Oracle自带的SQL*PLUS
2).Oracle提供的图形界面工具:SQL Developer。

这些工具可能和数据库在同一台服务器上,也可能安装在另一台机器中
连接图例

2.使用SQLPLUS访问数据库
SQL
Plus是Oracle数据库提供的和数据库进行交互的软件工具,是被系统管理员和开发人员广泛使用的开发和管理工具,功能强大,使用简单,可以运行在任何Oracle运行的平台上,默认和数据库一起安装。SQL*Plus是一个基于传统的C/S结构的SQL开发工具,客户端和服务器端可以在同一台主机或不同主机上。

我们主要使用客户端和服务器端在不同主机上的访问方式:
a.打开终端,远程登录到数据库所在的机器上
输入:telnet 服务器IP地址
b.输入登录远程机器操作系统的用户帐号和用户密码。
c.登录远程机器操作系统成功后,
输入:sqlplus
d.输入登录数据库的帐号和密码,正确后如果出现SQL提示符,则表示登录成功:
CONNECT
e.退出时,在SQL>后输入exit即可
EXIT
f.再输入exit,即退出远程服务器

KEY

TEST

3.使用SQL Developer访问数据库
Oracle SQL Developer是Oracle官方出品的免费图形化开发软件工具,相对SQL*Plus来说,图形化的界面便于操作,不必记忆大量的命令,操作数据库更简单,输出结果美观。它的基本功能包括结果的格式化输出,编辑器自动提示,代码美化,显示SQL的执行计划,监控会话,编写以及调试存储过程等。官方和免费两个特征让这个工具极具吸引力。

SQL Developer软件需要安装之后才能使用,而且由于SQL Developer是使用Java编写的,需要用到JDK中的java.exe执行程序,在第一次使用SQL Developer的时候需要指定本机的JDK中bin目录下的java.exe程序。
(注意:JDK与SQL Developer版本兼容性问题,安装的时候必须保证同时是64位或32位的,否则不能正常使用SQL Developer)

one
第一次进入SQL Developer,需要设置连接参数。首先在窗口左边的连接上按右键,开启一个新的连接,输入远程数据库的参数,界面如图
two

成功建立了连接之后,在连接上按右键点击连接,然后在此界面中操作SQL语句即可
three

五、Oracle数据类型
1.SQL语句基础语法

sql 语句是用分号结尾的
sql 语句的大小写不敏感
SQL 可以写在一行或者多行
关键字不能被缩写也不能分行
使用缩进提高语句的可读性

2.create建表语句
create table 表名 (
列名1 数据类型,
列名2 数据类型,
……
);

user1_xxx:建表语句中表名不能重复(在同一个数据库下不能有重名的表),在同一个表中别名不能重复
create table user1_xxx(
id number(5)
);

3.DESC语句
DESC是查看表的数据结构,语法是:
DESC 表名;

DESC user1_xxx;

4.NUMBER
NUMBER表示数字类型,经常被定义成NUMBER(数字的总位数,小数点后面的位数)形式

–id列中,整数位最大为8位,小数位最大位数是2位,也就是最大取值:99999999.99。
create table user2_xxx(
id number(10,2)
);

5.CHAR
CHAR表示固定长度的字符类型,经常被定义成CHAR(N)形式, N表示占用的字节数,N的最大取值是2000。

–name列中,最多可存储20个字节的字符串,并且占用的空间是固定的20个字节,如果定义的数据不满20个字节补空格
create table user3_xxx(
name char(20)
);

6.VARCHAR2
VARCHAR2表示变长的字符类型,定义格式是VARCHAR2(N), N表示最多可占用的字节数,最大长度是4000字节。

–phone列中最多可存储长度为15个字节的字符串。根据其中保存的数据长度,占用的空间是变化的,最大占用空间为15个字节。
create table user4_xxx(
phone varchar2(15)
);

7.DATE
DATE用于定义日期时间的数据,长度是7个字节,默认格式是:DD-MON-RR, 例如:“11-APR-71”。如果是中文环境,是“11-4月-71”这种形式。

–birthday列中存放的是日期数据
create table user5_xxx(
birthday date
);

六、创建表
1.使用create语句
1).列与列之间用",“隔开
2).最后一个列不能加”,"

–使用create语句创建student_xxx表
create table student_xxx(
id number(10),
name varchar2(30),
phone varchar2(15),
sex char(1),
score number(4,2) --成绩
);

2.DEFAULT
可以通过DEFAULT子句给列指定默认值,例如,在student表中给sex列赋默认值‘M’,如果插入数据时没有指定性别的员工,则默认是男性。

create table student1_xxx(
id number(10),
name varchar2(30),
phone varchar2(15),
sex char(1) default ‘M’, --性别,默认值是M
score number(4,2) --成绩
);

3.NOT NULL
默认情况下,任何列都允许有空值。非空(Not Null)是一种约束条件,用于确保字段值不为空,当某个字段被设置了非空约束条件,这个字段中必须存在有效值,也就是说,当执行插入数据的操作时,必须提供这个列的数据,当执行更新操作时,不能给这个列的值设置为NULL

–创建表student2_xxx,设置name字段为非空,也即是表student2_xxx中的每条记录,name列都必须有值。
create table student2_xxx(
id number(10),
name varchar2(30) not null,–name必须有值
phone varchar2(15),
sex char(1),
score number(4,2) --成绩
);

七、修改表
1.修改表名
在建表后如果希望修改表名,可以使用RENAME语句实现,语法如下:
RENAME 旧表名 TO 新表名;

–将表名student_xxx修改为stu_xxx,使用如下语法:
rename student_xxx to stu_xxx;

2.增加列

在建表之后,要给表增加列可以使用ALTER TABLE的ADD子句实现。语法如下:
ALTER TABLE 表名 ADD
(列名 数据类型 [DEFAULT 表达式] [, 列名 数据类型…])

注意,列只能增加在最后,不能插入到现有的列中。下例给表stu_xxx增加一列birthday,并设置默认值为当前日期。
alter table stu_xxx add(
birthday date default sysdate --sysdate当前系统日期
);

3.删除列

在建表之后,使用ALTER TABLE的DROP子句删除不需要的列。语法如下:
ALTER TABLE 表名 DROP (列名);
删除字段需要从每行中删掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要比较长的时间,应该尽量避免该操作

删除表stu_xxx的列birthday:
alter table stu_xxx drop(birthday);

4.修改列
建表之后,可以改变表中列的数据类型、长度和默认值,注意这种修改仅对以后插入的数据有效,另外如果表中已经有数据的情况下,把长度由大改小,有可能不成功,比如原来的类型是VARCHAR2(100),其中已经存放了100个字节长度的数据,如果要改为VARCHAR2(80),则不会修改成功。

语法如下:
ALTER TABLE 表名 MODIFY
(列名 数据类型 [DEFAULT 表达式] [, 列名 数据类型…])
–修改表stu_xxx的列socre,并增加默认值的设置:
alter table stu_xxx modify(
score number(4,2) DEFAULT 0
);

八、DML
先创建两个表
DROP TABLE dept_xxx;
CREATE TABLE dept_xxx
(deptno NUMBER(4),
dname VARCHAR2(18) ,
loc VARCHAR2(13) ) ;

DROP TABLE employee_xxx;
CREATE TABLE employee_xxx
(empno NUMBER(4) ,
ename VARCHAR2(20),
job VARCHAR2(15),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(4) );

1.INSERT语句
INSERT语句用来给数据表增加记录,每次增加一条记录。语法如下:
INSERT INTO 表名[(列名1[, 列名2…])]
VALUES(值1[, 值2…]);
需要注意:
1.如果不写列名,是必须插入所有列的记录,缺少一列值就会报错
INSERT INTO 表名 VALUES(值1[, 值2…]);
2.如果写了列名,这种插入很灵活,插入列数不固定,但是插入值的顺序必须与列对应
3.所有的DML操作,都需要再执行事务提交语句commit,才算真正确认了此操作。

–向employee_xxx表插入一条记录的例子如下:
INSERT INTO employee_xxx(empno, ename, job, sal)
VALUES(1001, ‘Tom’, ‘PROGRAMMER’, 5500);
–提交
commit;
–查询employee_xxx表中的所有记录
select * from employee_xxx;

Oracle中的日期数据比较特殊,如果插入的列有日期字段,需要考虑日期的格式。Oracle的默认的日期格式‘DD-MON-RR‘,你或者按照默认格式插入数据,或者自定义日期格式,用TO_DATE函数转换为日期类型的数据。

–使用默认日期格式插入记录
INSERT INTO employee_lzh(empno, ename, job,hiredate)
VALUES(1002, ‘mark’, ‘ANALYST’, ‘01-9月-81’);
–日期类型插入方式与数据库所在操作系统有关 英文’01- Sep-89’ 中文’01-9月-89’
–使用自定义日期格式插入记录
INSERT INTO employee_lzh(empno, ename, job,hiredate)
VALUES(1003, ‘jim’, ‘MANAGER’,
TO_DATE(‘1971-09-01’, ‘YYYY-MM-DD’));

练习:
给dept_xxx、employee_xxx表插入数据
INSERT INTO dept_xxx VALUES
(10,‘ACCOUNTING’,‘NEW YORK’);

INSERT INTO dept_xxx VALUES
(20,‘RESEARCH’,‘DALLAS’);

INSERT INTO dept_xxx VALUES
(30,‘SALES’,‘CHICAGO’);

INSERT INTO dept_xxx VALUES
(40,‘OPERATIONS’,‘BOSTON’);

commit;
SELECT * FROM dept_xxx;

INSERT INTO employee_xxx VALUES(7369,‘SMITH’,‘CLERK’,7902,to_date(‘17-12-1980’,‘dd-mm-yyyy’),800,NULL,20);
INSERT INTO employee_xxx VALUES(7499,‘ALLEN’,‘SALESMAN’,7698,to_date(‘20-2-1981’,‘dd-mm-yyyy’),1600,300,30);
INSERT INTO employee_xxx VALUES(7521,‘WARD’,‘SALESMAN’,7698,to_date(‘22-2-1981’,‘dd-mm-yyyy’),1250,500,30);
INSERT INTO employee_xxx VALUES(7566,‘JONES’,‘MANAGER’,7839,to_date(‘2-4-1981’,‘dd-mm-yyyy’),2975,NULL,20);
INSERT INTO employee_xxx VALUES(7654,‘MARTIN’,‘SALESMAN’,7698,to_date(‘28-9-1988’,‘dd-mm-yyyy’),1250,1400,30);
INSERT INTO employee_xxx VALUES(7698,‘BLAKE’,‘MANAGER’,7839,to_date(‘11-5-1981’,‘dd-mm-yyyy’),2850,NULL,30);
INSERT INTO employee_xxx VALUES(7782,‘CLARK’,‘MANAGER’,7839,to_date(‘19-6-1987’,‘dd-mm-yyyy’),2450,NULL,10);

INSERT INTO employee_xxx VALUES(7788,‘SCOTT’,‘ANALYST’,7566,to_date(‘19-4-1987’,‘dd-mm-yyyy’),3000,NULL,20);
INSERT INTO employee_xxx VALUES(7839,‘KING’,‘PRESIDENT’,NULL,to_date(‘12-11-1981’,‘dd-mm-yyyy’),5000,NULL,10);
INSERT INTO employee_xxx VALUES(7844,‘TURNER’,‘SALESMAN’,7698,to_date(‘18-9-1986’,‘dd-mm-yyyy’),1500,0,30);
INSERT INTO employee_xxx VALUES(7876,‘ADAMS’,‘CLERK’,7788,to_date(‘2-5-1987’,‘dd-mm-yyyy’),1100,NULL,20);
INSERT INTO employee_xxx VALUES(7900,‘JAMES’,‘CLERK’,7698,to_date(‘3-2-1981’,‘dd-mm-yyyy’),950,NULL,30);
INSERT INTO employee_xxx VALUES(7902,‘FORD’,‘ANALYST’,7566,to_date(‘3-1-1981’,‘dd-mm-yyyy’),3000,NULL,20);
INSERT INTO employee_xxx VALUES(7934,‘MILLER’,‘CLERK’,7782,to_date(‘23-11-1982’,‘dd-mm-yyyy’),1300,NULL,10);
commit;

select * from employee_xxx;

2.UPDATE语句
UPDATE语句用来更新表中的记录,语法如下:

UPDATE 表名
SET 列名= 列值[, 列名= 列值…]
[WHERE 条件];
其中WHERE子句是可选的,但是如果没有WHERE子句,则全表的数据都会被更新,一定要注意

更改员工Tom的薪水为8500:
UPDATE employee_xxx SET sal = 8500 WHERE ename = ‘Tom’;

3.DELETE语句

DELETE语句用来删除表中的记录,语法如下:
DELETE [FROM] 表名 [WHERE 条件];
和UPDATE语句一样,WHERE子句是可选的,但是如果没有WHERE子句,则全表的数据都会被删除,务必确认后再予以删除。

删除员工号为1001的员工记录:
DELETE FROM employee_xxx WHERE empno=1001;

总 结
通过本课,您应该可以完成:
1.Oracle安装与访问
2.使用SQL*PLUS访问数据库
3.使用SQL Developer访问数据库
4.create建表语句
5.修改表
6.INSERT语句、UPDATE语句、DELETE语句

数据库

数据库简介 文件存储数据的缺点
数据库与数据库管理系统
关系型数据库

主流关系型数据库 大型数据库
中小型数据库
SQL语言 结构化查询语言
数据定义语言(DDL)
数据操作语言(DML)
数据查询语言(DQL)
数据控制语言(DCL)
事物控制语言(TCL)
Oracle访问 远程登录数据库服务器
使用SQL*PLUS访问数据库
使用SQL Developer访问数据库

Oracle数据类型 SQL语句基础语法
create建表语句
NUMBER
CHAR
VARCHER2
DATE
创建表 使用CREATE语句
DEFAULT
NOT NULL
修改表 修改表名
修改列
增加列
删除列
DML INSERT语句
UPDATE语句
DELETE语句

一、数据库介绍
1.文件存储数据的缺点
对数据的存储需求一直存在。保存数据的方式,经历了手工管理、文件管理等阶段,直至数据库管理阶段。

文件存储方式保存数据的弊端:
实现了记录内的结构性,但整体无结构,数据不便修改(只能改个别数据,不方便统一批量修改);
不利于数据分析和共享;
数据量急剧增长,大量数据不可能长期保存在文件中。

数据库应运而生,是人们存放数据、访问数据、操作数据的存储仓库。

2.数据库与数据库管理系统
数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。
数据库管理系统(Database Management System,简称DBMS):管理数据库的软件。

数据库,简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度的特点、是与应用程序彼此独立的数据集合。

DBMS和DB

3、关系型数据库
关系数据库,是建立在关系模型基础上的数据库,使用关系模型把数据组织到数据表(Table)中,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示
关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表(Table)及其之间的联系组成的一个数据组织。
主流数据库产品:
Oracle(Oracle)
DB2(IBM)
SQL Server(MS)
MySQL(Oracle)

4.表
在关系数据库中,数据被存放于二维数据表(Table)中。表是数据库中存储数据的基本单元。

一个关系数据库由多个数据表组成,数据表是关系数据库的基本存储结构,由行和列组成,行(Row)也就是横排数据,也经常被称作记录(Record),列(Column)就是纵列数据,也被称作字段(Field)。表和表之间是存在关联关系的。
在软件开发技术比如 Java 中 , 现实世界的实体使用对象来描述 , 所以数据表和对象之
间存在一种对应关系。数据表相当于类(Class) , 数据表的行就是某个对象的实例(Instance) ,
其中每个列都是对象实例的属性(Field)。

二、主流关系型数据库

1.大型数据库
Oracle数据库概述
Oracle是当今著名的Oracle(甲骨文)公司的数据库产品,它是世界上第一个商品化的关系型数据库管理系统,也是第一个推出和数据库结合的第四代语言开发工具的数据库产品。
Oracle采用标准的SQL结构化查询语言,支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、WINDOWS等多种平台。Oracle公司的软件产品丰富,包括Oracle服务器产品,Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前最新的版本是Oracle 12c。

DB2数据库概述
DB2是IBM的关系型数据库管理系统,DB2有很多不同的版本,可以运行在从掌上产品到大型机不同的终端机器上。DB2 Universal Database Personal Edition和DB2 Universal Database Workgroup Edition分别是为OS/2和Windows系统的单用户和多用户提供的数据库管理系统。
DB2在高端数据库的主要竞争对手是Oracle

2.中小型数据库
SQL Server
Microsoft SQL Server是运行在Windows NT服务器上,支持C/S结构的数据库管理系统。它采用标准SQL语言,微软公司对它进行了部分扩充而成为事务SQL(Transact-SQL)。
Microsoft SQL Server几个初始版本适用于中小企业的数据库管理,但是后来它的应用范围有所扩展,已经触及到大型、跨国企业的数据库管理

MySQL数据库概述

MySQL是一个开放源码的小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。
与其它的大型数据库例如Oracle、IBM DB2等相比,MySQL自有它的不足之处,如规模小、功能有限等,但对于一般个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
2008年1月16日,Sun正式收购MySQL。2009年4月20日,SUN被Oracle公司收购 。

数据库比较表
数据库 MySQL SQL Server Oracle
授权价格 当前,MySQL 采用双重授权(Dual Licensed),他们是 GPL 和 MySQLAB 制定的商业许可协议。如果你在一个遵循 GPL 的自由(开源)项目中使用 MySQL,那么你可以遵循GPL 协议免费使用 MySQL。否则,你需要购买 MySQLAB 制定的那个商业许可协议。Windows $200 Unix 或 Linux 自行安装免费 Unix 或 Linux 第三方安 装$200 SQL 2008 标准版: [1CPU 无限用户 R2 版本] ¥31900 [R2 5 用户] ¥5500 SQL 2008 企业版: [1CPU 无限用户 R2 版本] ¥143800 [R2 10 用户] ¥25400 Oracle 10G//11G 标准版 [10 用户] ¥25600 Oracle 10G//11G 标准版 [1CPU 无限用户] ¥157600 Oracle 10G //11G 企业版 [25 用户] ¥213500 Oracle 10G //11G 企业版 [1CPU 无限用户] ¥276000
平台支持 各种平台,适合 Linux 只能运行在Windows 平 台 支持大多数平台
特点 MySQL 比较小,易于安装维护和管理,操作简单,最重要的是它是三个中唯一一个开源数据库,但目前也属于Oracle 公司的产品了。对于中小型应用都可以支持,最大并发是6000, 性能不错。一般 PHP 程 序比较喜欢用 MySQL。 SQL Server 是微软的产品,对 .net 程序支持比较好,对于一般的应用来说都够用了。基本上.net 阵营中很少使用SQL Server 以外的数据库产品。 Oracle 是 Oracle 的数据库产品,它体积比较庞大,可以在同一机器上运行多个实例,一般用来开发大型应用 (例如分布式)
优缺 价格 便宜(部分免费) 适中 较贵

点 容量 使用 MyISAM 存储引擎,最大表尺寸为65536TB。MySQL 数据 库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL 内部限 制决定。 数据库大小 524258 TB 文件大小(数据文 件)16TB 文件大小(日志文件)2TB 无限,根据配置决定
难易 度 较易上手,简单快速 容易,图形化的用户界面使得易用性和友好性 较强 较难,偏复杂
存 储 可存储 (限于 MyISAM 类型表) 可存储 可存储
备 份 不支持热备份 可备份 可备份
数据类 型 基本 sql 数据,不完全支持扩展 大部分 sql 数据类型以及扩展 标量(scalar)、复合(composite)、引用(reference)、 和 LOB 四种类型
安全性 一般,复杂而非标准 没有获得任何安全证书 Oracle 的安全认证获得最高认证级别的 ISO 标准认证。数据安全级别为 C2 级(最高级)。
性能 使用 CPU 和内存极少, 性能很高,但拓展性稍差 当用户连接多时性能会变的很差,并且不够稳定,并行实施和共存模 型并不成熟。 全面,完整,稳定, 但一般数据量大, 对硬件要求较高
维 护 方便简单 比较容易 复杂,工作量大
开发环 境 PHP+MySql+Linux .net+SQLServer+wind ows 适合任何系统与开发语言
其他 使用缺省的 IP 端口,但是有时候这些IP 也会被 一些黑客闯入;使用 没有开放性,安全性和伸缩性也都不高,客户 端支持及应用模式 ,是 数据库崩溃后回复很麻烦,因为他把 很多东西放在内存

MyISAM 配置,不慎损坏数据库,结果可能会 导致所有的数据丢失 C/S 结构,只支持 windows 客户,数据不容易恢复 里;数据库连接要慢些,最好用连接 池;
在 windows 下的性能 在 windows 下的性能 (秒): 连结时间:0.28493 插入一万条记录 : 12.94204 更新一万条记录 : 50.34521 删除一万条记录 : 31.28243 查询 15909 条记录(无引索):10 添加引索后快于 mysql
(秒):
连结时间:0.01364 Oracle 在 Linux 下
插入一万条记录 : 的性能,在少量数
2.80973 据 时 速 度 低 于
更新一万条记录 : sqlserver 与
速度 812.48759 mysql , 在千万级
删除一万条记录 : 时速度快于 Mysql
184.05414 但低于 sqlserver,
查询 15909 条记录(无 而超过了亿级时速
引索):0.9 度最快
而在Linux 下mysql 各项
数据都要快于 sqlserver

SQLserver 在windows 下的性能 以及 Oracle, MySQL 在linux 下的性能作比较(还有其他数据库系统,例如 DB2,informix 等)结果,在 500 并发连接以下, SQLserver 只比 Oracle, MySQL 稍弱一点点,比其他数据库系统都强!但到了 750 就开始拉大距离,上了 1000 以后所有数据库系统都不行了,只有 MySQL 还紧紧地追着 oracle,而 SQLserver 的性能下降的最厉害,到了 1200 以后,SQLserver 成为最后一名,弱于参与测试的所有数据库系统。
另外,Oracle 自始至终都是最强悍的,不过 MySQL 始终追得很紧,平均下来,性能上只是在 1000 并发连接以后距离才与 Oracle 拉大。

注:
以上的价格为参考数据,不代表目前实际价格。

三、SQL语言
1.结构化查询语言
SQL(Structured Query Language) 是结构化查询语言的缩写,是一种语言。

SQL 语言可以用来在关系数据库上查询数据 , 操纵数据 , 定义数据 , 控制数据 , 使软件开发人员、数据库管理员都可以通过 SQL 语言对数据库执行特定的操作。大多数数据库都使用相同或者相似的语言来操作和维护数据库。
SQL可分为:
数据定义语言(DDL) : Data Definition Language
数据操纵语言(DML) : Data Manipulation Language
事务控制语言(TCL):Transaction Control Language)
数据查询语言(DQL):Data Query Language
数据控制语言(DCL) : Data Control Language

1.数据定义语言(DDL)
用于建立、修改、删除数据库对象,包括创建语句(CREATE)、修改语句(ALTER)、删除语句(DROP)。
使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROPTABLE删除表等动作。这类语言不需要事务的参与,自动提交。

2.数据操作语言(DML)
用于改变数据库数据,包括INSERT、UPDATE、DELETE三条语句。
其中,INSERT语句用于将数据插入到数据库中,UPDATE语句用于更新数据库中已存在的数据,DELETE用于删除数据库中已存在的数据。DML语言和事务是相关的,执行完DML操作后必须经过事务控制语句提交后才真正的将改变应用到数据库中。

3.数据查询语言(DQL)
用来查询所需要的数据。在工作中使用最多,语法灵活复杂。

4.数据控制语言(DCL)
用于执行权限的授予和收回操作、创建用户等,包括授予(GRANT)语句,收回(REVOKE)语句,CREATE USER语句,其中GRANT用于给用户或角色授予权限, REVOKE用于收回用户或角色已有的权限。DCL语句也不需要事务的参与,是自动提交的。数据控制语言一般由数据库管理员使用。

5.事务控制语言(TCL)
用来维护数据一致性的语句,包括提交(COMMIT)、回滚(ROLLBACK)、保存点(SAVEPOINT)三条语句,其中COMMIT用来确认已经进行的数据库改变, ROLLBACK语句用来取消已经进行的数据库改变,当执行DML操作后(也就是上面说的增加、修改、删除等动作),可以使用COMMIT语句来确认这种改变,或者使用ROLLBACK取消这种改变。SAVEPOINT语句用来设置保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变。

四、ORACLE访问
1.远程登录数据库服务器
Oracle数据库作为市场以及技术上领先的数据库产品,提供了丰富和简单易用的数据库开发和管理工具。有两种主要工具:
1).命令行工具,Oracle自带的SQL*PLUS
2).Oracle提供的图形界面工具:SQL Developer。

这些工具可能和数据库在同一台服务器上,也可能安装在另一台机器中
连接图例

2.使用SQLPLUS访问数据库
SQL
Plus是Oracle数据库提供的和数据库进行交互的软件工具,是被系统管理员和开发人员广泛使用的开发和管理工具,功能强大,使用简单,可以运行在任何Oracle运行的平台上,默认和数据库一起安装。SQL*Plus是一个基于传统的C/S结构的SQL开发工具,客户端和服务器端可以在同一台主机或不同主机上。

我们主要使用客户端和服务器端在不同主机上的访问方式:
a.打开终端,远程登录到数据库所在的机器上
输入:telnet 服务器IP地址
b.输入登录远程机器操作系统的用户帐号和用户密码。
c.登录远程机器操作系统成功后,
输入:sqlplus
d.输入登录数据库的帐号和密码,正确后如果出现SQL提示符,则表示登录成功:

e.退出时,在SQL>后输入exit即可

f.再输入exit,即退出远程服务器

3.使用SQL Developer访问数据库
Oracle SQL Developer是Oracle官方出品的免费图形化开发软件工具,相对SQL*Plus来说,图形化的界面便于操作,不必记忆大量的命令,操作数据库更简单,输出结果美观。它的基本功能包括结果的格式化输出,编辑器自动提示,代码美化,显示SQL的执行计划,监控会话,编写以及调试存储过程等。官方和免费两个特征让这个工具极具吸引力。

SQL Developer软件需要安装之后才能使用,而且由于SQL Developer是使用Java编写的,需要用到JDK中的java.exe执行程序,在第一次使用SQL Developer的时候需要指定本机的JDK中bin目录下的java.exe程序。
(注意:JDK与SQL Developer版本兼容性问题,安装的时候必须保证同时是64位或32位的,否则不能正常使用SQL Developer)

第一次进入SQL Developer,需要设置连接参数。首先在窗口左边的连接上按右键,开启一个新的连接,输入远程数据库的参数,界面如图

成功建立了连接之后,在连接上按右键点击连接,然后在此界面中操作SQL语句即可

五、Oracle数据类型
1.SQL语句基础语法

sql 语句是用分号结尾的
sql 语句的大小写不敏感
SQL 可以写在一行或者多行
关键字不能被缩写也不能分行
使用缩进提高语句的可读性

2.create建表语句
create table 表名 (
列名1 数据类型,
列名2 数据类型,
……
);

user1_xxx:建表语句中表名不能重复(在同一个数据库下不能有重名的表),在同一个表中别名不能重复
create table user1_xxx(
id number(5)
);

3.DESC语句
DESC是查看表的数据结构,语法是:
DESC 表名;

DESC user1_xxx;
FOUR

4.NUMBER
NUMBER表示数字类型,经常被定义成NUMBER(数字的总位数,小数点后面的位数)形式

–id列中,整数位最大为8位,小数位最大位数是2位,也就是最大取值:99999999.99。
create table user2_xxx(
id number(10,2)
);

5.CHAR
CHAR表示固定长度的字符类型,经常被定义成CHAR(N)形式, N表示占用的字节数,N的最大取值是2000。

–name列中,最多可存储20个字节的字符串,并且占用的空间是固定的20个字节,如果定义的数据不满20个字节补空格
create table user3_xxx(
name char(20)
);

6.VARCHAR2
VARCHAR2表示变长的字符类型,定义格式是VARCHAR2(N), N表示最多可占用的字节数,最大长度是4000字节。

–phone列中最多可存储长度为15个字节的字符串。根据其中保存的数据长度,占用的空间是变化的,最大占用空间为15个字节。
create table user4_xxx(
phone varchar2(15)
);

7.DATE
DATE用于定义日期时间的数据,长度是7个字节,默认格式是:DD-MON-RR, 例如:“11-APR-71”。如果是中文环境,是“11-4月-71”这种形式。

–birthday列中存放的是日期数据
create table user5_xxx(
birthday date
);

六、创建表
1.使用create语句
1).列与列之间用",“隔开
2).最后一个列不能加”,"

–使用create语句创建student_xxx表
create table student_xxx(
id number(10),
name varchar2(30),
phone varchar2(15),
sex char(1),
score number(4,2) --成绩
);

2.DEFAULT
可以通过DEFAULT子句给列指定默认值,例如,在student表中给sex列赋默认值‘M’,如果插入数据时没有指定性别的员工,则默认是男性。

create table student1_xxx(
id number(10),
name varchar2(30),
phone varchar2(15),
sex char(1) default ‘M’, --性别,默认值是M
score number(4,2) --成绩
);

3.NOT NULL
默认情况下,任何列都允许有空值。非空(Not Null)是一种约束条件,用于确保字段值不为空,当某个字段被设置了非空约束条件,这个字段中必须存在有效值,也就是说,当执行插入数据的操作时,必须提供这个列的数据,当执行更新操作时,不能给这个列的值设置为NULL

–创建表student2_xxx,设置name字段为非空,也即是表student2_xxx中的每条记录,name列都必须有值。
create table student2_xxx(
id number(10),
name varchar2(30) not null,–name必须有值
phone varchar2(15),
sex char(1),
score number(4,2) --成绩
);

七、修改表
1.修改表名
在建表后如果希望修改表名,可以使用RENAME语句实现,语法如下:
RENAME 旧表名 TO 新表名;

–将表名student_xxx修改为stu_xxx,使用如下语法:
rename student_xxx to stu_xxx;

2.增加列

在建表之后,要给表增加列可以使用ALTER TABLE的ADD子句实现。语法如下:
ALTER TABLE 表名 ADD
(列名 数据类型 [DEFAULT 表达式] [, 列名 数据类型…])

注意,列只能增加在最后,不能插入到现有的列中。下例给表stu_xxx增加一列birthday,并设置默认值为当前日期。
alter table stu_xxx add(
birthday date default sysdate --sysdate当前系统日期
);

3.删除列

在建表之后,使用ALTER TABLE的DROP子句删除不需要的列。语法如下:
ALTER TABLE 表名 DROP (列名);
删除字段需要从每行中删掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要比较长的时间,应该尽量避免该操作

删除表stu_xxx的列birthday:
alter table stu_xxx drop(birthday);

4.修改列
建表之后,可以改变表中列的数据类型、长度和默认值,注意这种修改仅对以后插入的数据有效,另外如果表中已经有数据的情况下,把长度由大改小,有可能不成功,比如原来的类型是VARCHAR2(100),其中已经存放了100个字节长度的数据,如果要改为VARCHAR2(80),则不会修改成功。

语法如下:
ALTER TABLE 表名 MODIFY
(列名 数据类型 [DEFAULT 表达式] [, 列名 数据类型…])
–修改表stu_xxx的列socre,并增加默认值的设置:
alter table stu_xxx modify(
score number(4,2) DEFAULT 0
);

八、DML
先创建两个表
DROP TABLE dept_xxx;
CREATE TABLE dept_xxx
(deptno NUMBER(4),
dname VARCHAR2(18) ,
loc VARCHAR2(13) ) ;

DROP TABLE employee_xxx;
CREATE TABLE employee_xxx
(empno NUMBER(4) ,
ename VARCHAR2(20),
job VARCHAR2(15),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(4) );

1.INSERT语句
INSERT语句用来给数据表增加记录,每次增加一条记录。语法如下:
INSERT INTO 表名[(列名1[, 列名2…])]
VALUES(值1[, 值2…]);
需要注意:
1.如果不写列名,是必须插入所有列的记录,缺少一列值就会报错
INSERT INTO 表名 VALUES(值1[, 值2…]);
2.如果写了列名,这种插入很灵活,插入列数不固定,但是插入值的顺序必须与列对应
3.所有的DML操作,都需要再执行事务提交语句commit,才算真正确认了此操作。

–向employee_xxx表插入一条记录的例子如下:
INSERT INTO employee_xxx(empno, ename, job, sal)
VALUES(1001, ‘Tom’, ‘PROGRAMMER’, 5500);
–提交
commit;
–查询employee_xxx表中的所有记录
select * from employee_xxx;

Oracle中的日期数据比较特殊,如果插入的列有日期字段,需要考虑日期的格式。Oracle的默认的日期格式‘DD-MON-RR‘,你或者按照默认格式插入数据,或者自定义日期格式,用TO_DATE函数转换为日期类型的数据。

–使用默认日期格式插入记录
INSERT INTO employee_lzh(empno, ename, job,hiredate)
VALUES(1002, ‘mark’, ‘ANALYST’, ‘01-9月-81’);
–日期类型插入方式与数据库所在操作系统有关 英文’01- Sep-89’ 中文’01-9月-89’
–使用自定义日期格式插入记录
INSERT INTO employee_lzh(empno, ename, job,hiredate)
VALUES(1003, ‘jim’, ‘MANAGER’,
TO_DATE(‘1971-09-01’, ‘YYYY-MM-DD’));

练习:
给dept_xxx、employee_xxx表插入数据
INSERT INTO dept_xxx VALUES
(10,‘ACCOUNTING’,‘NEW YORK’);

INSERT INTO dept_xxx VALUES
(20,‘RESEARCH’,‘DALLAS’);

INSERT INTO dept_xxx VALUES
(30,‘SALES’,‘CHICAGO’);

INSERT INTO dept_xxx VALUES
(40,‘OPERATIONS’,‘BOSTON’);

commit;
SELECT * FROM dept_xxx;

INSERT INTO employee_xxx VALUES(7369,‘SMITH’,‘CLERK’,7902,to_date(‘17-12-1980’,‘dd-mm-yyyy’),800,NULL,20);
INSERT INTO employee_xxx VALUES(7499,‘ALLEN’,‘SALESMAN’,7698,to_date(‘20-2-1981’,‘dd-mm-yyyy’),1600,300,30);
INSERT INTO employee_xxx VALUES(7521,‘WARD’,‘SALESMAN’,7698,to_date(‘22-2-1981’,‘dd-mm-yyyy’),1250,500,30);
INSERT INTO employee_xxx VALUES(7566,‘JONES’,‘MANAGER’,7839,to_date(‘2-4-1981’,‘dd-mm-yyyy’),2975,NULL,20);
INSERT INTO employee_xxx VALUES(7654,‘MARTIN’,‘SALESMAN’,7698,to_date(‘28-9-1988’,‘dd-mm-yyyy’),1250,1400,30);
INSERT INTO employee_xxx VALUES(7698,‘BLAKE’,‘MANAGER’,7839,to_date(‘11-5-1981’,‘dd-mm-yyyy’),2850,NULL,30);
INSERT INTO employee_xxx VALUES(7782,‘CLARK’,‘MANAGER’,7839,to_date(‘19-6-1987’,‘dd-mm-yyyy’),2450,NULL,10);

INSERT INTO employee_xxx VALUES(7788,‘SCOTT’,‘ANALYST’,7566,to_date(‘19-4-1987’,‘dd-mm-yyyy’),3000,NULL,20);
INSERT INTO employee_xxx VALUES(7839,‘KING’,‘PRESIDENT’,NULL,to_date(‘12-11-1981’,‘dd-mm-yyyy’),5000,NULL,10);
INSERT INTO employee_xxx VALUES(7844,‘TURNER’,‘SALESMAN’,7698,to_date(‘18-9-1986’,‘dd-mm-yyyy’),1500,0,30);
INSERT INTO employee_xxx VALUES(7876,‘ADAMS’,‘CLERK’,7788,to_date(‘2-5-1987’,‘dd-mm-yyyy’),1100,NULL,20);
INSERT INTO employee_xxx VALUES(7900,‘JAMES’,‘CLERK’,7698,to_date(‘3-2-1981’,‘dd-mm-yyyy’),950,NULL,30);
INSERT INTO employee_xxx VALUES(7902,‘FORD’,‘ANALYST’,7566,to_date(‘3-1-1981’,‘dd-mm-yyyy’),3000,NULL,20);
INSERT INTO employee_xxx VALUES(7934,‘MILLER’,‘CLERK’,7782,to_date(‘23-11-1982’,‘dd-mm-yyyy’),1300,NULL,10);
commit;

select * from employee_xxx;

2.UPDATE语句
UPDATE语句用来更新表中的记录,语法如下:

UPDATE 表名
SET 列名= 列值[, 列名= 列值…]
[WHERE 条件];
其中WHERE子句是可选的,但是如果没有WHERE子句,则全表的数据都会被更新,一定要注意

更改员工Tom的薪水为8500:
UPDATE employee_xxx SET sal = 8500 WHERE ename = ‘Tom’;

3.DELETE语句

DELETE语句用来删除表中的记录,语法如下:
DELETE [FROM] 表名 [WHERE 条件];
和UPDATE语句一样,WHERE子句是可选的,但是如果没有WHERE子句,则全表的数据都会被删除,务必确认后再予以删除。

删除员工号为1001的员工记录:
DELETE FROM employee_xxx WHERE empno=1001;

总 结
通过本课,您应该可以完成:
1.Oracle安装与访问
2.使用SQL*PLUS访问数据库
3.使用SQL Developer访问数据库
4.create建表语句
5.修改表
6.INSERT语句、UPDATE语句、DELETE语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值