数据库概念
数据库(DataBase)是用来存放数据的仓库。本质上,数据中的数据也是存储在磁盘上的一个或多个文件中,这些文件中的数据具有一定的物理结构和逻辑结构,数据之间存在一定的关联关系。
如,可以把一个学校的学生、课程、学生成绩等数据有序地组织并存放在某个数据库中。
数据库就是由一些持久的相互关联的数据以一定的组织形式存放在计算机的存储介质中形成的文件集合。
根据数据的存储和组织形式,不同的数据库对外提供了不同的数据模型(逻辑结构),有:层次模型、网状模型和关系模型。把采用了关系模型的数据库称为关系型数据库。
关系型数据库:以二维表格(关系表)的形式组织数据库中的数据。即,它存储的数据被组织为表(table)结构的相关信息的集合。每个表都包含很多行(row),每行中包含多列(column)。
例如:学生成绩管理所涉及的信息被放在三个表:“学生”、“课程”和“成绩”中。
“学生”表的主要信息有:学号、姓名、性别、出生日期、专业、电话、备注;
“课程”表的主要信息有:课程号、课程名、开课学期、学时和学分;
“成绩”表的主要信息有:学号、课程号和成绩。
Oracle中的数据库采用的就是关系型数据库。
Oracle数据库中的表都被存储在称为模式(schema)的结构中。模式(schema) 可以理解为数据库对象的集合。出于数据安全和分类管理的需要,Oracle将某个用户创建的所有数据库对象,例如表、视图、索引、触发器、存储过程、PL/SQL程序包、函数等,都放置在该用户对应的模式下。
用户和模式是一一对应的关系,每个用户都有一个对应的模式,并且模式名和拥有这些数据库对象的用户名相同。
数据库管理系统概念
用来管理和访问数据库的系统称为数据库管理系统(Database Management System),简称DBMS。数据库管理系统按一定的数据模型组织并存放数据。
DBMS提供如下功能:
○数据定义功能:可定义数据库中的对象(表、视图等)。
○数据操纵功能:可对数据库中的数据进行插入、删除、修改、查询等。
○数据的完整性检查功能:保证用户输入的数据应满足相应的约束条件。
○数据库的安全保护功能:保证只有赋予权限的用户才能访问数据库中的数据。
○数据库的并发控制功能:使多个应用程序可在同一时刻并发地访问数据库的数据。
○数据库系统的故障恢复功能:使数据库运行出现故障时进行数据库恢复,以保证数据库可靠运行。
○在网络环境下访问数据库的功能。
○方便、有效地存取数据库信息的接口和工具。编程人员通过程序开发工具根据数据库提供的对外接口编写数据库应用程序。数据库系统管理员(DBA,DataBase Administrator)通过提供的工具对数据库进行管理。
Oracle数据库管理系统(DBMS)
Oracle就是一个数据库管理系统。其它的数据库管理系统有:SQL Server、DB2、MySQL等。
○数据库名(DB_NAME):用户自定义的用来标识一个数据库的名称。
例:orcl
○全局数据库名:用来在网络中标识一个数据库的名称。全局数据库名由[数据库名]+[域名]组成。
○ SID:Oracle系统标识符(System ID):用户自定义的用来区分Oracle实例的名称。 Oracle实例是由特定的内存结构和一组后台进程所组成。
SID主要用于操作系统和数据库之间的联系,操作系统通过SID区分不同的Oracle实例。
用户如果要访问数据库,应该基于SID是向某一个Oracle实例发送请求, Oracle实例负责从数据库中获取数据。
SID通常和数据库名相同,两者具有一对一对应关系。一个Oracle实例只能对应一个数据库。而一个数据库可以由多个Oracle实例访问。
sql*plus常用命令
连接命令
(1)conn[ect] 用法: conn 用户名/密码@网络服务名 [as sysdba/sysoper]
当用特权用户身份连接时,必须带上 as sysdba 或是 as sysoper
(2)disc[onnect] 说明:该命令用来断开与当前数据库的连接
(3)passw[ord] 说明:该命令用于修改用户的密码.如果要想修改其它用户的密码,需要用sys/system登陆.
(4)show user 说明:显示当前用户名
(5)exit 说明:该命令会断开与数据库的连接,同时会退出sql*plus
连接操作:
(1) 如果提示[账户已被锁定],表明该用户被锁定不能登录Oracle,可使用sys用户登入系统,使用如下SQL语句解锁该用户:
alter user userName account unlock;
注:SQL语句不区分大小写。
(2) 解锁后的用户初次登录系统时需要重新设定密码。
--【练习】使用SQL Plus软件和控制台登录Oracle
--【练习】锁定和解锁scott用户
alter user c##scott account lock;
alter user c##scott account unlock;
一旦连接到了Oracle,就可以输入SQL Plus命令或SQL语句了。SQL语句会由SQL Plus交给Oracle数据库管理系统负责运行。
SQL Plus命令和SQL语句输入时不区分大小写; SQL Plus命令可以没有结束分号;SQL语句可跨行输入,最后必须以分号结束。
--SQL语句示例:
select sysdate from dual; --获取系统日期的SQL语句
select * from v$nls_parameters; --查询Oracle当前会话的参数设置
结构化查询语言-SQL简介
SQL 是 Structured Query Language(结构化查询语言)的首字母缩写词
SQL 是数据库语言,Oracle 使用该语言存储和检索信息.
表是主要的数据库对象,用于存储数据
SQL语句可分为5类:
(1)查询语句:检索数据库中的数据;SELECT
(2)数据操纵语句:修改和删除数据库中的数据;INSERT,UPDATE,DELETE
(3)数据定义语句:定义数据库结构;CREATE,ALTER,DROP,RENAME,TRUNCATE
(4)事务控制语句:用于撤销或提交某些操作;COMMIT,ROLLBACK,SAVEPOINT
(5)数据控制语句:用于控制数据的访问权限。GRANT,REVOKE
可以通过一些辅助软件将SQL语句发送给数据库管理系统来执行;也可以在java、c++等应用程序中使用SQL语句。
• Oracle数据库常用数据类型
char(length) :定长字符串,如果实际字符串长度不足,则在后面补空格;length介于1和2000之间,单位为字节。
varchar2(length):变长字符串,length表示最大长度;length介于1和4000之间,单位为字节。
nchar(length):定长UNICODE字符串,对于任意字符存储的都是两字节Unicode码, length表示字符数,介于1和1000之间。
nvarchar(length):变长UNICODE字符串。 length表示字符数,介于1和2000之间。
BLOB(Binary Large Object):二进制大数据,可最多存放4G的数据。
CLOB:单字节字符数据,可最多存放4G的数据;
NCLOB:UNICODE字符数据,可最多存放4G的数据;
date:日期类型,存储日期和时间值;
number(precision,scale):数值类型,可存储浮点数,也可存整数。precision表示有效数字的位数,scale表示小数点后的位数。Oracle支持的最大精度是38位。如果数值超出了位数就会被截断。
BINARY_FLOAT:32位浮点数;
BINARY_DOUBLE:64位浮点数;
BINARY_FLOAT和BINARY_DOUBLE这两种类型相对于NUMBER类型具有如下优点:
1,占用的存储空间小; BINARY_FLOAT占5个字节; BINARY_DOUBLE占9个字节;NUMBER最多要占22个字节。
2,运算速度快;
3,可表示的数值范围更大;
4,运算封闭,即运算结果肯定位于固定的数值集合中。
NUMBER类型适合于高精度运算。
另外,还有两个比较古老的数据类型:
RAW(n) :变长二进制数据;n介于1~2000之间,单位为字节。
LONG :变长字符列,最大2G字节。
表的管理–创建表(基本语句)
create table table_name(
field1 datatype,
field2 datatype,
field3 datatype, )
field:指定列名 datatype:指定列类型
注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。例:user对象
id int
name string
password string
birthday date
oracle表的管理—修改表
--使用 ALTER TABLE 语句添加,修改,或删除列的语法.
ALTER TABLE tablename ADD (columnname datatype);
ALTER TABLE table MODIFY (columnname datatype);
ALTER TABLE table DROP (column);
--修改表的名称:rename 表名 to 新表名
rename oldname to newname;
插入记录
格式1:insert into tableName(columnNameList) values(valueList)
作用:将一行记录插入到表中。
columnNameList表示列名列表,可以只列出表中的部分列;valueList是值列表,数量和数据类型必须和columnNameList匹配。
插入新行时, columnNameList如果只列出了部分列,未提供值的列会被设置为空值或默认值;但主键列和非空列必须指定值;
【示例】具有默认值的列
(2) 可以省略columnNameList部分,此时valueList中需要提供所有列的值;此时valueList中值的顺序要和DESC命令列出的列顺序一致;
(3) 可以使用NULL关键字显式的提供一个空值;也可使用DEFAULT关键字显式指明该列使用默认值;
【示例】显式提供空值和显式使用默认值
(4) 字符串字面值中如果有单引号,则使用两个连续的单引号。
格式2:INSERT INTO tableName(columnNameList) SELECT … FROM … WHERE …
作用:将子查询返回的行插入到表中
注:
1,插入新记录时,应确保主键列的值的唯一性,如果试图插入一个与主键列值重复的行,将会出现错误:’违反唯一约束条件’。
2,如果当前表中有外键约束的列,那么插入数据时,所给定的列值要么为空值,要么该值必须存在于父表中。否则会出现错误:‘违反完整约束条件’。
3,字符串字面量’’和’ ’是代表不同的含义,’’将被Oracle视为NULL,‘ ’则是包含了一个空格的字符串。
更新记录
格式:UPDATE tableName SET colName=value,… WHERE……
作用:对表中的多行或多列进行更新
注意:
1,如果要更新的表中主键列的值,且该值已被子表中的某条记录引用,那么会出现错误:‘违反完整约束条件-已找到子记录’。
2,如果当前表中有外键约束的列,那么更新该列的数据时,所给定的列值要么为空值,要么该值必须存在于父表中。否则会出现错误:‘违反完整约束条件-未找到父项关键字’。
*Oracle不提供级联更新的功能。
删除记录
格式:DELETE FROM tableName WHERE …
作用:根据条件从表中删除记录
注意:
1,如果要删除当前表中的主键列的值,而该值已被子表中的某条记录引用,那么也会出现错误:‘违反完整约束条件’。
如果想实现级联删除的功能,需要在创建外键约束列时指定ON DELETE CASCADE;
如果对外键约束的列指定ON DELETE SET NULL,那么当父记录被删除时,子记录对应的列自动被置为NULL。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/310755.html