美文网首页
Python第14课:oracle数据库的使用

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

作者: 启蒙时代 | 来源:发表于2019-01-26 00:05 被阅读0次

    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中指主键。

    相关文章

      网友评论

          本文标题:Python第14课:oracle数据库的使用

          本文链接:https://www.haomeiwen.com/subject/enlujqtx.html