Oracle学习笔记(一)

Oracle学习笔记(一)

第一次在CSDN发学习笔记0.0;自己在学习Oracle中的一些笔记,有哪些地方不对的请各位大佬多多指教。

一、oracle的简单操作:
(1)插入:如果只是添加部分值的话,必须要指定对应的列名

insert into 表名 (列名1,列名2,列名3,......) values (1,2,3,......);

insert into 表名 values (1,2,3,......);

(2)删除:

//1、drop 命令 删除表中的数据和表结构!
drop table  表名;
//2、truncate 命令 删除表中的数据,表结构不会被删除,效率比较高,释放空间。
delete table 表名;
//3、delete 命令 删除整个表的数据,但是过程是一行一行地删,效率比 truncate 低,不释放空间
delete 表名

(3)修改:使用update 命令 修改表中某行的数据

//条件:例如ID等
update 表名 set 列名='新值' where 条件; 

(4)查询:

//1,查询表中所有列
select * from 表名;

//2,查询指定列名
select * from 表名 where 列名='已知值';

//查了多少个列就显示多少个列
select  列名1,列名2,列名3,.... from 表名;

//3,like 模糊查询:1%%:包含指定的值
(2%值:以指定值结尾的
(3)值%:以指定值开头的
(4)_值:第二是指定的字符
用法1:select * from 表名 where 列名 like '%值%';
用法2:select * from 表名 where 列名 like '%值’;
用法3:select * from 表名 where 列名 like '值%';
用法4:select * from 表名 where 列名 like '_值';

//4,排序
order by,默认升序: asc ,降序:desc
升序用法:select * from 表名 order by asc;
降序用法:select * from 表名 order by desc;


//5,给某列指定一个范围
--and--
用法1:select  * from 表名 where 列名  >= 某个值 and 列名  <= 某个值;
用法2:select  * from 表名 where 列名  between 某个值 and 某个值;
--or--
用法:select * from 表名 where 列名1=1 or 列名1=2 or 列名1=3;
--in--
用法:select * from 表名 where 列名 in(1,2,3);

//6,分组查询
group by 语句
用法:select 列名1 from 表名 group by 列名1;
在分组后,进行条件过滤,可使用 having 关键字,追加条件
用法:select 列名1,组函数(列名2) from 表名 group by 列名1 having 组函数(列名2)>=某个数;

-- 常见的关键字使用顺序:
-- select > from > where > group by > having > order by

//7,子查询
子查询会在主查询之前先执行一次,将得到的结果当做是主查询的条件使用。子查询也叫内部查询。
例如现有部门员工表scott.emp,需要查询比 ALLEN 工资高的人
用法实例:select * from scott.emp where sal > (select sal from scott.emp where ename = 'ALLEN'); 

--in--语句:将所有部门中工资最少的找出来
用法实例:select * from scott.emp where sal in (select min(sal) from scott.emp group by deptno);

--any-- 语句
大于最小的:select * from scott.emp where sal > any (select min(sal) from scott.emp group by deptno);
小于最大的:select * from scott.emp where sal < any (select min(sal) from scott.emp group by deptno);

--all-- 语句
大于:select * from scott.emp where sal > all (select min(sal) from scott.emp group by deptno);
小于:select * from scott.emp where sal < all (select min(sal) from scott.emp group by deptno);

二、约束
例子:

create table tb_user(
	id int primary key,
	name varchar(50)not null ,
	age int check(age >0 and age <65),
	sex char(4) check (sex='男' or sex='女'),
	phone varchar(20) unique,
	address varchar(50) default '广州';

1、主键约束
主键约束:primary key
作用:用来唯一区别确定的一行数据。不能重复的。
(1)、从功能上来看,相当于你同时用了非空和唯一两个约束。
(2)、一个表中,只允许一个主键。
(3)、主键可以是单字段的,也可以是多字段的。
(4)、当我们创建了主键之后,Oracle 默认会为主键创建对应的索引。使用索引调优,只有两个字段,找到索引值,即可找到对应的数据,搜索速度非常快。
(5)、需要使用序列的方式来实现自动增长。

1、外键约束
外键约束:foreign key
一般用于多张表之间的关联
格式:forign key(外键名) references 主表(参照列名)
比如,我们想要使用 clazz_id 字段将 tb_clazz 表和 tb_stu 表联合起来就可以这么写clazz_id int references tb_clazz(id)
外键是构建于一张表的两个字段或者两张表的两个字段之间的关系
主要是用来解决数据冗余(重复的数据太多)问题。
简单理解,就是在两张表之间找到一个参照物,然后让它们发生关系。

使用注意点:
(1)、子表 tb_stu(从表)外键列 clazz_id 的值必须在父表 tb_clazz(主表)参照列值的范围内或者为空(也可以考虑加非空约束),千万不能是其他的。
(2)、外键参照的只能是主表的主键或者唯一键,保证子表记录可以准确定位到被参照的记录。
(3)、当主表的记录被子表参照时,主表记录不允许被删除。
(4)、建表时可以考虑增加以下设置:(强制性)
① on delete cascade:当父表中的行被删除的时候,同时删除在子表中依靠的行。
② on delete set null:将依靠的外键值转换为空值。

2、唯一约束

唯一约束:unique

3、检查约束

检查约束:check 特殊的检查约束:not null 不为空

4、默认值

默认值:default

5、数据安全
数据安全数据的安全其实指的是存储的内容(数值)应该是正确的状态。
如果发现数据已经不完整了,或者不正确了,那么就是丧失数据的完整性。

三、函数

1、组函数
--count()统计行数
用法:select count(*) from 表名;

--sum()求和
用法:select sum(列名) from 表名;

--avg()平均值
用法:select avg(列名) from 表名;

--max()最大值
用法:select max(列名) from 表名;

--min()最小值
用法:select min(列名) from 表名;
--查询的时候,注意结果的行数,如果不对称的话,则会报错
--例如:select ename, sum(sal) from scott.emp;

//2、常用函数
--dual 是 orcle 提供的一个虚表
SELECT LENGTH('hello') FROM dual;

--lower:把大写转小写,主要是将表中的数据进行转换小写,再去做比较。
用法:select lower('helloworld') from dual;

--upper:把小写转大写。
用法:select upper('HELLOWORLD') from dual;

--INITCAP:使串中的所有单词的首字母变为大写
用法:select INITCAP('sql couser') from dual;

--CONCAT:连接两个字符串;
用法:select CONCAT('hello','world') from dual;

--取子字符串,从 start 开始,取 count 个
用法:select SUBSTR('hello',132) from dual;

--取子字符串,4开始取到末尾
用法:select SUBSTR('hello',4) from dual;

--LENGTH:返回字符串的长度;
用法:select LENGTH('hello world',) from dual;

--INSTR(string,char):在一个字符串中搜索指定的字符,返回发现指定的字符的位置,1开始;
用法:select INSTR('helloworld','1') from dual;

--TRIM:删除首尾的空字符串
select trim('  HelloWorld  ') from dual;
select length('  HelloWorld  ') from dual;
select length(trim('  HelloWorld  ')) from dual;

--数值函数 四舍五入	(逗号后面的2是保留两位小数)
用法:select Round(45.926,2) from dual;

--截断
用法:select TRUNC(45.926,2) from dual;

--取模
用法:select mod(1600,300) from dual;

--查询系统时间
用法:select sysdate from dual;

--日期函数 默认是yyyy/mm/dd hh:mi:ss
用法:
create table tb_test(
       currdate date
);
insert into tb_test(currdate) values(sysdate); --插入当前日期
--三个转换函数 to_date to_char to_number

--to_date(日期字符串, 格式)

用法:select to_date('2012-07-30 12:12:12','yyyy/mm/dd hh:mi:ss') from dual;

--to_char(日期,格式) 将日期转成字符
用法:select to_char(sysdate,'yyyy') from dual;
用法:select to_char(sysdate,'mm') from dual;
用法:select to_char(sysdate,'yyyy-mm-dd') from dual;

--将数字转换成字符
用法:select to_char(123) from dual;

--to_number(字符串) 将一个字符串的数字转成number类型
select to_number('123') from dual;

--不能将非数字的字符串转成number类型
select to_number('abc') from dual;

3、有参函数
-- 第一种方式
select yearsal(1000) from dual;
-- 第二种方式
select empno, ename, sal, yearsal(sal) 年薪 from scott.emp;
-- 第三种方式
declare
  vsal number;
begin
  vsal := yearsal(2000);
  dbms_output.put_line(vsal);
end;


-- nvl(参数1,参数2) 函数
select empno, ename, sal, comm, (sal+myNvl(comm, 0))*12 年薪
from scott.emp;

四、包
– 主要是一些相关的过程、函数、变量、常量和游标等等 PL/SQL 程序设计元素的组合。因为包,类似于面向对象的特点,把上述元素进行封装使用。

– 当一些 Java、C++ 面向对象类型的开发者需要使用 PL/SQL 技术的时候,完全可以使用面向对象的思维来操作,某种程度提高了工作效率。

-- 调用包中的函数
select helloPackage.yearsal(1000) from  dual;
-- 调用包中的过程
begin
 helloPackage.sayHello();
end;

五、触发器
– 触发器

– 每天天气预报:8.00 发送信息

– 每天 24.00 更新某些数据

– 在某种情况下,通过某一个事件触发某个东西去执行。

– 触发器在数据库中是独立存在的,它跟存储过程过程有一点点相似。

– 过程主要是由其他的程序来启动运行或者是直接启动运行。

– 但触发器是由一个事件来启动的。当事件发生时,才会驱动触发器执行。

– 在 Oracle 中像 insert、update、delete 等操作其实就是一个事件。

-- 删除触发
select * from tb_stuu where id = 1;
-- 帮我删除数据的时候,在关联表中也删掉
delete from tb_stuu where id = 1;

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

在这里插入代码片
在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值