数据库学习
一、数据库原理
1、数据库简介
a、文件存储方式保存数据的弊端:
1、缺乏对数据的整体管理,数据不便修改。
2、不利于数据分析和共享。
3、数据量急剧增长,大量数据不可能长期保存在文件中。
1、数据库简介
a、文件存储方式保存数据的弊端:
1、缺乏对数据的整体管理,数据不便修改。
2、不利于数据分析和共享。
3、数据量急剧增长,大量数据不可能长期保存在文件中。
b、DB和DBMS
数据库(Database和简称DB)是按照数据结构来组织、存储和管理数据的仓库。
数据库管理系统(DatabaseManagement System,简称DBMS):管理数据库的软件。
数据库(Database和简称DB)是按照数据结构来组织、存储和管理数据的仓库。
数据库管理系统(DatabaseManagement System,简称DBMS):管理数据库的软件。
c、关系数据库简介
关系:描述两个元素间的关联或对应关系,使用关系模型把数据组织到二维数据表(Table)中。
产品化:Oracle、DB2、Sybase、SQL Server、MySQL
d、表的概念
一个关系数据库由多个数据表(Table)组成,数据表是关系数据库的基本存储结构。
表是二维的,由行和列组成。
表的行(Row)是横排数据,也被称作记录(Record)。
表的列(Column)是纵列数据,也被称作字段(Field)。
表和表之间存在关联关系。
2、主流关系型数据库
a、Oracle数据库概述
1、Oracle是著名的Oracle(甲骨文)公司的数据库产品、是世界是第一个商品化的关系型数据库管理系统。
2、Oracle采用标准SQL(结构化查询语言),支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、Windows、OS/2等多种平台。
3、Oracle公司的产品丰富,包括Oracle服务器,Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前的最新版本是Oracle 12c。
关系:描述两个元素间的关联或对应关系,使用关系模型把数据组织到二维数据表(Table)中。
产品化:Oracle、DB2、Sybase、SQL Server、MySQL
d、表的概念
一个关系数据库由多个数据表(Table)组成,数据表是关系数据库的基本存储结构。
表是二维的,由行和列组成。
表的行(Row)是横排数据,也被称作记录(Record)。
表的列(Column)是纵列数据,也被称作字段(Field)。
表和表之间存在关联关系。
2、主流关系型数据库
a、Oracle数据库概述
1、Oracle是著名的Oracle(甲骨文)公司的数据库产品、是世界是第一个商品化的关系型数据库管理系统。
2、Oracle采用标准SQL(结构化查询语言),支持多种数据类型,提供面向对象的数据支持,具有第四代语言开发工具,支持UNIX、Windows、OS/2等多种平台。
3、Oracle公司的产品丰富,包括Oracle服务器,Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前的最新版本是Oracle 12c。
b、DB2数据库概述
1、DB2是IBM公司的关系型数据库管理系统,DB2有很多不同的版本,可以运行在从掌上产品到大型机不同的终端机器上。
2、DB2 Universal Database Personal Edition和DB2 Universal Database Workgroup Edition分别是单用户和多用记系统,可以运行在OS/2和Windows上。
3、DB2是Oracle的主要竞争对手。
1、DB2是IBM公司的关系型数据库管理系统,DB2有很多不同的版本,可以运行在从掌上产品到大型机不同的终端机器上。
2、DB2 Universal Database Personal Edition和DB2 Universal Database Workgroup Edition分别是单用户和多用记系统,可以运行在OS/2和Windows上。
3、DB2是Oracle的主要竞争对手。
c、Sybase数据库概述
1、Sybase是美国Sybase公司的关系型数据库系统,是较早采用C/S技术的数据厂商。
2、典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。
3、Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者客户机数据库,采用该公司研制的PowerBuilder为开发工具,在国内大中型系统中具有广泛的应用。
1、Sybase是美国Sybase公司的关系型数据库系统,是较早采用C/S技术的数据厂商。
2、典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。
3、Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者客户机数据库,采用该公司研制的PowerBuilder为开发工具,在国内大中型系统中具有广泛的应用。
d、SQL Server数据库概述
1、Microsoft SQL Server是微软的产品,运行在WindowsNT服务器上。
2、Microsoft SQL Server最初版本适用于中小企业,但应用范围不断扩展,已经触及到大型、跨国的数据库管理。
3、最新版本是SQL Server 2012。
1、Microsoft SQL Server是微软的产品,运行在WindowsNT服务器上。
2、Microsoft SQL Server最初版本适用于中小企业,但应用范围不断扩展,已经触及到大型、跨国的数据库管理。
3、最新版本是SQL Server 2012。
e、MySQL数据库概述
1、MySQL是开源的小型关系型数据库管理系统,广泛应用于中小型网站中,成本低、规模较Oracle和DB2小。
2、2008年1月16,Sun收购MySQL,2009年Sun被Oracle公司收购,所以MySQL现在属于Oracle公司。
3、最新版本是MySQL5.6
1、MySQL是开源的小型关系型数据库管理系统,广泛应用于中小型网站中,成本低、规模较Oracle和DB2小。
2、2008年1月16,Sun收购MySQL,2009年Sun被Oracle公司收购,所以MySQL现在属于Oracle公司。
3、最新版本是MySQL5.6
3、SQL概述
a、结构化查询语言
1、SQL(Structured Query Language):结构化查询语言。
2、SQL是在关系型数据库上执行数据操作、检索及维护所使用的标准语言,可以用来查询数据,操作数据,定义数据,控制数据。
3、所有数据库都使用相同或者相似的语言,SQL可分为:
b、数据定义语言(DDL):Data Definition Language
用于建立、修改、删除数据库对象,包括:
* CREATE:创建表或其他对象的结构
* ALTER:修改表或其他对象的结构
* DROP:删除表或其他对象的结构
* TRUNCATE:删除表数据,保留表结构
c、数据操作语言(DML):Data Manipulation Language
用于改变数据表中的数据,和事务相关,执行完后需要经过事务控制语句提交后才真正的将改变应用到数据库中,包括:
* INSERT:将数据插入到数据表中
* UPDATE:更新数据表中已经存在的数据
* DELETE:删除数据表中的数据
d、事务控制语言(TCL):Transaction Control Language
用来维护数据一致性的语句,包括:
* COMMIT:提交,确认已经进行的数据改变
* ROLLBACK:回滚,取消已经进行的数据改变
* SAVEPOINT:保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变
e、数据控制语言(DCL):Data Control Language
用于执行权限的授予和收回操作,包括:
* GRANT:授予,用于给用户或角色授予权限
* REVOKE:用于收回用户或角色已有的权限
* CREATE USER:创建用户
f、数据查询语言(DQL):Data Query Language
用来查询所需要的数据,SELECT语句。
a、结构化查询语言
1、SQL(Structured Query Language):结构化查询语言。
2、SQL是在关系型数据库上执行数据操作、检索及维护所使用的标准语言,可以用来查询数据,操作数据,定义数据,控制数据。
3、所有数据库都使用相同或者相似的语言,SQL可分为:
b、数据定义语言(DDL):Data Definition Language
用于建立、修改、删除数据库对象,包括:
* CREATE:创建表或其他对象的结构
* ALTER:修改表或其他对象的结构
* DROP:删除表或其他对象的结构
* TRUNCATE:删除表数据,保留表结构
c、数据操作语言(DML):Data Manipulation Language
用于改变数据表中的数据,和事务相关,执行完后需要经过事务控制语句提交后才真正的将改变应用到数据库中,包括:
* INSERT:将数据插入到数据表中
* UPDATE:更新数据表中已经存在的数据
* DELETE:删除数据表中的数据
d、事务控制语言(TCL):Transaction Control Language
用来维护数据一致性的语句,包括:
* COMMIT:提交,确认已经进行的数据改变
* ROLLBACK:回滚,取消已经进行的数据改变
* SAVEPOINT:保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变
e、数据控制语言(DCL):Data Control Language
用于执行权限的授予和收回操作,包括:
* GRANT:授予,用于给用户或角色授予权限
* REVOKE:用于收回用户或角色已有的权限
* CREATE USER:创建用户
f、数据查询语言(DQL):Data Query Language
用来查询所需要的数据,SELECT语句。
4、Oracle数据库的访问
a、使用sqlplus访问数据库
sqlplus是Oracle提供的数据库交互工具,使用广泛、功能强大、方式简单,可以运行在任何Oracle运行的平台上,默认和数据库一起安装。
1、使用telnet或ssh登录数据库服务器,输入用户名和密码
2、在命令行输入sqlplus命令,并输入帐号和密码
3、登录成功后的界面,可以在SQL>后输入命令进行操作。
4、退出
a、使用sqlplus访问数据库
sqlplus是Oracle提供的数据库交互工具,使用广泛、功能强大、方式简单,可以运行在任何Oracle运行的平台上,默认和数据库一起安装。
1、使用telnet或ssh登录数据库服务器,输入用户名和密码
2、在命令行输入sqlplus命令,并输入帐号和密码
3、登录成功后的界面,可以在SQL>后输入命令进行操作。
4、退出
b、使用Oracle SQL Developer访问数据库
Oracle官方出品,免费的图形化开发工具,便于操作,不必记忆大量的命令,输出结果美观。
1、首次打开的界面
2、先建立指定到数据库的连接,在界面中执行SQL语句
Oracle官方出品,免费的图形化开发工具,便于操作,不必记忆大量的命令,输出结果美观。
1、首次打开的界面
2、先建立指定到数据库的连接,在界面中执行SQL语句
二、SQL(DDL、DML)
1、Oracle数据类型
a、NUMBER
1、NUMBER表示数字类型。
2、经常被定义成NUMBER(P,S)形式,其中P表示数字的总位数,S表示小数点后面的位数。
b、CHAR
1、表示固定长度的字符类型。
2、经常定义成CHAR(N)形式,N表示占用的字节数,并且占用的空间是固定的。
3、最大长度是2000字节。
c、VARCHAR2
1、表示变长的字符类型。
2、定义格式是VARCHAR2(N),N表示最多可占用的字节数。
3、根据实际保存的数据,占用的空间会。
4、最大长度是4000字节。
1、Oracle数据类型
a、NUMBER
1、NUMBER表示数字类型。
2、经常被定义成NUMBER(P,S)形式,其中P表示数字的总位数,S表示小数点后面的位数。
b、CHAR
1、表示固定长度的字符类型。
2、经常定义成CHAR(N)形式,N表示占用的字节数,并且占用的空间是固定的。
3、最大长度是2000字节。
c、VARCHAR2
1、表示变长的字符类型。
2、定义格式是VARCHAR2(N),N表示最多可占用的字节数。
3、根据实际保存的数据,占用的空间会。
4、最大长度是4000字节。
d、DATE
1、用于定义日期时间的数据,长度是7个字节
2、默认格式是:DD-MON-RR,例如:11-APR-71
1、用于定义日期时间的数据,长度是7个字节
2、默认格式是:DD-MON-RR,例如:11-APR-71
2、创建表
a、CREATE语句
1 --CREATE语法 2 CREATE TABLE[schema.]table_name( 3 column_name datatype[DEFAULT expr] [,...] 4 ); 5 --创建表学生表 6 CREATE TABLE student1( 7 id NUMBER(4), --四位整数 8 fee NUMBER(7,2), --五位整数,两位小数 9 name VARCHAR2(20), --最大20个字节变长字符串 10 gender CHAR(1), --1个字节定长字符串 11 residence CHAR(100) --最大100字节 12 );
b、desc语句
DESC table_name; c、DEFAULT语句
DESC table_name; c、DEFAULT语句
可以通过DEFAULT子句给列指定默认值。 CREATE TABLE Persons( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) DEFAULT 'Sandnes' );
d、DROP 删除表
DROP table table_name;
e、NOT NULL
1、非空(Not Null)是一种约束条件,用于确保字段值不为空。
2、默认情况下,任何列都允许有空值。
3、当某个字段被设置了非空约束条件,这个字段中必须存在有效值。
4、当执行插入数据的操作时,必须提供这个列的数据。
5、当执行更新操作时,不能给这个列的值设置为NULL。
1、非空(Not Null)是一种约束条件,用于确保字段值不为空。
2、默认情况下,任何列都允许有空值。
3、当某个字段被设置了非空约束条件,这个字段中必须存在有效值。
4、当执行插入数据的操作时,必须提供这个列的数据。
5、当执行更新操作时,不能给这个列的值设置为NULL。
3、修改表
a、修改表名
1、在建表后如果希望修改表名,可以使用RENAM语句实现。
2、语法:RENAME old_name TO new_name;
b、增加列
1、给表增加列可以使用ALTER TABLE的ADD子句实现。
2、列只能增加在最后,不能插入到现有的列中。
3、语法:ALTER TABLE table_name ADD (column datatype [DEFAULT expr],[column datatype...])
c、删除列
1、使用ALTER TABLE的DROP子句删除不需要的列。
2、删除字段需要从每行中删除掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要较长时间。
3、语法:ALTER TABLE table_name DROP (column);
d、修改列
1、建表之后,可以改变表中列的数据类型、长度和默认值。
2、修改仅对以后插入的数据有效。
3、如果把长度由大改小,有可能不成功。
4、语法:ALTER TABLE table_name MODIFY(column datatype[DEFAULT expr],[column datatype...])
a、修改表名
1、在建表后如果希望修改表名,可以使用RENAM语句实现。
2、语法:RENAME old_name TO new_name;
b、增加列
1、给表增加列可以使用ALTER TABLE的ADD子句实现。
2、列只能增加在最后,不能插入到现有的列中。
3、语法:ALTER TABLE table_name ADD (column datatype [DEFAULT expr],[column datatype...])
c、删除列
1、使用ALTER TABLE的DROP子句删除不需要的列。
2、删除字段需要从每行中删除掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要较长时间。
3、语法:ALTER TABLE table_name DROP (column);
d、修改列
1、建表之后,可以改变表中列的数据类型、长度和默认值。
2、修改仅对以后插入的数据有效。
3、如果把长度由大改小,有可能不成功。
4、语法:ALTER TABLE table_name MODIFY(column datatype[DEFAULT expr],[column datatype...])
4、DML语句
a、INSERT语句
1、用来给数据表增加记录,执行DML操作后,需要执行commit语句,才算真正确认了此操作。
2、语法:INSERT INTO table_name[(column[,column...])] VALUES(value[,value...]);
3、如果插入的列有日期字段,需要考虑日期格式,默认的日期格式'DD-MON-RR'。
4、可以自定义日期格式,用TO_DATE函数转换为日期类型的数据。
insert into wj_student(name,id,gender,birth) values('张飞',110,'M',to_date('2017-08-02','YYYY-MM-DD'));
commit;//提交数据
a、INSERT语句
1、用来给数据表增加记录,执行DML操作后,需要执行commit语句,才算真正确认了此操作。
2、语法:INSERT INTO table_name[(column[,column...])] VALUES(value[,value...]);
3、如果插入的列有日期字段,需要考虑日期格式,默认的日期格式'DD-MON-RR'。
4、可以自定义日期格式,用TO_DATE函数转换为日期类型的数据。
insert into wj_student(name,id,gender,birth) values('张飞',110,'M',to_date('2017-08-02','YYYY-MM-DD'));
commit;//提交数据
b、UPDATE语句
1、用来更新表中的记录
2、语法:UPDATE table_name SET column = value [,column = value]... [WHERE condition];
3、如果没有WHERE子句,则全表的数据都会被更新,务必小心。
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
c、DELETE语句
1、删除表中的记录
2、语法:DELETE [FROM] table_name [WHERE condition];
3、如果没有WHERE子句,则全表的数据都会被删除。
4、在DDL语句中的TRUNCATE语句,同样有删除表数据的作用,和DELETE语句的区别:
* DELETE可以有条件删除,TRUNCATE将表数据全部删除。
* DELETE是DML语句,可以回退,TRUNCATE是DDL语句,立即生效,无法回退。
* 如果是删除全部表记录,且数据量较大,DELETE语句效率比TRUNCATE语句低。
DELETE FROM Person WHERE LastName = 'Wilson' ;
1、用来更新表中的记录
2、语法:UPDATE table_name SET column = value [,column = value]... [WHERE condition];
3、如果没有WHERE子句,则全表的数据都会被更新,务必小心。
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
c、DELETE语句
1、删除表中的记录
2、语法:DELETE [FROM] table_name [WHERE condition];
3、如果没有WHERE子句,则全表的数据都会被删除。
4、在DDL语句中的TRUNCATE语句,同样有删除表数据的作用,和DELETE语句的区别:
* DELETE可以有条件删除,TRUNCATE将表数据全部删除。
* DELETE是DML语句,可以回退,TRUNCATE是DDL语句,立即生效,无法回退。
* 如果是删除全部表记录,且数据量较大,DELETE语句效率比TRUNCATE语句低。
DELETE FROM Person WHERE LastName = 'Wilson' ;
博客是我在大海中捞到针的神器