创建数据库表
创建表格式
–C --check
–P --primary key
–R --forgien key
–U --unique
–CREATE TABLE <table_name>(
–column1 DATATYPE [NOT NULL] [PRIMARY KEY],
–column2 DATATYPE [NOT NULL],
–…
–[constraint <约束名> 约束类型 (要约束的字段)
–… ] )
–说明:
–DATATYPE --是Oracle的数据类型
–NOT NULL --可不可以允许数据有空的
–PRIMARY KEY --是本表的主键
–constraint --是对表里的字段添加约束.(约束类型有Check,Unique,Primary key,not null,Foreign key)
–constraint 约束名 Foreign key(表中外键列) references引用 主表表名(主表中的主键列或者唯一列)
创建数据库表
--学生表
create table STUDENT(
STU_ID number(10) , --number(定义长度)
NAME nvarchar2(20) not null,--非空约束 --写入中文时建议用nvarchar2
age number(3) not null,
sex nchar(1) default('男'), --default 默认值约束
constraint PK_STU_ID primary key(STU_ID), --主键约束
constraint C_CHECK_SEX check(sex='男' or sex='女')--检查约束
)
--课程表
create table COURSE(
COURSE_ID number(10) constraint PK_COURSE_ID primary key,--主键约束
COURSE_NAME nvarchar2(10) not null, --非空
constraint U_COURSE_NAME Unique(COURSE_NAME) --唯一约束
)
--成绩表
create table SCORE(
STU_ID number(10) ,
COURSE_ID number(10) ,
SCORE number(3) not null,
constraint R_fk_STU_ID foreign key(STU_ID) references STUDENT(STU_ID), --外键约束
constraint R_fk_COURSE_ID foreign key(COURSE_ID) references COURSE(COURSE_ID) --外键约束
)
通过子查询创建表
create table stu as(
select * from STUDENT
)
--不会继承STUDENT的约束
对表删除及字段的修改
--删除表
drop table SCORE
--改名
alter table SCORE rename to SCORES ;
--添加字段属性
alter table STUDENT add (STU_EMAIL varchar(50))
--删除字段
alter table STUDENT drop column age
--修改字段属性
alter table STUDENT modify sex nchar(1) default('女')
向数据库表插入数据
insert into STUDENT values(011,'氨基酸',default,'156111651@qq.com');
insert into STUDENT values(012,'三氯蔗糖',default,'155636551@qq.com');
insert into STUDENT values(013,'热分解','男','855424545@163.com');
select * from STUDENT
insert into COURSE values(1001,'JAVA');
insert into COURSE values(1002,'HTML5+CSS3');
insert into COURSE values(1003,'ORACLE');
select * from COURSE
insert into SCORES values(011,1001,98);
insert into SCORES values(011,1002,93);
insert into SCORES values(011,1003,94);
insert into SCORES values(012,1001,100);
insert into SCORES values(012,1002,90);
insert into SCORES values(012,1003,96);
select * from SCORES
更新和删除表数据
--更新数据
--UPDATE 表名
--SET 列名1 = 值 , 列名2 = 值
--[WHERE 条件];
update SCORES set stu_id=011 where score=96
--删除数据
delete from SCORES where stu_id=011
创建序列
------创建序列
--先创建一个没有任何约束的表
create table stu as(
select * from STUDENT
)
CREATE SEQUENCE
MINVALUE 1
MAXVALUE 9999999999999999999999999999
INCREMENT BY 1
START WITH 1
NOCACHE
ORDER
NOCYCLE ;
insert into stu values(stu_id.nextval,'sda',default,'adwawdawd')
SELECT * FROM stu
--删除序列
drop SEQUENCE "MY_CD"."STU_ID"
创建索引
--单一索引
create index stu_stu_id on stu(stu_id);
--查询索引
select STU_ID, NAME, SEX, STU_EMAIL from stu where stu_id=011
--复合索引
create index stu_stu_id_name on stu(stu_id,name)
select STU_ID, NAME, SEX, STU_EMAIL from stu where name='氨基酸'
--修改和删除索引
--重建索引 经常使用DML语句就需要重建索引
alter index stu_stu_id_name REBUILD
--删除索引
drop index stu_stu_id