当前位置:首页 > 数据库 > Oracle

oracle

oracle

1. python连接oracle

使用cx_Oracle 模块连接

        # -*- coding: utf-8 -*-
import cx_Oracle      #引用模块cx_Oracle
conn= cx_Oracle.connect(‘root‘, ‘root‘, ‘localhost:1521/oracle‘)#连接数据库
c=conn.cursor()     #获取cursor
sql=‘select * from  student‘
x=c.execute(sql)                   #使用cursor进行各种操作
y=x.fetchall()
print y
c.close()                     #关闭cursor
conn.commit()         #提交
conn.close()

    

2.数据类型

2.1 字符类

  • char 长度固定,最多容纳2000个字符
  • varchar2(20) 长度可变,最多容纳4000个字符。

varchar和varchar2 必须指定长度,不然会报错

2.2 数字型

  • number可以表示整数,也可以表示小数]
  • number(5,2)表示一位小数有5位有效数,2位小数
  • number(5)表示一个5位整数

2.3 日期类型

  • date 包含年月日和时分秒 oracle默认格式1-1月-1999
  • timestamp 这是oracle9i对date数据类型的扩展。可以精确到毫秒。

    2.4 图片

  • blob 二进制数据

3. 创建表

        create table employee(
sex VARCHAR(20),
name VARCHAR(30),
  id number(20),
  age NUMBER(40)
);
    

3.1 插入数据

3.1.1 所有字段都插入

        insert into "employee" VALUES(‘male‘,‘Angle‘,34,65);
    

3.1.2 -插入部分字段

        insert into "TEST" (sex,name,age) VALUES(‘female‘,‘Adfds‘,42);
    

3.1.3 查询表里某个值为null的记录

        select * from test where id is null
    

3.1.4 查xun 1982以后入职的员工信息

to_data(value,pattern),value是时间参数,pattern是时间的格式 函数

        select ename,hiredate from emp where hiredate>to_date(‘1982/1/1‘,‘yyyy/mm/dd‘)
    

3.1.4 插入空值

        insert into "TEST"(SEX, name, id, age) values (‘a004‘, ‘ewf‘, null, null);

    

3.1.5 修改一个字段

        UPDATE "TEST" set name=‘fgfd‘ where id=34
    

3.1.6 修改多个字段

        UPDATE "TEST" set name=‘342‘,sex=‘fdgsergytrsh‘ where id=34
    

3.2 -修改表

3.2.1添加一个字段

        alter table test add (classid number(2));
    

3.2.2 修改一个字段的长度

        alter table test modify (classid varchar2(12));
    

3.3 删除表的结构和数据;

        drop table student;
    

3.4 删除所有记录,表结构还在,写日志,可以恢复的,速度慢

        delete from test
    

3.5 LIKE%

  • 如何使用like操作符
  • %:表示0到多个字符
  • _:表示任意单个字符

    问题:如何显示首字符为S的员工姓名和工资?

        select ename,sal from emp where ename like ‘S%‘;
    

如何显示第三个字符为O的所有员工的姓名和工资?

        select ename,sal from emp where ename like ‘__O%‘;
    

3.6 where条件中使用in 问题

        select * from emp where empno in (7844, 7839, 123, 456);
    

3.7 sql语句有引号的处理

sql语句如果有引号, 则sql字符串用双引号,内部的引号用单的就可以

        sql="select * from emp where (sal > 500 or job = ‘MANAGER‘) and ename like ‘J%‘"
    

3.8 数据分组

  • 1 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中)
  • 2 如果在select语句中同时包含有group by, having, order by 那么它们的顺序是group by, having, order by
  • 3 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在group by子句中,否则就会出错。

3.9 多表查询

        select  e.ename,e.sal,d.dname from emp e,dept d where e.DEPTNO=d.DEPTNO
    

求和

        select  sum(sal) from EMP 
    

或者

        select  sum(r.sal) from EMP r
    

原文:https://www.cnblogs.com/monkey-moon/p/9526059.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐