oracle_day2

Oracle

一、SQL

  1. SQL是Structured Query Language 结构化的查询语言
  2. SQL就是访问和处理关系数据库的计算机标准语言。
  3. SQL是结构化查询语言的缩写,用来访问和操作数据库系统。

主流数据库基本都遵循一样的sql语法,所以回事呀一种数据库其他数据库也可以使用。

SQL语言关键字不区分大小写,但是针对于不同的数据库和操作平台,表名和列名可能区分。

二、SQL的分类

SQL支持以下类别的命令:

  • 数据定义语言(DDL)
  • 数据操纵语言(DML)
  • 事务控制语言(TCL)
  • 数据控制语言(DCL)

1、数据定义语言

这三个单词开头的都是数据定义语言。

create:create table、create tablespace、create user

alter:alter user scott identified by 123、alter user scott account unlock

drop:drop tablespace、drop user、drop table

2、数据库操作语言

insert插入数据

select查询数据

delete删除数据

update更新数据

3、事务控制语言

commit、savepoint、rollback

4、数据控制语言

grant、revoke

三、增删改查

create table stuinfo(
       stuno char(6) not null,--学号
       stuname varchar2(20) not null,--姓名
       stuage number(3,0),--年龄
       begindate date     
);

1、插入数据

insert into stuinfo(stuno,stuname,stuage,begindate)values ('111000','tom',21,to_date(('2021-07-23'),('yyyy-mm-dd')));

--向表中所有的字段插入 数据,可以简写如下
insert into stuinfo                                values
('111001','tony',21,to_date(('2021-07-23'),('yyyy-mm-dd')));

MySql中,如果字段的数据类型是日期类型,可以插入符合要求的字符串,是可以中转换的。

Oracle中不可以,需要进行类型转换。

--ERROR如果直接插入是会报错 ORA-01861:文字与格式字符串不匹配

insert into stuinfo(stuno,stuname,stuage,begindate)values 
('111000','tom',21,'2021-07-23');

注意:

事务提交之前的状态称为原始状态

数据的插入,是需要提交的,在数据库中数据库只有原始状态和结束状态,没有中间态,如果不提交在其他窗口是查询不到的,建议以后写SQL老老实实只在一个窗口写。

2、更新数据

--更新数据,如果不添加条件会把所有的数据的stuage都更新为26
update stuinfo(表名)
set stuage=26
where stuno = '111000';--条件

​ 更新多列,中间用逗号隔开

update stuinfo set stuage=22,begindate = to_date(('2012-09-22'),('yyyy-mm-dd'))
where stuno = '111000';

3、删除数据

--删除数据,不加条件会删除所有数据
delete from stuinfo
where stuno='111000';

4、查询数据

--查询所有数据
select * from 表名
--查询一条记录
select * from stuinfo where stuno='111000';
--查询指定的列(查询指定的属性)
select stuname,stuage from stuinfo where stuno='111000';
--起别名,最好不要使用中文
select stuname as 名字,stuage as 年龄 from stuinfo where stuno='111000';
--去重,删除重复的行
select distinct * from stuinfo;

注意:

​ 在进行数据查询的时候使用 * 是不好的,如果使用select * from 表名是进行全表扫描,此时会放弃索引,如果 放弃索引那么和普通io操作速度一致。

面试题:如果一张表有上万条数据,有若干条重复的数据,如何把重复的数据删除掉?

  1. 创建一个一样的表
    1=1会把表中的数据带过来(只要1!=1就可以),1=2不会把数据带过来
create table stuinfobak as select * from stuinfo where 1=2;
  1. 把不重复的数据查出来放到新表中

    insert into stuinfobak  select distinct * from stuinfo;
    --清除表中的数据 truncate table stuinfobak;
    

5、排序

需要操作的表:oracle中scott的基本表

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值