25-1课:
一、(创建用户并导入数据):
1-- backup scott(备份指定账户数据):
exp
2-- create user(创建用户):
create user username(用户名) identified by code(密码) default tablespace spacename(空间名) quota 10M on spacename(空间名);
grant create session, create table, create view to username;(授予权限)
3-- import the date(导入数据)
imp
二、insert(插入):
1.insert into tablename(表名) values (…………)(数据);(将完整数据段插入至指定表)
2.rollback;(撤销上一步操作)
3.create table tablename1(复制表名) as select *(指定数据) from tablename(源表名);(将源表tablename指定数据备份至tablename1)
4.insert into tablename(表名) (....)(指定位置) values (…………)(数据);(将数据段插入至指定表指定段)
5.insert into tablename1(复制表名) select from tablename(源表名);(将源表tablename数据插入至tablename1,前提是表结构完全一致)
25-2课:
一、rownum(行号):
1.rownum只能用 '<' 或 '<=' 连接;
2.--薪水排名最高的5人:
select ename,sal from
(select ename,sal from emp order by sal desc)
where rownum <= 5;
3.--薪水排名第6-10人:
select ename, sal from
(
select ename, sal, rownum r from
(select ename, sal from emp)
)
where r >= 6 and r <= 10;
26课:
一、SQL COUNT(*) 语法:
1.COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name;
二、sql having:
1.SQL语言中设定聚集函数的查询条件时使用HAVING从句而不是WHERE从句。通常情况下,HAVING从句被放置在SQL命令的结尾处。
三、update(更新):
1.Update 语句用于修改表中的数据。
语法:
UPDATE (表名称) SET (列名称 / 旧值) (=) (新值) WHERE (筛选条件);
四、delete(删除):
1.DELETE 语句用于删除表中的行。
语法
DELETE FROM (表名称) WHERE (筛选条件);
五、事务(Transaction):
1.Transaction是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
2.起始于一条DML语句,结束于rollback/commit语句以及DML/DCL语句。
3.当结束时无法再回滚。
3.非正常退出时自动回滚。
27课:
create table(建表)
28-29课constraint(约束条件):
1.默认约束:定义该列未输入值时应该具有的默认值
SQL-------alter table 表名 add constraint dt_列名 default 默认值 for 列名
2.空值约束:定义该列是否允许为空值(只能在字段级定义)
SQL-------定义表的时候在对应列列数据类型后面添加not null
3.检查约束:又叫check约束,用来限制列的取值,它根据定义的逻辑表达式来强制域的完整性
SQL-------alter table 表名 add constraint ck_列名 check(逻辑表达式)
4.唯一约束:确保在非主键列不输入重复值
SQL-------alter table 表名 add constraint uq_列名 unique[clustered | nonclustered](列名)
5.外键约束:用于建立两个表数据之间连接的一列或多列
SQL-------alter table 表名 add constraint fk_列名 foreign key(列名) references 另一表名(列名)
6.主键约束:用来惟一地标识表中的每一行
SQL-------alter table 表名 add constraint pk_列名 primary key(列名)
PS:
1.null值不认为是重复;
2.字段级约束,表级约束;
3.外键中被参考字段必须是主键;
4.删除被参考字段时若有参考则无法删除,即删除字段时注意是否有外键约束。
31课:
一、alter table(修改表结构):
1.非删除操作修改后的结构需容纳原数据。
2.可使用该操作修改约束条件。
二、drop table (删除表)
32课:
一、数据字典表(dictionary)
33课:
一、index(索引):
1.创建索引:create index indexname (索引名) on tablename(*) (基于某表某字段)。
2.删除索引:drop index indexname(索引名)。
PS:
1.分为单个索引与组合索引。
2.加主键、唯一约束,自动创建索引。
3.有索引效率读高改低。
4.不要轻易建索引,会占大量空间。
5.优化首选。
二、view(视图/虚表):
PS:
1.会增加维护支出。
2.简化查询。
34课:
一、sequence(序列数)
1.创建序列数:create sequence sequencename(序列数名) with(起始数) 1 increment by(每次递增数) 1 ;
2.得到下一个数字:sequencename(序列数名).nextval;
PS:
1.一般下一个序列数是在上一个序列数上+1,但可设置递增大小;
2.一般序列数是从0开始,但可设置;
35课:
一、三范式(设计表的原则):
具体情况具体分析,敢于打破三范式。
1.第一范式(确保每列保持原子性):
求不存在冗余数据,要有主键。
求列不可分,列不可重。
PS:但实际设计时会存在一定冗余数据,以提高效率。
2.第二范式(确保表中的每列都和主键相关):
多字段作为主键,非主键的字段不能部分的依赖于主键(即必须依赖于全部的主键字段)。
PS:解决方法是拆分成多张表。
3.第三范式(确保每列都和主键列直接相关,而不是间接相关):
每列都和主键列直接相关,而不是间接相关(传递依赖)。
例如:订单表(订单编号,定购日期,顾客编号,顾客姓名,……),初看该表没有问题,满足第二范式,每列都和主键列"订单编号"相关,再细看你会发现"顾客姓名"和"顾客编号"相关,"顾客编号"和"订单编号"又相关,最后经过传递依赖,"顾客姓名"也和"订单编号"相关。为了满足第三范式,应去掉"顾客姓名"列,放入客户表中。