oracle基础语法

Oracle建表(create table)

数据类型 类型解释

VARCHAR2(length)

字符串类型:存储可变的长度的字符串,length:是字符串的最大长度,默认不填的时候是1,最大长度不超过4000。

CHAR(length)

字符串类型:存储固定长度的字符串,length:字符串的固定长度大小,默认是1,最大长度不超过2000。

NUMBER(a,b)

数值类型:存储数值类型,可以存整数,也可以存浮点型。a代表数值的最大位数:包含小数位和小数点,b代表小数的位数。

number(6,2),输入123.12345,实际存入:123.12 。

number(4,2),输入12312.345,实际春如:提示不能存入,超过存储的指定的精度。

DATA

时间类型:存储的是日期和时间,包括年、月、日、时、分、秒。例子:

内置函数sysdate获取的就是DATA类型

TIMESTAMP

时间类型:存储的不仅是日期和时间,还包含了时区。例子:

内置函数systimestamp获取的就是timestamp类型

CLOB

大字段类型:存储的是大的文本,比如:非结构化的txt文本,字段大于4000长度的字符串。

BLOB

二进制类型:存储的是二进制对象,比如图片、视频、声音等转换过来的二进制对象

创建stuinfo(学生信息表)

-- Create table
create table STUDENT.stuinfo
(
  stuid      varchar2(11) not null,--学号:'S'+班号(7位数)+学生序号(3位数)(1)
  stuname    varchar2(50) not null,--学生姓名
  sex        char(1) not null,--性别
  age        number(2) not null,--年龄
  classno    varchar2(7) not null,--班号:'C'+年级(4位数)+班级序号(2位数)
  stuaddress varchar2(100) default '地址未录入',--地址 (2)
  grade      char(4) not null,--年级
  enroldate  date,--入学时间
  idnumber   varchar2(18) default '身份证未采集' not null--身份证
)
tablespace USERS --(3)
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Add comments to the table 
comment on table STUDENT.stuinfo --(4)
  is '学生信息表';
-- Add comments to the columns 
comment on column STUDENT.stuinfo.stuid -- (5)
  is '学号';
comment on column STUDENT.stuinfo.stuname
  is '学生姓名';
comment on column STUDENT.stuinfo.sex
  is '学生性别';
comment on column STUDENT.stuinfo.age
  is '学生年龄';
comment on column STUDENT.stuinfo.classno
  is '学生班级号';
comment on column STUDENT.stuinfo.stuaddress
  is '学生住址';
comment on column STUDENT.stuinfo.grade
  is '年级';
comment on column STUDENT.stuinfo.enroldate
  is '入学时间';
comment on column STUDENT.stuinfo.idnumber
  is '身份证号';

stuinfo(学生信息表)添加约束

-- Create/Recreate primary, unique and foreign key constraints 
alter table STUDENT.STUINFO
  add constraint pk_stuinfo_stuid primary key (STUID);
  --把stuid当做主键,主键字段的数据必须是唯一性的(学号是唯一的)
   
-- Create/Recreate check constraints 
alter table STUDENT.STUINFO
  add constraint ch_stuinfo_age
  check (age>0 and age<=50);--给字段年龄age添加约束,学生的年龄只能0-50岁之内的
   
alter table STUDENT.STUINFO
  add constraint ch_stuinfo_sex
  check (sex='1' or sex='2');
   
alter table STUDENT.STUINFO
  add constraint ch_stuinfo_GRADE
  check (grade>='1900' and grade<='2999');

Oracle查询(select)

select命令结构:

1

select *|列名|表达式 from 表名 where 条件 order by 列名


案例1:查询学生信息表(stuinfo)中“李四”同学的基本信息:

1

select t.* from STUDENT.STUINFO t where t.stuname = '李四';

oracle基础语法_第1张图片

 


案例2:查询“李四”同学的学号、班级、年级和地址:

1

select t.stuid,t.classno,t.stuaddress,t.grade from STUDENT.STUINFO t where t.stuname = '李四';

oracle基础语法_第2张图片


案例3:查询班级“C201801”所有同学信息,按年龄进行升序展示:

1

select t.*  from STUDENT.STUINFO t where t.classno = 'C201801' ORDER BY T.AGE ASC

oracle基础语法_第3张图片

Oracle插入(insert into)

insert 命令结构:

1

insert into 表名(列名1,列名2,列名3.....)values(值1,值2,值3.....);

案例1:向学生信息表(stuinfo)插入一条数据:

1

2

3

4

insert into STUDENT.STUINFO (STUID, STUNAME, SEX, AGE, CLASSNO, STUADDRESS, GRADE, ENROLDATE, IDNUMBER)

values ('SC201801005''龙七''1', 26, 'C201801''福建省厦门市XXX号''2018', to_date('01-09-2018''dd-mm-yyyy'),

 '3503021992XXXXXXXX');

select from student.stuinfo t where t.stuid='SC201801005';

结果如下:

 

oracle基础语法_第4张图片


Oracle更新(update)

update命令结构:

1

update 表名 set 列名1=值1,列名2=值2,列名3=值3..... where 条件

 


案例1、更新学生“张三”的年龄和身份证信息:

1

2

3

4

5

update student.stuinfo t

   set t.age = '24', t.idnumber = '3503021994XXXXXXXX'

 where t.stuname = '张三';

commit;

select from student.stuinfo t where t.stuname='张三';

结果如下:

oracle基础语法_第5张图片

Oracle删除(delete)

Oracle中对表数据的删除是利用delete命令进行的。

 


delete命令结构:

1

delete from 表名 where 条件

案例1、删除学生信息表(stuinfo)中学生“张三”的数据:

1

delete  from stuinfo t where t.stuname='张三';

结果如下:

 

oracle基础语法_第6张图片

Oracle字符串连接符||

Oracle中利用字符串连接符||(即双竖线)来连接查询结果。

 


案例1、字符串连接符||:

1

2

3

4

select '姓名:' || c.stuname || ', 课程:' || b.coursename || ', 成绩:' || a.score || '分。' as sxcj

  from score a, course b, stuinfo c

 where a.courseid = b.courseid

   and a.stuid = c.stuid

结果如下:

oracle基础语法_第7张图片

Oracle DISTINCT

DISTINCT语法结构:

1

SELECT DISTINCT 列1,列2,列3... from 表名;

案例1、查询学生成绩表中课程“数学(2018上学期)”的所有出现的成绩,不重复:(案例所需表结构)

1

2

3

4

select distinct b.coursename, t.score

  from score t, course b

 where t.courseid = b.courseid

   and t.courseid = 'R20180101';

结果如下:

oracle基础语法_第8张图片                                                                                                                                                                                                                        

IN操作符

在 Where 子句中可以使用 IN 操作符来查询其列值在指定的列表中的查询结果。

oracle基础语法_第9张图片                                   

BETWEEN...AND

在 WHERE 子句中,可以使用 BETWEEN...AND 操作符来查询列值包含在指定区间内的查询结果 。

oracle基础语法_第10张图片

LIKE模糊查询

1、%:表示零个或者多个任意字符。

2、_:代表一个任意字符。

3、\:指转义字符,“\%”在字符串中表示一个字符“%”。

oracle基础语法_第11张图片

查询学生基本信息表“STUINFO”中姓“张”的,并且姓名长度是两个字的学生基本信息:

1

select from STUINFO t where t.stuname like '张_';

Oracle集合运算

1、INTERSECT(交集),返回两个查询共有的记录。

2、UNION ALL(并集重复),返回各个查询的所有记录,包括重复记录。

3、UNION(并集不重复),返回各个查询的所有记录,不包括重复记录 (重复的记录只取一条)。

4、MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。 

oracle基础语法_第12张图片

oracle基础语法_第13张图片

INTERSECT(交集):

oracle基础语法_第14张图片

UNION ALL(并集重复)

oracle基础语法_第15张图片

UNION(并集不重复)

oracle基础语法_第16张图片

MINUS(补集)

oracle基础语法_第17张图片

外连接

1、left join(左联接)等价于(left outer join)返回包括左表中的所有记录和右表中联结字段相等的记录。

2、right join(右联接)等价于(right outer join)返回包括右表中的所有记录和左表中联结字段相等的记录。

3.、full join (全连接)等价于(full outer join)查询结果等于左外连接和右外连接的和。

oracle基础语法_第18张图片

oracle基础语法_第19张图片

oracle基础语法_第20张图片

oracle基础语法_第21张图片

oracle基础语法_第22张图片

Oracle伪列

Oracle表中的每一行在数据文件中都有一个物理地址,使用 ROWID 可以快速的定位表中的某一行。

oracle基础语法_第23张图片

ROWNUM为每个查询结果集的行标识一个行号

oracle基础语法_第24张图片

Oracle单行子查询

oracle基础语法_第25张图片

Oracle多行子查询

oracle基础语法_第26张图片

Oracle视图

oracle视图可以理解为数据库中一张虚拟的表,他是通过一张或者多张基表进行关联查询后组成一个虚拟的逻辑表。

oracle基础语法_第27张图片

 

 

 

你可能感兴趣的:(DB)