Oracle SQL数据操作和查询(一)
创建一个学生信息表(infos)表和约束
create table infos(
stuid varchar2(7) not null, --学号
stuname varchar2(10) not null, --姓名
gender varchar2(2) not null, --性别
age number(2) not null, --年龄
seat number(2) not null, --座号
enrolldate date, -入学时间
stuaddress varchar2(50) default '地址不详', --住址
classno varchar2(4) not null --班号
)
主键约束
alter table infos add constraint pk_infos primary key(stuid)
/
check检查约束
alter table infos add constraint ch_infos_gender check(gender='男' or gender='女')
/
alter table infos add constraint ck_infos_seat check(seat>=0 and seat<=50)
/
alter table infos add constraint ck_infos_age check(age>=0 and age<=100)
/
alter table infos add constraint ck_infos_classno check((classno>='1001' and classno<='1999' or ) or (classno>='2001' and classno<='2999'))
/
唯一约束(unique)
alter table infos add constraint un_stuname unique(stuname)
/
创建一个学生成绩表(scores)表和约束
create table scores(
id number,
term varchar2(2), --学期 s1或s2
stuid varchar2(7) not null, --学号
examno varchar2(7) not null, --考号
writtenscore number(4,1) not null, --笔记成绩
labscore number(4,1) not null --机试成绩
)
check检查约束
alter table scores add constraint ck_scores_term check(term='s1' or term='s2')
外键约束
alter table scores add constraint fk_scores_infos_stuid foreign key(stuid) references infos(stuid)
简单查询
语法结构:简单查询select *|列名|表达式 from 表名 where 条件 order by 列名
如:
select stuname,gender,age,stuaddress from infos where gender='男' order by age
order by默认是升序
语法结构:根据结果集创建表
create table 表名 as select 语句
如:
create table infos1 as select * from infos;
如:复制表结构
create table infos2 as select * from infos where stuid=1001;
数据插入
语法结构:根据结果集创建表insert info 表名(列名1,列名2....) values(值1,值2....)
如:
insert info infos values('s100102','dan','男',22,2,to_date('2009-8-9 06:30:10', 'yyyy-mm-dd hh24:mi:ss'),'江西','1001')
如:
insert into infos values('s100104','guang','男',28,3,sysdate,default,'1001')
如:insert向表中插入一个结果集
insert into infos2 select * from infos;
更新数据
语法结构:updateupdate 表名 set 列名1=值,列名2=值... where 条件
如:
update infos set classno='1002',stuaddress='广东' where stuname='dan';
删除数据
语法结构:delete操作delete from 表名 where 条件
如:
delete from infos where stuid='s100103';
commit;
语法结构:truncate命令,可以把表中的所有数据一次性全部删除truncate table 表名
操作符
关系运算和逻辑运算与sql server一样Oracle中字符串可以用单引号,也可以用双引号,在别名中存在空格时,必须用双引号,在表名,列名时用双引号
字符串连接操作符(||)
select (ename || 'is a' || job) as "Employee Details" from emp where sal>2000;