码迷,mamicode.com
首页 > 数据库 > 详细

oracle

时间:2018-08-23 21:01:23      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:group   字符串   连接数   order   connect   null   lte   速度   .com   

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

oracle

标签:group   字符串   连接数   order   connect   null   lte   速度   .com   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!