文件存储方式保存数据的弊端: (1)缺乏对数据的整体管理,数据不便修改。 (2)不利于数据分析和共享。 (3)数据量急剧增长,大量数据不可能长期保存在文件中。
数据库(Database,简称DB): 本质上讲,数据库就是信息的集合,它可以存在很长时间,往往是很多年。一般来讲,数据库就是按照数据结构来组织、存储和管理数据的仓库。**
数据库管理系统(Database Management System,简称DBMS): 简单来说,就是管理数据库的软件。
提到关系型数据库,就不得不先了解一下以下两个概念:
关系: 描述两个元素的关联或对应关系。使用关系模型把数据组织到二维数据表(Table)中。
表的概念: 一个关系数据库由多个数据表(Table)组成,数据表是关系数据库的基本存储结构。表是二维的,由行和列组成。表的行(Row)是横排数据,也被称作记录(Record)。表的列(Column)是纵列数据,也被称作字段(Field)。表和表之间存在关联关系。
Oracle是著名的Oracle(甲骨文)公司的数据库产品。Oracle是世界上第一个商品化的关系型数据库管理系统。Oracle采用标准SQL(结构化查询语言),支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、WINDOWS、OS/2等多种平台。Oracle公司的产品丰富,包括Oracle服务器、Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前最新版本是Oracle 12C。
DB2是IBM公司的关系型数据库管理系统。DB2有很多不同的版本,可以允许在从掌上产品到大型机不同的终端机器上。DB2 Universal Database Personal Edition 和DB2 Universal Database Workgroup Edition分别是单用户和多用户系统,可以运行在OS/2和Windows上。DB2是Oracle的主要竞争对手。
Microsoft SQL Server是微软的产品,运行在Windows NT服务器上。Microsoft SQL Server的最初版本适用于中小型企业,但是应用范围不断扩展,已经触及到大型、跨国企业的数据库管理。
MySQL是开放源码的小型关系型数据库管理系统,广泛应用于中小型网站中。总体拥有成本低、规模较Oracle和DB2小的优点。2008年1月16日,Sun收购了MySQL,2009年4月20日Sun被Oracle公司收购,所以MySQL现在属于Oracle公司。
Sybase 是美国Sybase公司的关系型数据库系统。Sybase是较早采用C/S技术的数据库厂商。典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统。Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研发的PowerBuilder为开发工具,在国内大中型系统中具有广泛的应用。2010年被SAP收购。
SQL(Structured Query Language) :结构化查询语言。 SQL是在关系数据库上执行数据操作、检索及维护所使用的标准语言,可以用来查询数据、操纵数据、定义数据、控制数据。所有数据库都使用相同或者相似的语言。
❤️ 注意: SQL语句本身不区分大小写,但是出于可读性的目的,我们通常会将SQL中的关键字全部大写,非关键字全部小写。
用于建立、修改、删除数据库对象。 数据库对象包括:表、视图、索引、序列。
包括: CREATE :创建表或其他对象的结构 ALTER :修改表或其他对象的结构 DROP:删除表或其他对象的结构 TRUNCATE:删除表数据,保留表结构
用于改变数据表中的数据。和事务相关,执行完后需要经过事务控制语句提交后才能真正的将改变应用到数据库中。
包括: INSERT:将数据插入到数据表中 UPDATE:更新数据表中已存在的数据 DELETE:删除数据表中的数据
用来维护数据一致性的语句。
包括: COMMIT:提交,确认已经进行的数据改变 ROLLBACK:回滚,取消已经进行的数据改变 SAVEPOINT:保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变
用来查询所需要的数据。
SELECT语句
用于执行权限的授予和收回操作。
包括: GRANT:授予,用于给用户或角色授予权限 REVOKE:用于收回用户或角色已有的权限 CREATE USER:创建用户
❤️ 数据库中所有数据类型的默认值都是NULL
(1)NUMBER NUMBER表示数字类型。经常被定义成NUMBER(P,S)形式,其中: P:表示数字的总位数 S:表示小数点后面的位数
eg: sal NUMBER(6,2) 表示sal列中的数据,整数位最大为4位,小数位最大为2位,也就是最大取值:9999.99
(2)CHAR 表示固定长度的字符类型。经常被定义成CHAR(N)形式,N表示占用的字节数。最大长度是2000字节。
eg: ename CHAR(20) 表示ename列中最多可储存20个字节的字符串,并且占用的空间是固定的20个字节。
(3)VARCHAR2(Oracle特有的数据类型) 表示变长的字符类型。定义格式是VARCHAR2(N),N表示最多可占用的字节数。 最大长度是4000字节。
eg: job VARCHAR2(100) 表示job列中最多可存储长度为100个字节的字符串。根据其中保存的数据长度,占用的空间是变化的,最大占用空间为100个字节。
(4)DATE 用于定义日期时间的数据。长度是7个字节,默认格式是:DD-MON-RR,例如:11-APR-17
eg: hiredate DATE 表示hiredate列中存放的是日期数据。
eg:
CREATE TABLE employee( id NUMBER(4), name VARCHAR2(20) NOT NULL, gender CHAR(1) DEFAULT 'M', birth DATE, salary NUMBER(30), job VARCHAR2(30), deptno NUMBER(2) );eg:
DESC employee;在创建表的时候可以使用DEFAULT为某个字段单独指定一个默认值。 例如,给gender列赋默认值‘M’,如果没有指定性别的员工,默认是男性
❤️ 注意: 1.数据库中的字符串字面量是使用单引号的。 2.虽然SQL语句本身不区分大小写,但是字符串的值是区分大小写的。
❤️ 注意: 1.非空(NOT NULL)是一种约束条件,用于确保字段值不为空 2.默认情况下,任何列都允许有空值 3.当某个字段被设置了非空约束条件,这个字段中必须存在有效值 4.当执行插入数据的操作时,必须提供这个列的数据 5.当执行更新操作时,不能给这个列的值设置为NULL
在建表后如果希望修改表名,可以使用 RENAME语句实现 语法如下:
RENAME employee TO myemp给表增加列可以使用ALTER TABLE 的ADD子句实现。 语法:
eg:
ALTER TABLE myemp ADD( hiredate DATE DEFAULT SYSDATE )❤️ 注意: 列只能增加在最后,不能插入到现有的列中。
建表之后,可以改变表中列的数据类型、长度、默认值和是否为空。 语法如下:
eg:
ALTER TABLE myemp MODIFY ( job varchar2(40) DEFAULT 'CLERK' )❤️ 注意:
修改表结构都应当避免在表中有数据以后进行,若表中有数据,修改表中字段时尽量不要修改类型,若修改长度尽量增大避免缩小,否则可能导致失败。
使用ALTER TABLE 的子句DROP子句删除不需要的列。 语法如下:
eg:
ALTER TABLE myemp DROP( hiredate )❤️ 注意: 删除字段需要从每行中删掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要比较长的时间。
DML是对表中的数据进行的操作 DML伴随事物控制(TCL) DML:包含操作: 增、删、改。
给数据表里增加记录。 语法如下: eg:
INSERT INTO myemp (id,name,salary,deptno) VALUES(1,'jack',5000,10) SELECT * FROM myemp COMMIT❤️ 注意: 执行DML操作后,需要再执行 COMMIT语句,才算真正确认了此操作。
如果插入的列有日期字段,需要考虑日期的格式 默认的日期格式:‘DD-MON-RR’ 可以自定义日期格式,用TO_DATE函数转换为日期类型的数据 eg:
/* 使用自定义日期格式插入记录 */ INSERT INTO myemp (id,name,job,birth) VALUES( 1003,'donna','MANAGER', TO_DATE('2009-09-01','YYYY-MM-DD') )修改表中数据 修改表中数据要添加WHERE过滤条件,这样才会只将满足条件的记录进行修改,否则是全表所有的数据都修改。一次也可修改多个字段。 eg:
UPDATE myemp SET salary=6000, name='rose',gender='F' WHERE id=1删除表中数据,删除数据通常也要添加WHERE语句来限定要删除数据的条件 否则就是清空表操作。
eg:
DELETE FROM myemp WHERE name='rose' DESC myemp❤️ 注意:
如果没有WHERE子句,则全表的数据都会被删除。
在DDL语句中的TRUNCATE语句,同样有删除表数据的作用。
和DELETE语句的区别: (1)DELETE可以有条件删除,TRUNCATE将表数据全部删除。 (2)DELETE是DML语句,可以回退,TRUNCATE是DDL语句,立即生效,无法回退。 (3)如果是删除全部表记录,且数据量较大,DELETE语句效率比TRUNCATE语句低。 删除全部记录:
删除全部记录: DELETE FROM myemp; 或者 TRUNCATE TABLEmyemp;