oracle数据库-01

本文介绍了数据库的基本操作,包括CREATE命令用于创建表、索引和视图,以及INSERT、DELETE、UPDATE和SELECT用于数据的增删查改。还讨论了ALTERTABLE用于字段的管理,WHERE和HAVING的过滤条件,以及IN和EXISTS的查询方式。特别提到了CASEWHEN语句的使用,它在条件判断和分类中的灵活性。
摘要由CSDN通过智能技术生成

小白学习数据库并编写博客想更加系统了解数据库。

首先是基本命令的关系图

一、建立

基本表、索引、视图的建立都是create

create table Persons(
Id_P int,
LastName varchar(255),
City varchar(255),
);

这里简单说明一下索引和视图,索引是作用于某一字段的,他以二叉树的形式将该字段的数据存储起来提高查询速度,视图则是用来存储某一种查询情况更方便查看。

二、增删查改

这里只说表中数据的增删查改.

insert into Persons values(123,'zdn','广州');   
insert into Persons(Id_P) values (234);       --仅增加Id_P的内容

delete from Persons;                          --清空,不释放空间
delete from Persons where City='广州';         
truncate table Persons;                       --清空,释放空间
drop table Persons;                           --整表删除

select * from Persons;
select Id_P from Persons;
select distinct Id_P from Persons;             -- 删去重复
select Id_P from Persons where Id_P <> 123;    -- !=  还有between like

update person set City='长沙' where LastName='z';

truncate就是用于清空表,drop不应该出现在这,因为他把整个表给删除了,但是常见就写上了,select是个重点,数据库的意义就是用来根据条件查询数据的,update用于修改,有一点不太好的地方是,只能根据条件固定改成一个值

三、表的增删改

区别上面,对字段操作都是alter

alter table Persons ADD(		        --增加字段
	sex char(30));

alter table Persons drop column sex;	--删除某字段
drop table Persons;

alter table Persons modify(		        --修改字段属性
	Id_P int(10));
alter table Persons rename column Id_P to ID; --重命名某字段
alter table Persons rename to Person;   --重命名表

这里主要是通过adddropmodifyrename来区别操作。

四、where、having

都是用于用于获取表的时候过滤条件,having能对聚合函数操作

select count(distinct City)from(
	select City from Persons
	group by City
	having count(Id_P) > 5); 
--having对于聚合函数的操作:count() sum() avg()

select count(City) from Persons
where LastName = 'Wang';

这里第一段语句的意思是,对于select city from Persons……这个表里,获取对每一个城市计数的表,而()里面是获取人数个数大于5的城市列表。

五、in、exists

in对于某字段多值查询,exists对于获取的内表进行查询

select * from Persons
where City in ('广州','北京');

select * from Persons	      --对于外查询表的每一行,当exists条件成立的时候执行
where exists(
	select * from Persons 
	where City = '广州' 
	or City = '北京') temp;   --and or,与或关系

六、case when

这里想要详细谈谈这个强大语句

1、基本句式
case  sex                    --规定某一字段
    when '1' then '男'
    when '2' then '女'
    else '其他'
end


case                         --更灵活
    when sex='1' then '男'
    when sex='2' then '女'
    else '其他'
end
2、顺序

就是if-elif-elseif-else if-else的顺序

3、不同用法

主要说select时的case when

(1)跟在select之后

--用于聚合函数的条件判断
select count(
    case when City='广州' then '广州人口' end) 广州人口,count(
    case when City='北京' then '北京人口' end) 北京人口
from Persons;


--用于条件分类
select Id_P,(
    case
        when score >= 90 then 'A'
        when score >= 80 then 'B'
        when score >= 70 then 'C'
        when score >= 60 then 'D'
        else 'E'
    end) rank
from Persons;


--用于判断两表是否匹配
select Id_P,(
    case
        when Id_P in (
            select Id from SC
        )then 'match'
        else 'not match'
    end)
from Persons;


--case嵌套,嵌套条件获取
select Id_P,(
    case
        when count(*)=1 then class_id
        else (
            case when class_type = 'major'
                then class_id
            end)
    end)
from Persons,SC
group by Id_P;

(2)跟在where之后

select * from Persons
where (
    case
        when sex='女' and City='广州' then 1
        else 2
    end) = 1;

看上去好像多此一举,但遇到更复杂的情况会很有用

(3)跟在group by之后

select (
    case
        when sex = '男' then 1
        when sex = '女' then 2
        else 3
    end) as c_sex,count(*)
from Persons
group by c_sex;

这里group by后面没有直接跟case when,因为我懒,所以在select后面的case那直接用了代称


01 结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值