oracle

oracle

1. python鏈接oracle

使用cx_Oracle 模塊鏈接python

# -*- 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 字符類sql

  • char 長度固定,最多容納2000個字符
  • varchar2(20) 長度可變,最多容納4000個字符。

varchar和varchar2 必須指定長度,否則會報錯數據庫

2.2 數字型oracle

  • number能夠表示整數,也能夠表示小數]
  • number(5,2)表示一位小數有5位有效數,2位小數
  • number(5)表示一個5位整數

2.3 日期類型函數

  • date 包含年月日和時分秒 oracle默認格式1-1月-1999
  • timestamp 這是oracle9i對date數據類型的擴展。能夠精確到毫秒。fetch

    2.4 圖片日誌

  • blob 二進制數據code

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到多個字符
  • _:表示任意單個字符utf-8

    問題:如何顯示首字符爲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
相關文章
相關標籤/搜索