2018-08-28

Oracle初学者

是的,老师今天给我们讲了学习阶段六大方法,是针对于学习程序这方面的。那么,其中一点就是多看书,多学习,多总结,多反馈。在上记录下这几个月来的学习历程,好像也挺不错的。因此小女故开始接触。。。


2018-08-28_第1张图片
oracle之基础学习

学习oracle得明白,它是干嘛的。首先,我们都知道数据吧,银行卡存了多少钱,数学考试多少分,这些都是数据。

那么,什么是数据库呢,就是管理数据的仓库,大家可以这样去理解。那么,这么多数据,仓库管理员又是怎么去管理的呢,现在肯定有工具,都用工具了——没错了,oracle就是这样的工具。后面学习到mysql也是一种工具,后面跟大家分享,一步一步来。


重点:数据库的增删改查,添加约束条件。实例如下:

--DDL数据定义语言

--用来创建、删除

--数据类型有哪些?

--1、数值类型:int、number

--2、字符型:char(长度固定)、varchar(长度会变化)、varchar2(oracle独有,长度会变化)

--3、日期类型:date、dd-mon-yy

--4、二进制数据blob,最大到4gb

--5、字符数据clob,最大到4gb

--创建表

create table my_user(

      name varchar(10),--如果写出varchar(50),并不是一次性给出50个字节占用着。

      age int,

      sex char(2)

);

--查询表

select * from my_user;

--增加多余的列(属于表的结构)

alter table my_user add(address varchar(20),phone varchar(50));

select * from my_user;

--删除列(属于表的结构)

alter table my_user drop(address);

--修改列的长度(属于表的结构)

alter table my_user modify(address varchar(10));

--修改表名

rename my_user to my_people;

--删除表:2种方式drop(表不在)、truncate(截断表,只会清空表中内容,表还在)

drop table my_people;

select * from my_people;

truncate table my_user;

select * from my_user;

--DML数据操作语言manipulation

--insert 插入

insert into my_uesr(name,age, sex)

values ('jss',18 ,'男');

select * from my_user;

select * from scott.emp;--可以找到。

--提交:2种方式

--1、工具栏中绿色按钮

--2、插入语句后面加commit即可

--oracle不会自动提交

--mysql会、自动提交

--更新数据

--更改年龄

update my_user

set age=20

where name='jss';

--删除数据delete一整行一整行来删除的

--删除所有数据

delete from tb_user;

delete from tb_user where name='Jss';

delete from tb_user where name='春花' and sex='女';

alter table tb_user add(id int);

alter 用来修改表结构的,如果要修改表中的数据,需要使用update

--简单的查询语句

--and

--大于小于,不包括值

select * from scott.emp where sal>2000 and sal<3000;

--betweeen and

select * from scott.emp where sal between 2000 and 3000;

--or

select * from scott.dept where deptno=10 or deptno=20;

--in相当于一堆的or

select * from scott.dept where deptno in(10,20);

--like 模糊查询

--%值%:包含指定的值

--%值:以指定值结尾

--值%:以指定值开头

--_值%:地儿是指定的字符

select * from scott.emp where ename like '%D%';

select * from scott.emp where ename like 'D%';

select * from scott.emp where ename like '%D';

select * from scott.emp where ename like '_D%';

select * from scott.emp order by sal;

select * from scott.emp order by sal desc;

--排序order by

--asc升序

--desc 降序


--约束,主要用于数据安全与完整性

--数据安全

--创建表,添加约束

Create Table tb_juan (

      Id Int Primary Key,

      Name Varchar(20) Not Null,

      age Int check(age>0 And age<110),

      sex char(2) Check(sex='男' Or sex='女'),

      phone Varchar(20) Unique,

      address Varchar(50)

);

create table tb_stu(

id int primary key,

name varchar(10) not null,

age int check(age>0and age<100),

phone varchar(11) unique,

class_id int references tb_clazz(id)

);

--约束种类

--1、检查约束:check (not null不为空)

--2、唯一约束:unique

--3、主键约束primary key

--4、外键约束foreign key references

--创建约束方式:

--1、建立表时同时建立(列级约束)

--2、添加动作(表级约束)

--外键约束,用来解决数据冗余,重复数据太多,常用在两张表的两个字段中,简单的理解起来就是,在两张表之间找到相似的,然后让他们发生关联关系。

--格式:forign key(就是外键列名) references 主表(就是参照列名的表)

--比如:我们想要使用calzz_id字段将tb_clazz表和tb_stu  表联合起来,关联起来,用外键来实现。

--clazz_id int references tb_clazz(id);

--使用注意点:

--1)子表(从表)tb_stu的外键列clazz_id的值必须在父表tb_clazz(主表)参照列值的范围内,如果是范围之外的,查询不到数据。

--2)你参照主表中的值,必须是唯一的,就是为了避免数据冗余。

--3)当主表的记录被子表参照时,主表记录不允许被删除,如果删除,会出现报表中的主键、唯一键被外键引用异常。

不解除关系,删除就会导致数据的不完整性。

--解决方式1:删掉tb_clazz中指定的数据,而不是整张表

--先把学生清空,才能删掉班级

delete from tb_stu where clazz_id=1;

delete from tb_clazz where id=1;

--解决方式2:解除两者关系即可

--修改列中的值为null,或者其他值

update tb_stu2 set clazz_id=null where id=1;(只有一条记录)

delete from tb_clazz where id=1;

--存在问题的tb_stu

create table tb_user(

id int primary key,

name varchar(20),

sex char(2) check(sex='男' or sex='女'),

age int check(age>0 and age<100),

address varchar(30) default '广州天河区',

phone varchar(30) unique,

clazz varchar(20),--班级

pro varchar(20),--学科

bzr varchar(20)--班主任

);

insert into tb_stu

values(1,'翠花','女',18,'广州黄埔','13543256742','java09','java','月圆小姐姐');

insert into tb_stu

values (2,'春花','女',20,'13800138000','java09','java','月圆小姐姐');

--创建tb_clazz

create table tb_clazz(

id int primary key,

clazz varchar(20),

pro varchar(20),

bzr varchar(20)

);

insert into tb_clazz

values (1 ,'java09','java','月圆小姐姐');

--改造

create table tb_stu2(

id int primary key,

name varchar(20),

sex char(4) check(sex='男' or sex='女'),

age int check(age>0 and age<100),

address varchar(100) default '广州黄埔',

phone varchar(20) unique,

clazz_id int references tb_clazz(id)

--clazz_id int references tb_clazz(id) on delete cascade

--clazz_id int references tb_clazz(id) on delete set null

);

--列级约束与表级约束的综合使用

--推荐写法:基本约束采用列级约束形式,外键采用表级形式。

create table tb_stu3(

id int primary key,

name varchar(20) not null,

sex char(2) check(sex='男'or sex='女'),

age int check(age>0 and age<100),

adress varchar(30) unique,

clazz_id int,--声明

--外键

foreign key(clazz_id) references tb_clazz(id)

);

--复合约束

--每个月的报表

--2018.6

--2018.7

--2017.7

--创建报告表

create table tb_report(

year char(4),

mon char(2),

--给他们约束,将需要整合到一起作为符合约束的键放到一起设置约束。

unique(year,mon)

);

insert into tb_report values('2018','7');

--维护约束的方式:使用alter table语句

--当需要修改、增加、删除约束的时候,都可以使用alter table语句。

create table tb_hello(

id int primary key,

name varchar(20) not null,

age int check(age>0 and age<100),

clazz_id int

);

create table tb_hello(

id int ,

name varchar(20),

age int ,

clazz_id int

);

--增加主键约束

alter table tb_hello add primary key(id);

--增加外键约束

alter table tb_hello add foreign key(clazz_id) references tb_clazz(id);

--增加非空

alter table tb_hello add check(name is not null);

--给age增加约束

alter table tb_hello add check(age>0 and age<100);

你可能感兴趣的:(2018-08-28)