DDL主要的语句有:
CREAT TABLE /创建表/
ALTER TABLE /修改表的属性/
DROP TABLE /删除表/
DML主要的语句有:
SELECT /从一个表或多个表中检索数据/
DELETE /从表中删除数据/
INSERT /向一个表中添加数据/
UPDATE /修改表中已有的数据/
主要的命令有:
GRANT /授予权限/
REVOKE /回收所授予的权限/
CREATE
创建表语法:
CREATE TABLE <表名> (<列名><数据类型> [NULL|NOT NULL]
[列级完整性约束条件] [,<列名><数据类型>[列级完整性约束条件]…][,<表级完整性约束条件>])
ALTER
修改表
ALTER TABLE<表名>
[ADD <新列名><数据类型>[完整性约束]
[DROP<列名>]
[MODIFY]<列名><数据类型>];
DROP
删除基本表语法
DROP TABLE <表名>
SELECT语句的语法形式如下:
SELECT select_listFROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ]
INSERT语句用于向数据库或者视图中加入一行数据
语法:
INSERT [INTO] { talbe_name |view_name}
{[(column_list)]
{values ({default |NULL |expression } [,…n])}
INSERT [INTO] { talbe_name |view_name}
{[(column_list)]
select column_list from table_name
Update { table_name |view_name }
[from {
SET column_name={expression |default |NULL}[,…]
[where search_condition]
DELETE语句用于删除数据库表中的数据
语法:
DELETE [FROM ]
{table_name |view_name
}
[ WHERE
]
用来控制用户对数据库对象操作的权限
语法:
grant|revoke 对象权限|all
on 数据库对象
to 数据库用户
[WITH GRANT OPTION]
alter table table_name add(列 类型)
alter table table_name modify(列 类型)
查看约束的数据字典:user_constraints
建表时加约束:(列级别启用约束)
非空约束 : constraint constraint_name not null
建表后加约束:(表级别启用约束)
唯一约束 : alter table table_name add constraint constraint_name unique (列名)
主键约束 : alter table table_name add constraint constraint_name primary key (列名)
外键约束 : alter table table_name1 add constraint constraint_name foreign key (列名) references table_name2(由于外键只能参照主键,一张表只有一个主键,所以无需指定列) [on delete cascade | on delete set null]
check约束 : alter table add constraint add constraint_name check (check 条件)
注意 : not null 只能在列级别启用约束
修改表中约束的启停状态:
alter table table_name modify constraint constraint_name disable(enable) novalidate;
限制数据访问
简化复杂查询(降低性能)
创建视图:
create or replace [force] view v_temp(v_col1,v_col2,v_col3)
as
select col1,col2,col3
from table_name1,table_name2
where clause
with check option
with read only
删除视图
drop view view_name
查询创建视图的子查询
select text from user_views where view_name=视图名称
--索引的数据字典 user_indexes
减少对数据库的I/O操作,加速查询
索引是有序排列的
对select,update,delete操作加速,对insert操作降速
创建简单索引
create index index_name on table_name (列名)
查看索引的有效性:
–数据字典
desc index_stats
–关键列:name,heignt,blocks,br_blks,br_rows,lf_blks,lf_rows
将索引分成多个叶子块,根据索引范围去对应的叶子块当中查询,无需全表扫描
rowid 物理地址的绝对值
将rowid 和 主键列 一起存入索引当中,根据主键列找到rowid,根据rowid直接获取信息
rowid 18 位长度
6 3 6 3
对象号 文件号 块号 行号
使用索引的技巧
对于小表来说,使用索引对于性能不会有任何提升
当索引列中有极多的不同数据和空值时,索引会使性能极大提高
当查询返回很少数据时,索引可以优化查询;当查询返回数据很多(25%)时,索引会加大系统开销
索引降低插入和更新操作的性能,当需要大量的更新操作时,需要先删除索引,待更新操作完成,再简单的恢复索引
对字段的索引已经对两个表进行了归并操作,这一技术极大的提高了归并的速度
不要对经常更新或修改的字段创建索引
在创建索引时使用unique关键字
符合索引通常使用unique关键字防止相同数据多次出现
create unique index index_name
on Tbale(col1,col2)