1 table :
创建表 :
create table t(表名) (数据名a +数据类型varchar2(20))
创建一个表t , 其中包括 名为a 数据类型为 varchar2 (变长字符串),最大长度20 .
例:创建学生信息表:
create table stu
(
id number(15),
name varchar2(20)not null, #约束条件, 插入时name不能为空值
sex number(1),
age number (3),
sdate date, # 此处不用为date设置最大长度, 因为sql里date就是一种保存日期的数据类型
grade number (2) default 1, #设置默认值为1 . 当插入时未指定grade时 ,grade 为1
class number(4),
email varchar2(50) unique
)
2 约束constraint :
本身也是一种对象 可以为它起名. 如
name varchar2(20) constraint stu_name_nn not null,
not nul 为非空约束:
2) 唯一约束: unique
stu 表中,显然email 不能重复, 添加约束如下:
email varchar2(50) unique
以上均为字段级约束 .
表级约束 : 要求name 和 email 的组合不能重复:
create table stu
(
id number(6),
name varchar2(20)not null,
sex number(1),
age number (3),
sdate date,
grade number (2) default 1,
class number(4),
email varchar2(50),
constraint stu_name_email_uni unique(email,name)
)
3)主键primary key 约束:
主键:可以唯一标注整条记录的字段. (非空,唯一,并从逻辑意义上代表每条记录)
上述stu表中, 可以设id 为主键:
字段级: id number(6) primary key,
表级 constraint stu_id_pk primary key (id)
亦可以 以两个字段的组合作为主键 .
4) 外键:
外键存在于同一张表的两个字段或两张表的两个字段之间 .
例 在 emp 表中 存在 deptno 这一字段, dept 表中也有deptno 这一字段.
如果需要向emp 中 insert 数据, 显然 deptno这一字段的赋值不能超过 dept 表中deptno的包含范围, 这使外键约束成为必要.
创建class:
create table class
(
id number(4) primary key,
name varchar2(20) not null
)
也就是说 ,class 中的id 与 stu中的 class 形成映射关系.
可在 stu 中的class 字段添加 约束:
create table stu
(
id number(6),
name varchar2(20)not null,
sex number(1),
age number (3),
sdate date,
grade number (2) default 1,
class number(4) references class (id),
email varchar2(50),
constraint stu_id_pk primary key (id),
constraint stu_name_email_uni unique(email,name)
#或者表级约束:
# constraint stu_class_fk foreigh key (class) references class (id)
)
注意: 被参考的字段 (如上述 class 中的id) 必须是主键!
3索引 index :
为某个字段建立索引
create index idx_stu_email on stu(email) ;
删除索引:
drop index idx_stu_email .
建立索引后 ,用户读取相关数据时效率提高
修改相关数据时效率降低, 因为亦要修改 user_indexs 中相关内容
4 视图 view .
给scott 用户 创建view的权限
conn sys /scott as sysdba;
grant create view to scott ;
conn scott/tiger;
某些方面来说,view相当于一种子查询, 便于提供给用户某些表的部分信息:
create view v$_stu as select id,naem,age from stu ;
5
数据字典表 user_tables ,user_views ,user_constraints等.
例如 想查看当前共有多少tables 他们的名字都是什么.
select table_name from user_tables ;
存储数据字典表之表 dictionary