Oracle
一、SQL
- SQL是Structured Query Language 结构化的查询语言
- SQL就是访问和处理关系数据库的计算机标准语言。
- 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=2不会把数据带过来
create table stuinfobak as select * from stuinfo where 1=2;
-
把不重复的数据查出来放到新表中
insert into stuinfobak select distinct * from stuinfo; --清除表中的数据 truncate table stuinfobak;
5、排序
需要操作的表:oracle中scott的基本表