1.1.、表的创建和删除
--供应商表 CREATE TABLE s (s_no VARCHAR(5) NOT NULL, --供应商代码 s_name VARCHAR(30) UNIQUE, --供应商名 s_status VARCHAR(20), --供应商状态 PRIMARY KEY(s_no)); --零件表 CREATE TABLE p (p_no VARCHAR(5) NOT NULL PRIMARY KEY, --零件号 p_name VARCHAR(30) UNIQUE, --零件名 p_weight NUMERIC(6,2), --重量 p_city VARCHAR(20) --产地 ); --关系模式:一个供应商可以供应多个零件,而一个零件可以由多个供应商供应 s_p(s_no, p_no, quantity) CREATE TABLE s_p (s_no VARCHAR(5), p_no VARCHAR(5), quantity NUMERIC(9), --数量 PRIMARY KEY(s_no, p_no), FOREIGN KEY(s_no) REFERENCES s (s_no), FOREIGN KEY(p_no) REFERENCES p (p_no)); --需要注意的地方: --1、如果已经定义的主键,如PRIMARY KEY(s_no),则不能在s_no之后加unique,不然有错误 --2、foreign key(s_no) references s(s_no)定义了在s_p关系中s_no为外码,其取值必须来自s关系的s_no域1.1.1、操作表、列
--在s_no表添加一列 s_city; oracle中不能在某列前后固定插入,只会在最后列中追加 --插入新列不影响前面的数据 ALTER TABLE s ADD s_city VARCHAR2(20); ALTER TABLE s RENAME TO s_table; --修改表名 ALTER TABLE s_table RENAME COLUMN s_city TO s_country; --修改表列名 ALTER TABLE s_table MODIFY s_country NUMBER(20); --修改字段类型 ALTER TABLE s_table DROP COLUMN s_country; --删除表列 --注意:首先,增加和修改列是不需要加关键字COLUMN,否则会报错ora-00905。 -- 其次,对删除单列的话,一定要加COLUMN,然后记住,删除是不需要加列类型的。 ------------------------------------------------------------------------- --增加多列: ALTER TABLE s_table ADD (test1 VARCHAR2(10),test2 NUMBER); --修改多列: ALTER TABLE s_table MODIFY (test1 VARCHAR2(20),test2 VARCHAR2(20)); --删除多列: ALTER TABLE s_table DROP (test1,test2); --很奇怪的现象,再单列中要加关键字COLUMN,然而再删除多列的时候,不能加COLUMN关键字。
1.2、创建、删除索引
创建索引语句格式:
create [unique][cluster] index <索引名>
on <表名>(列名 [<次序>],列名 [<次序>]...);
unique:表明此索引的每一个索引值只对应唯一的数据记录。
cluster:表明要建立的索引是聚簇索引,意为索引项的顺序是与表中记录的物理顺序一致的索引组织。
次序。默认次序是ASC
--建表 CREATE TABLE s_test (s_no VARCHAR(5) NOT NULL, --供应商代码 s_name VARCHAR(30), --供应商名 s_status VARCHAR(20) --供应商状态 ); --建立索引 CREATE UNIQUE INDEX test_index ON s_test(s_no DESC) ; --Oracle数据库创建表是有两个约束带有默认索引。 --1、主键primary Key:唯一索引、非空 --2、唯一Unique:唯一索引,可以是空值 --如果没有设定主键和唯一约束,表中不会有默认索引的,这时才可以建立索引!!!。 --查看索引。一定是大写的表名 SELECT * FROM User_Indexes WHERE table_name = 'S_TEST'; --删除索引 DROP INDEX test_index;
1.3、视图的创建、删除
视图创建语法:
create view 视图名(列表名)
as select 查询子句
[with check option];
注意:1、子查询是任意复杂的 select 语句,但通常不允许含有 order by子句和distinct 语句
2、with check option 表示对update、insert、delete操作时保证更新、插入或删除的行为满足子查询的条件表达式
--创建视图时需要权限, system用户有两种方式给权限 GRANT CREATE ANY VIEW TO changwen; GRANT CONNECT, RESOURCE,DBA TO changwen; --创建视图 CREATE VIEW s_view AS SELECT s_no, s_name FROM s_table; --删除视图 DROP VIEW s_view;1.4、delete 与 truncate 区别?
1.5、COMMENT--注释
SQL-->COMMENT ON TABLE s_test IS '存放雇员信息'; --没有多大的用
二、DML:数据操作语言
1. SELECT - - 查询