基本概念
Oracle数据库适用于多种系统,SQL server数据库只能用于Windows。
数据库的架构:在Oracle数据库中,一个实例只能管理一个数据库。只有数据库在集群的环境下才能实现多个数据库被一个实例管理,而SQL server 数据库是一个实例管理多个数据库
内存分配:Oracle的内存分配大部分是由INIT.ORA来决定的,而SQL内存分配主要有动态内存分配和静态内存分配
数据库模型:层次结构模型,网状结构模型,关系结构模型(常用)
数据库的三级模式:外模式,模式,内模式;二级映像:外模式/模式映像,模式/内模式映像
外模式对应用户级,面向用户或应用程序员是模式的子集;模式对应着概念集,面向建立和维护数据库人员;内模式对应物理级,面向系统程序员;外模式/模式映像保证了数据与程序间的逻辑独立性,模式/内模式映像保证了数据与程序间的物理独立性
数据库中的相关术语
视图:视图是数据库中的虚拟表。在视图中存放的是从数据库表中查询出来的记录,使用视图主要是为为了方便信息查询,同时也能够缩短查询数据的时间
存储过程:存储过程是由SQL语句和控制流语句组成的语句块,存储过程存储在数据库内,可由应用程序通过存储过程的名称调用执行;存储过程在开发软件时,可以把大量的数据库操作放在服务器端的存储过程中,而只返回需要的数据,这样就减少了数据的传输量,速度也可以大大的提高
触发器:触发器是特殊的存储过程,也是有SQL语句和程序控制语句组成的,但是,触发器在数据库中是不需要调用而自动执行的。例如:在触发器中可以定义在修改某张表记录后执行触发器中的内容。
约束:约束是在数据库中保证数据库里表中数据完整性的手段。在Oracle 11g中使用约束有主键约束,外键约束,唯一约束,检查约束,非空约束,其中主键约束和唯一约束都被认为是唯一约束,而外键约束被认为是参照约束
范式——设计关系型数据库的准则
第一范式:数据库表中的字段都是单一属性的,不可再分
第二范式:数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖;在第二范式中组合主键(A,B)里面的A或者B 与其他字段不能存在组合重复。
第三范式:数据库中不存在非关键字段对任一候选关键字段的传递函数依赖,传递函数依赖是指的是如果存在A决定B,B决定C的关系,则C传递函数依赖于A。
SQL基础
SQL中的4种类型的语言:DDL,DML,DQL,DCL
DDL:定义要在数据库存储那些信息的数据定义语言;
DML:对数据库中的表进行操作的数据操纵语言
DQL:对数据库中的表进行检索的数据查询语言
DCL:对数据库中对象进行权限管理的数据控制语言
DDL
使用create语句创建表:
CREATE TABLE table_name
(
column_name datatype [null|not null],
column_name datatype [null|noy null],
...
[constraint]
)
使用Alter语句修改表
ALTER TABLE table_name
ADD column_name | MODIFY column_name|DROP COLUMN column_name;
--ADD: 用于向表中添加列
--MODIFY:用来修改表中已经存在的列的信息
--DROP COLUMN: 删除表中的列,在删除表中的列时经常要加上CASCADE CONSTRAINTS,是要把与该列有关的约束也一并删除掉
--向表里插入remark列,修改,删除
ALTER TABLE scott_tb ADD remark varchar(200);
ALTER TABLE scott_tb MODIFY remark number(2,2);
ALTER TABLE scott_tb DORP COLUMN remark;
--可以同时修改多个字段
使用DROP语句删除表:DROP TABLE table_name;
约束的使用
主键约束:
create table categoryinfo
(CategoryId varchar2(10),
CategoryName varchar2(30),
primary key(CategoryId)
);
--使用ALTER TABLE
ADD CONSTRAINTS constraint_name PRIMARY KEY (column_name);
--constraint_name:约束名称
ADD CONSTRAINTS pk_category primary key(categoryid);
DROP CONSTRAINT constraint_name; --移除主键约束
外键约束:
外键约束可以保证使用外键约束的数据库列与所引用的主键约束的数据列一直,外键约束一个数据表可以有多个
CONSTRAINT constraint_name FOREIGN KEY (column_name)
REFERENCE table_name (column_name)
ON DELETE CASCADE;
-- constraint_name:创建的约束的名字
-- REFERENCE:要引用的表明(列名)
-- ON DELETE CASCADE: 设置级联删除,当主键的字段被删除时,外键所对应的字段也被同时删除
ALTER TABLE table_name
ADD CONSTRAINT constraint_name FOREIGN KEY (column_name)
REFERENCE table_name (column_name)
ON DELETE CACADE;
--修改数据库时添加外键约束
ALTER TABLE table_name
DROP CONSTRAINT constraint_name
--删除约束
check约束
检查约束能够规定每一个列能输入的值,以保证数据的正确性。
--创建表时在后面加上
CONSTRAINT constraint_name CHECK(condition);
--修改数据表时
ADD CONSTRAINT constraint_name CHECK(condition);
DROP CONSTRAINT constraint_name --删除
UNIQUE约束
唯一约束 操作方式同check约束
NOT NULL约束
创建表时在字段后设置
修改表时:ALTER TABLE table_name
MODIFY column NOT NULL;
删除约束 MODIFY column NULL;