Python第14课:oracle数据库的使用

Python第14课:oracle数据库的使用

时间 2019-01-23~2019-1-25

主讲 陈振华

地点 四楼电教室


数据库实质上是一个信息的列表,简单的信息列表可以用文本记录,错综复杂列表信息需要数据库的进行管理。数据库具有几个特点:一是行数多,二是允许多用户同时使用,三是安全。

一、oracle基本常用的数据类型

varchar(长度) 字符串

char(长度) 字符

number(x,y) x表示总位数 y表示保留小数点后几位数。例如:number(5,3)最大的数是99.999

decimal() 数字

long int integer 整数

date 日期

timestamp 日期

clob blob 特殊文本 二进制

在oracle中,number既可存整数,也可以存浮点数。而int只能存整数。

二、命令基本操作:

1.查看当前用户的权限:

select * from session_privs;

2.给用户增加授权(需要切换到system用户下操作):

grant create sequence to lpf8;

3.建表:

create  table  student(

id  number  primary key,

name  varchar2(10)  not  null

);

注意:建表的时候,表名和字段名,不加引号的话,默认自动转大写!

4.查当前用户下的表:

select * from tab;

5.设置主键

alter table test add constraint id primary key(id); 

在表内已有记录的情况下:

如果id有重复,设置失败。如果id无重复,设置成功。

查询一个表的主键:

select constraint_name from user_constraints where table_name='ABC' and constraint_type='P';

禁用主键:alter table jack disable primary key;

启用主键:alter table jack enable primary key;

禁用后,主键仍然存在,可以被查到。但是,如果在禁用后,向记录中添加了针对主键的重复内容,则在启用主键时,会报错,即无法启用。

6.实现id自增长

(1)创建序列

create sequence student_id_seq;

(2)用.nextval方法插入字段值

insert into student values (student_id_seq.nextval,'张三');

注意:只能用单引号!

7.删除表

drop table abc;

oracle删除表后,并未真正删除,而是生成BIN开头的临时表,放在回收站中。

清空回收站的命令:purge recyclebin;

彻底删除表,不进入回收站:

drop table student purge;

8.删除用户及级联关系:

drop user ABC cascade;

9.删除表空间及数据文件

drop tablespace 表空间名称 including contents and datafiles cascade constraint;

10.对表的操作

(1)增加字段

alter table abc add area varchar2(10);

(2)删除字段

alter table abc drop column name;

(3)修改字段名

alter table abc rename column name to name2;

修改字段类型:

alter table Student modify (id varchar2(64));

(4)修改表名

alter table abc rename to abc2;

(5)清空表(保留结构)

turncate table abc;

(6)统计

select count(id) from abc;

(7)添加和查询表注释

comment on table abc is '某个表的注释';

select * from user_tab_comments;

(8)添加和查询字段注释

comment  on  column  表名.字段名  is  '注释内容';

select * from user_col_comments where table_name=upper('abc');

(9)查询前10条记录

select * from ABC where rownum<=10

11.关于commit提交

SQL语言分为五大类:

1,DDL(数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用Commit提交。

2,DQL(数据查询语言) - Select 查询语句不存在提交问题。

3,DML(数据操纵语言) - Insert、Update、Delete 这些语句需要Commit才能提交。

当执行dml命令如果没有提交,将不会被其他回话看到。除非在dml命令之后执行了ddl命令或者dcl命令,或者用户退出回话终止实例,数据库会自动提交。

发出commit,使未能提交的dml命令提交。

4,DTL(事务控制语言) - Commit、Rollback 事务提交与回滚语句。

5,DCL(数据控制语言) - Grant、Revoke 授予权限与回收权限语句

三、使用Navicat for Oracle工具

1:首先下载好Navicat Premium(已放在ftp10.141.4.12上)

选中其中的navicat.exe,双击启动。

注意:使用Navicat Premium连接,需要Navicat Premium的oci.dll文件的版本与oracle的版本一致,现在安装的是oracle 11.2的版本,而Navicat Premium是10.1的版本,需要网上下载instantclient11.2的版本,已经下载,放在ftp10.141.4.12上 ,更换oci.dll的方法为进入Navicat

Premium 点击工具——>选项——>OCI

然后将OCI library(oci.dll):中文件路径改为我上传的instantclient11.2中oci.dll的路径。

更换完毕后可以进行连接

连接名随便取,连接类型basic,主机localhost,端口1521,服务名、用户system,密码为安装数据库时设置的口令。

远程连接其他服务器的oracle同上,如连接情报小平台数据库等。

jdbc连接数据库的时候,需要使用数据库的sid_name,而不是数据库的services_name.

而使用plsql连接数据库的时候,只需要数据库的services_name即可,所以修改连接字符串中的services_name 为sid_name.

查询sid_name的方法:

select  INSTANCE_NAME  from  v$instance;

返回:orcl


此时,连接提示上述错误。需要修改一个文件:

目录 E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN

文件 listener.ora

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ONLY:E:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")

)(SID_DESC =

    (GLOBAL_DBNAME = ORCL)

    (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)

    (SID_NAME = ORCL)

    )

)

以上斜体加黑部门,为添加内容。复述如下,供复制:

(SID_DESC =

    (GLOBAL_DBNAME = ORCL)

    (ORACLE_HOME = E:\app\Administrator\product\11.2.0\dbhome_1)

    (SID_NAME = ORCL)

    )

添加后保存。重启电脑,连接成功!

如需远程访问,要将文件中的localhost修改为本机IP地址。

如需修改默认的1521端口,在该文件的对应位置修改即可。

四、python连接oracle数据库

1.安装包cx_oracle

注:该包可通过官方下载的whl格式包安装。

pycharm所在的客户机,必须安装和服务器相同版本的oracle,否则无法连接。

2.设置

修改listener.ora文件

原:  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 8889))

改为:  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.11.6)(PORT = 8889))

3.连接:

import cx_Oracle;

conn = cx_Oracle.connect('lpf8/******@218.95.95.26:****/orcl')

# 使用cursor()方法获取操作游标

cur = conn.cursor()

sql="select *from student"

cur.execute(sql)

data=cur.fetchall()

for i in data:

print(i)

cur.close()

conn.close()

单词学习:

constraints 约束、限制。oracle中指主键。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容