2018-08-30

作者: CLJnong | 来源:发表于2018-09-08 18:35 被阅读1次

    Oracle初学者

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

    image

    学习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-30

        本文链接:https://www.haomeiwen.com/subject/prdlgftx.html