笔记(二)(持续更新)

本文详细介绍Oracle数据库的基础操作,包括用户账号管理、数据库启动关闭、监听器控制、SQL语句执行技巧,以及表的创建、查询、修改和删除等。涵盖PL/SQL Developer使用技巧、SQL语句优化、事务处理、环境变量配置和C语言数据库操作等内容。
摘要由CSDN通过智能技术生成


      前言

2020-06-01
六月第一天,开始记一个超长笔记。
只作为个人的笔记,供自己查看阅读。
这篇不算文章,权当做个笔记,不然返回去找一些东西,时间长了还是会忘记,而且有些东西确实记不住在哪里了。


一、oracle数据库

1、oracle用户和账号

本地虚拟机centos7,普通用户ssc_oracle和数据库用户oracle
数据库镜像
用户


1)本地数据库账号

账号scott/tiger
本地账户
数据库连接参数:
连接参数


2)服务器数据库账号

数据库账户
数据库连接参数:
数据库连接参数
数据库连接参数文件:
路径


2、数据库准备

1)数据库启动、关闭

启动数据库:dbstart
dbstart
关闭数据库:dbshut
dbshut

2)监听启动、关闭、状态

启动监听:lsnrctl start
lsnrctl start
关闭监听:lsnrctl stop
lsnrctl stop

数据库监听状态
没有启动
无监听
已经启动
有监听


3、采用sqlplus登录数据库

使用账号scott/tiger登录
sqlplus登录
退出
退出


4、数据库操作

1)创建表(sqlplus下)

创建表

2)查询表(客户端-PLSQL Developer)

查询表
sqlplus下查询
sqlplus查询

3)删除表(sqlplus下)

删除表

注意

未选定行
如果出现未选定行的提示,有可能是没有提交事务。执行commit。
提交事务
drop table tablename;
drop删除表将删除表中所有数据,不产生事务


5、PLSQL Developer使用技巧(个别)

1)执行单条SQL语句

如果不设置,(F8)默认执行全部语句,选中AutoSelect statement之后可以只执行光标所在行的SQL语句。
单条语句


2)格式化sql语句,避免sql语句写太长

格式化sql语句


3)自动替换

创建文本文档shortcuts.txt,编辑写入常用语句

i=insert
u=update
s=select
f=from
w=where
o=order by
d=delete
df=delete from
sf=select * from
sc=select count(*) from
sfu=select * from for update
cor=create or replace
v=view;

保存在目录PLSQL_Developer->PlugIns下
目录
应用替换文件shortcuts.txt
在这里插入图片描述
替换测试,输入s,按空格,变成selsct,输入sf,按空格,变成selsct * from。


4)直接操作表

删除一行,插入一行,修改数据。。。
上锁
解锁

5)SQL window注释

代码前加--
注释


6、oracle表操作(pl/sql developer)

1)创建表

创建表table
select * from table;

创建表t_girl
创建表

设置主键

一个表创建之后需要对这个表中的一个字段设置为主键:
table_name—表名
alter table table_name add primary key (id);

2)插入数据

向表t_girl中插入一条数据
插入

3)查询数据

查询记录数

select count(*) from table_name;

查询j记录数

条件查询、排序

select * from table_name where 字段=查找的值;
按name查询
按某一或多列查询并排序
降序在属性后面加desc,不加默认升序(asc),也可以同时按多列查询,增加属性即可。
降序排列

查询时间date

系统时间
系统时间
转换格式
格式
'yyyy-mm-dd hh24:mi:ss'都是可选字段

4)修改数据

2、3行一样
2、3行除了ID一样,修改第三行
修改第三行
修改第二行
修改第二行

5)删除数据

删除第四行数据
删除
删除成功

delete from t_girl where id ='000004';

不加where条件表示删除全部数据。

写法2:

delete from t_girl where id in ('000004');

或者

delete t_girl where id in ('000004');

一般不省略


6)delete、truncate 删除表数据区别

1)delete from tablename where ...;
用delete删除数据时,只删除数据,不释放空间,产生碎片。
2)truncate table tablename;
删除表中所有数据,并且回收存储空间,truncate不产生事务。

7)SQL语言

查询语句:select
DML(data manipulation language,数据操作语言)语句:主要由insert、update和delete三个关键字完成。
DDL(data definition language,数据定义语言)语句:主要由create、alter、drop和truncate四个关键字完成。
DCL(data control language,数据控制语言)语句:主要由grant(增加权限)和revoke(撤销权限)两个关键字完成。
事务控制语句:commit、rollback和savepoint。

7、sql语句小技巧

1)查看表结构
desc tablename
2)重复执行上一句sql语句
/
3)显示上一句sql语句
l
4)替换上一句sql语句中的值
c/要替换的内容/替换内容
5)去除字段名信息,只显示数据
例如:执行select * from t_girl;直接查询的结果会存在表的字段名信息
字段显示
去除字段名信息,只显示数据,set head off,再执行查询语句(/重复上一次sql语句)
只显示数据,不显示字段名信息


二、oracle事务

事务举例

创建两张表,一张表放账户信息,另一张记录账户信息变更的日志
更改账户信息并记录日志
这四句SQL语句是一个事务,如果其中一条SQL执行失败要使全部都执行失败,报错。

--提交事务(永久写到数据库)
commit;
--回滚事务(撤销刚才的操作)
rollback;

三、shell和环境变量

1、shell

1)创建shell脚本(我理解为一个批处理文件)
vi test.sh

2)写入命令

3)执行脚本
sh tsst.sh或者./test.sh

2、linux环境变量

显示所有环境变量
env

PATH 设置执行程序的搜索路径
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ssc_zcys/.local/bin:/home/ssc_zcys/bin

全局环境变量
vi /etc/profile

用户环境变量
vi /home/ssc_zcys/.bash_profile

以上两种都是永久有效的修改,临时有效的方法:
export 变量名=变量值

3、oracle环境变量

su oracle
只切换用户权限,不切换环境(假设原先是root用户、root环境)

su - oracle
用oracle(自己起的账户名字 )登录oracle数据库,并使用oracle用户的环境


四、C语言操作数据库


makefile

1、makefile(oracle数据库相关操作下的makefile)

/oracle/freecplus/db/oracle/makefile
oracle数据库相关操作下的makefile


-I指定头文件的搜索目录 /oracle/home/rdbms/public
-L指定库文件的搜索目录 /oracle/home/lib
-l指定链接库名 libclntsh.so

简单的情况下,头文件在当前目录,否则就需要像上面一样链接


例如:(我虚拟机centos(名:oracle)上安装的oracle数据库)
举例
oracle头文件路径
oracle头文件路径
oracle库文件路径
oracle库文件路径
动态库,后缀.so
动态库
libclntsh.so/oracle/home/lib/libclntsh.so.11.1 的一个软链接
软链接


动态库和静态库
动:编译时不载入目标代码,程序执行到相关函数才进行调用。
静:编译过程中载入静态库的代码到程序中。

同一个程序分别使用两种方式进行链接时,静态链接生成的文件所占用的内存要远远大于动态链接所成成的文件。


*创建表示例

编译程序:make createtable
make createtable
执行程序:./createtable
1、成功情况
successful
2、失败情况
1)错误代码ORA-01017,账户密码不对。
失败情况
2)表存在,已经创建
表存在


2、oracle数据类型

1)字符串

char
定长字符串,最大长度2000
char(10)包含10字节,不够十个字节补空格

varchar2
变长字符串,最大长度4000

char和varchar2比较
char比varchar2快(char的存储是对齐的,查找更快)

2)数字

number不指定长度,默认38位
number(10,3),指定长度为10,小数点后3位,例如123.456
注意:存储精度会四舍五入,例如123.4567会存储为123.457

3)日期

date
7个字节,存储 世纪、年、月、日、时、分、秒

4)二进制及大文本数据

CLOB
变长的字符串大对象
适合存储纯文本信息

BLOB
变长的二进制大对象
存储电子表格、word、图像

word不是纯文本,是二进制文本。
如果都用BLOB存储,问题也不大。

oracle数据库用于高性能数据的存放,一般不存储表格、word、图像、视频。只是不建议,如果占用空间比较小,也可以存。

结构化数据 — 表格 (有行有列)
非结构化数据 — 图片、视频


3、oracle数据库字符集

1)查看oracle server端字符集

select userenv ('language') from dual;

SIMPLIFIED CHINESE_CHINA.ZHS16GBK
查看oracle字符集

2)查看oracle client端的字符集

在unix平台下,字符集就是环境变量NLS_LANG
echo $NLS_LANG

Simplified Chinese_China.ZHS16GBK

如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集
输出变量

3)支持中文的字符集

…(待完善)


oracle存储过程 PL/SQL过程
oracle存储过程
这是oracle存储过程的基本结构,aaa是存储过程的一个名字
存储过程不提供调试的方法,所以调试是一件很麻烦的事情

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值