关系型数据库基础及应用(一)

数据库原理

数据库简介

1、DB和DBMS

· 数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库;

· 数据库管理系统(Database Managerment System,简称DBMS):管理数据库的软件;

2、关系型数据库的简介

· 关系:描述两个元素间的关联或对应关系

· 使用关系模型把数据组织到二维数据表(Table)中

· 产品化:Oracle、DB2、Sybase、SQL Server、MySQL

3、表的概念

· 一个关系数据库由多个数据表(table)组成,数据表是关系数据库的基本存储结构;

· 表是二维的,由行和列组成;

· 表的行(Row)是横排数据,也被称作记录(Record);

· 表的列(Column)是纵列数据,也被称作字段(Filed);

· 表与表之间存在关联关系;

主流关系型数据库

1、Oracle数据库概述

· Oracle是著名的Oracle(甲骨文)公司的数据库产品;

· Oracle是世界上第一个商品化的关系型数据库管理系统;

· Oracle采用标准SQL(结构化查询语句),支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具;支持UNIX、WINDOWS、OS/2等多种平台;

2、DB2数据库概述

· DB2是IBM公司的关系型数据库管理系统;

· DB2有很多不同的版本,可以运行在从掌上产品到大型机不同的终端机器上;

· DB2是Oracle的主要竞争对手;

3、Sybase数据库概述

· Sybase是美国Sybase公司的关系型数据库系统;

· Sybase是较早采用C/S技术的数据库厂商;

· 典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统;

4、SQL Server数据库概述

· MicrosoftSQL Server是微软的产品,运行在Windows NT服务器上;

5、MySQL数据库概述

· MySQL是开放源码的小型关系型数据库管理系统,广泛应用在中小型网站中;

· 总体拥有成本低,规模较Oracle和DB2小

· 2008年1月16日,Sun收购了MySQL;2009年4月20日,SUN被Oracle公司收购了,所以现在MySQL是属于Oracle的;

SQL概述

结构化查询语句

· SQL(Structured Query Language):结构化查询语句

· SQL是在关系数据库上执行数据操作、检索及维护所使用的标准语言,可以用来查询数据、操作数据、定义数据、控制数据;

· 所有数据库都使用相同或相似的语言

· SQL可分为:

 - 数据定义语言(DDL):Data Defintion Language;

 - 数据操作语言(DML):Data Manipulation Language;

 - 事务控制语言(TCL): Transaction Control Language;

 - 数据查询语句(DQL): Data Query Language;

 - 数据控制语言(DCL):Data Control Language;

数据定义语言(DDL):Data Defintion Language

· 用于建立、修改、删除数据对象;

· 包括:

  - CREATE:创建表或其他对象结构;

  - ALTER:修改表或其他对象的结构;

  - DROP:删除表或其他对象结构;

  - TRUNCATE:删除表数据,保留表结构;

数据操作语言(DML):Data Manipulation Language
· 用于改变数据表中的数据;

· 和事务相关,执行完成后需要经过事务控制语句提交后才真正的将改变应用到数据库中;

· 包括:

 - INSERT:将数据插入到数据库中;
 - UPDATE:更新数据表中已存在的数据;

 - DELETE:删除数据表中的数据;

事务控制语言(TCL): Transaction Control Language

· 用来维护数据一致性的语句

· 包括:

  - COMMIT:提交,确认已经进行的数据改变;

  - ROLLBACK:回滚,取消已经进行的数据改变;

  - SAVEPOINT:保存点,使当前事务可以回退到指定的保存点,便于取消部分改变;

数据查询语句(DQL): Data Query Language

· 用来查询所需要的数据;

· SELECT语句;

数据控制语言(DCL):Data Control Language

· 用于执行权限的授予和回收操作;

· 包括:

  - GRANT:授予,用于给用户或角色授予权限;

  - REVOKE:用于回收用户或角色已有的权限;

  - CREATE USER:创建用户;

SQL(DDL、DML)

Oracle数值类型

NUMBER(number)

· NUMBER表示数字类型;

· 经常被定义成NUMBER(P,S)形式,其中:

  - P表示数字的总位数;

  - S表示小数点后面的位数;

· 例如在表emp中的sal列的定义如下:sal NUMBER(6,2)

  - 表示sal列中的数据,整数位最大为4位,小数位最大位数是2位,也就是最大值:9999.99;

CHAR(char)

· 表示固定长度的字符类型;

· 经常被定义成CHAR(N)形式,N表示占用的字节数;

· 最大长度是2000字节

· 例如在emp表中的ename列定义如下:ename CHAR(20)

  - 表示ename列中最多可存储20个字节的字符串,并且占用的空间是固定的20个字节;

VARVHAR2(varchar2):Oracle所特有的

· 表示变长的字符串;

· 定义格式VARCHAR(N),N表示最多可占用的字节数;

· 最大长度4000字节;

· 例如在表emp中的job列的定义如下: job VARCHAR(100);

  - 表示job列中最多可存储长度为100个字节的字符串,根据其中保存的数据长度,占用的空间是变化的,最大占用空间为100字节;

· 目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。

DATE(date)

· ORACLE中最常用的日期类型,用来保存日期和时间;

· DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日;

· DATE类型在数据库中的存储固定为7个字节,格式为:

  - 第1字节:世纪+100

  - 第2字节:年

  - 第3字节:月

  - 第4字节:日

  - 第5字节:小时+1

  - 第6字节:分+1

  - 第7字节:秒+1

数据库定义语句(DDL)

创建表:CREATE语句
CREATE TABLE employee(
    id NUMBER(4),
    name VARCHAR2(50),
    birth DATE
);
DESC语句:查看表结构

DEFAULT语句


NOT NULL语句

· 非空(Not Null)是一种约束,用于确保字段值不为空;

· 默认情况下,任何列都允许有空值;

· 当某个字段被设置了非空约束条件,这个字段中必须存在有效值;

· 当执行插入数据的操作时,必须提供这个列的数据;

· 当执行更新操作时,不能给这个列的值设置为NULL;


修改表名

· 在建表后如果希望修改表名,可以使用RENAME语句实现;

· 语法如下,将改变表名old_name为new_name:

  - RENAME old_name TO new_name;

增加列

· 给表增加列可以使用ALTER TABLE 的ADD子句实现;

· 举例:

--给表增加一列hiredate,并设置默认值为当前日期
ALTER TABLE myemp ADD(hiredate DATE DEFAULT sysdate);

· 列只能增加到最后,不能插入到现有的列中

删除列

· 使用ALTER TABLE 的 DROP子句删除不需要的列;

· 举例:

--删除表myemp的列hiredate
ALTER TABLE myemp DROP hiredate;

· 删除字段需要从每行中删掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要比较长的时间;

修改列

· 建表以后,可以改变表中列的数据类型、长度和默认值;

· 修改仅对以后插入的数据有效;

· 如果把长度由大改小,有可能不成功;

· 举例:

--修改表myemp的列obj,并增加默认值的设置
ALTER TABLE myemp MODIFY(job VARCHAR2(40) DEFAULT 'CLERK');

简单的DML语句

INSERT(insert)语句

· 给数据表增加记录

· 举例:

INSERT INTO emp(id,name,job,salary)VALUES(100,'rose','programmer',5500);

· 执行DML操作之后,需要在执行commint语句,才算真正确认了此操作;

· 如果插入的列有日期字段,需要考虑日期的格式;默认日期格式‘DD-MON-RR’;

· 可以自定义日期格式,用TO_DATE函数转换为日期类型数据;

--使用默认日期格式插入记录
INSERT INTO emp(id,birth)VALUES(1002,'01-SEP-03');
--使用自定义日期格式插入记录
INSERT INTO emp(id,birth)VALUES(1003,TO_DATE('1999-01-01','YYYY-MM-DD'));
UPDATE语句

· 更新表中的记录

· 举例:

--更改职员ROSE的薪水为8500
UPDATE emp SET salary = 8500 where name='ROSE';
· 在做更新或者查询的时候最好能有条件的查询,不然面对海量数据全表查询会很慢;
DELETE语句

· 删除表中的记录;

· 举例:

--删除职位是空的员工的记录
DELETE FROM emp WHERE job is null;

· 如果没有where,就全表数据都会被删除;

· 在DDL语句中的TRUNCATE(truncate)语句,同样有删除表数据的作用;

· TRUNCATE和DELETE的区别:

  - DELETE可以条件删除,TRUNCATE将表数据全部删除;

  - DELETE是DML语句,可以回退,TRUNCATE是DDL语句,立即生效,无法回退;

  - 如果是删除全部表记录,且数据了较大,DELETE语句的效率要低于TRUNCATE语句;

· 举例:

--删除全部记录
DELETE FROM emp;
--或者
TRUNCATE TABLE emp;

猜你喜欢

转载自blog.csdn.net/huang_yx/article/details/80221259