python创建数据库表空间_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中指主键。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值