数据类型 | 类型解释 |
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');
select命令结构:
1 |
|
案例1:查询学生信息表(stuinfo)中“李四”同学的基本信息:
1 |
|
案例2:查询“李四”同学的学号、班级、年级和地址:
1 |
|
案例3:查询班级“C201801”所有同学信息,按年龄进行升序展示:
1 |
|
insert 命令结构:
1 |
|
案例1:向学生信息表(stuinfo)插入一条数据:
1 2 3 4 |
|
结果如下:
update命令结构:
1 |
|
案例1、更新学生“张三”的年龄和身份证信息:
1 2 3 4 5 |
|
结果如下:
Oracle中对表数据的删除是利用delete命令进行的。
delete命令结构:
1 |
|
案例1、删除学生信息表(stuinfo)中学生“张三”的数据:
1 |
|
结果如下:
Oracle中利用字符串连接符||(即双竖线)来连接查询结果。
案例1、字符串连接符||:
1 2 3 4 |
|
结果如下:
DISTINCT语法结构:
1 |
|
案例1、查询学生成绩表中课程“数学(2018上学期)”的所有出现的成绩,不重复:(案例所需表结构)
1 2 3 4 |
|
结果如下:
在 Where 子句中可以使用 IN 操作符来查询其列值在指定的列表中的查询结果。
在 WHERE 子句中,可以使用 BETWEEN...AND 操作符来查询列值包含在指定区间内的查询结果 。
1、%:表示零个或者多个任意字符。
2、_:代表一个任意字符。
3、\:指转义字符,“\%”在字符串中表示一个字符“%”。
查询学生基本信息表“STUINFO”中姓“张”的,并且姓名长度是两个字的学生基本信息:
1 |
|
1、INTERSECT(交集),返回两个查询共有的记录。
2、UNION ALL(并集重复),返回各个查询的所有记录,包括重复记录。
3、UNION(并集不重复),返回各个查询的所有记录,不包括重复记录 (重复的记录只取一条)。
4、MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。
INTERSECT(交集):
UNION ALL(并集重复)
UNION(并集不重复)
MINUS(补集)
1、left join(左联接)等价于(left outer join)返回包括左表中的所有记录和右表中联结字段相等的记录。
2、right join(右联接)等价于(right outer join)返回包括右表中的所有记录和左表中联结字段相等的记录。
3.、full join (全连接)等价于(full outer join)查询结果等于左外连接和右外连接的和。
Oracle表中的每一行在数据文件中都有一个物理地址,使用 ROWID 可以快速的定位表中的某一行。
ROWNUM为每个查询结果集的行标识一个行号
oracle视图可以理解为数据库中一张虚拟的表,他是通过一张或者多张基表进行关联查询后组成一个虚拟的逻辑表。