python學習筆記——mysql

官網下載安裝mysql

點擊打開鏈接

安裝方式:點擊打開鏈接

python3下不能使用Mysqldb,需要用到pymysql

>>>pip install pymysql

安裝navicat數據庫管理軟件

SQL 的分類:
1 / 數據查詢語言(DQL)。 代表關鍵字:select
2 / 數據操縱語言(DML)。 代表關鍵字:insert,delete,update
3 / 數據定義語言(DDL)。 代表關鍵字:create,drop,alter
4 / 事務控制語言(TCL)。 代表關鍵字:commit,rollback
5 / 數據控制語言(DCL)。 代表關鍵字:grant.revoke

CMDmysql數據庫常用命令:

1 / 登陸數據庫

> mysql -uroot -p

2 / 啓動數據庫(管理員權限下)

> net start mysql57  

3 / 關閉數據庫(管理員權限下)

> net stop mysql57 

4 / 創建數據庫

mysql > create database XXXX;

5 / 選擇數據庫

mysql > use XXXX;

6 / 導入數據庫

mysql > source  D:\XXXX.sql  

7 / 刪除數據庫

mysql > drop database XXXX;

8 / 終止當前語句

\c

9 / 退出數據庫

ctrl +c

—————查—————

————對數據庫的查看————:

1 / 查看數據庫版本:

---1 :在外部查看:

> mysql -V

---2:在內部查看:

mysql > select version();

2 / 查看數據庫

mysql > show databases;

3 / 查看當前數據庫的表格

mysql > show tables;

4 / 查看錶結構

mysql > desc YYY;    / YYY是表名

5 / 查表

mysql > select * from YYYY;   /YYYY表名

6 / 查看當前使用的數據庫

mysql > select database();

7 / 查看其他庫中的表

mysql > show tables from XXXX;    /XXXX是別的數據庫名

8 / 查看錶的創建語句

mysql > show create table YYY;   /YYY表名

————對錶的查詢————:

————簡單查詢:

1 / 查詢一個字段:

mysql > select  字段名  from  表名;

2 / 查詢多個字段:

mysql > select  字段名,字段名,字段名  from  表名;

3 / 查詢全部字段:

mysql > select * from 表明;

4 / 查詢字段重命名:

mysql > select  字段名 as  新顯示名字  from  表名;

————條件查詢:where


and 的優先級高於 or 


1 /範例:= 等於

mysql> select
    -> empno,ename,sal  //查詢的字段
    -> from
    -> emp     //表名
    -> where
    -> sal=5000;    //條件語句

2 / 範例:between...and...

mysql> select empno,ename,sal from emp where sal>=3000 and sal<=5000;

mysql> select empno,ename,sal from emp where sal between 3000 and 5000;   //等效於上一個例子

mysql> select ename from emp where ename between 'A' and 'K';

3 / 範例:查空

mysql> select ename,comm from emp where comm is null;

4 / 範例:in 在某個範圍中搜索

mysql> select
    -> ename,job
    -> from
    -> emp
    -> where
    -> job in ('MANAGER','SALESMAN');

等效於:

mysql> select
    -> ename,job
    -> from
    -> emp
    -> where
    -> job='MANAGER' or job='SALESMAN';

5 / like 模糊查詢

_ 下劃線代表一個任意字符,% 百分號代表任意個字符

————單一字段排序:order by  (通過哪個或者哪些字段進行排序)

1 / 範例: (默認升序)asc

mysql> select
    -> ename,sal
    -> from
    -> emp
    -> order by
    -> sal asc;

2 / 範例:降序排序   desc

mysql> select
    -> ename,sal
    -> from
    -> emp
    -> order by
    -> sal desc;

3 / 範例:按多個字段進行排序

mysql> select ename,sal from emp order by saldesc,ename asc;

————數據處理函數 / 單行處理函數



1 / 範例:Lower 轉小寫 (只是查詢結果顯示,而不改變底層數據庫)

mysql> select lower(ename) from emp;

2 / 範例:upper 轉大寫 

mysql> select  upper(ename) from emp;

3 / 範例:substr 取子串

mysql> select ename from emp where substr(ename,2,1)='A';

4 / 範例:length 獲取字符串長度

mysql> select length(ename) from emp;

5 / 範例:trim 去前後空格

mysql> select ename from emp where ename = trim('   SMITH   ');

6 / 範例:round 四捨五入 (默認保留整數,可在後面增加保留小數位參數)

mysql> select round(123.456);

7 / 範例:rand 生成隨機數

mysql> select rand();

8 / 範例:生成1~100範圍隨機數

mysql> select round(rand()*100);

————日期處理

MYSQL的日期格式:

%Y 年    %m 月    %d 日     %H 時     %i 分      %s 秒

1 / 字符串轉換成日期格式:

str_to_date('日期字符串','日期格式');

範例:mysql> select ename,hiredate from emp where hiredate = str_to_date('12-17-1980','%m-%d-%Y');

2 / 日期格式轉換成字符串格式

date_format('日期格式’,‘日期字符串’);

————分組函數 / 聚合函數 / 多行處理函數

(會自動忽略null值)

(分組函數不能直接使用在where關鍵字後面 = where關鍵字後面不能直接使用分組函數!因爲先分組才能用分組函數!)



1 / 範例:統計

mysql> select count(ename) from emp;   //統計不爲空的總和

mysql> select count(*) from emp where comm is null;    // 統計滿足後面條件的總和

2 / 範例:求和

mysql> select sum(sal) from emp;

3 / 範例 :求平均值

mysql> select avg(sal) from emp;

4 / 範例:求最大值

mysql> select max(sal) from emp;

5 / 範例:求最小值

mysql> select min(sal) from emp;

————去重 distinct (查詢去重,不會改變底層數據庫)

mysql> select distinct job from emp;    

mysql> select distinct deptno,job from emp;   //distinct只能出現在所有字段的前面

mysql> select count(distinct job) from emp;   //查詢統計有多少個崗位

————分組查詢

group by  子句  (通過哪個或者哪些字段進行分組)

1 / 範例:找出每個工作崗位的最高薪水(先按照工作崗位分組,使用max函數求最大值)

mysql> select max(sal) from emp group by job;   //先分組,然後求最大值

mysql> select job,max(sal) from emp group by job;    //注意是先分組,後查詢,所以job可以放在select後面

2 / 範例:找出每個部門的平均薪水

mysql> select deptno,avg(sal) as avgsal from emp group by deptno;

3 / 範例:計算不同部門中 不同工作崗位的最高薪水:(兩個限定條件

mysql> select deotno,job,max(sal) from emp group by deptno,job;   //兩個字段聯合起來看成一個字段

4 / 範例:找出每個工作崗位的最高薪水,除了MANAGER之外  (排除某一個條件

mysql> select job,max(sal) from emp where job<>'MANAGER' group by job;    //先用where排除掉不要的條件

having  子句  (分組之後過濾數據)

having 和 where (分組之後過濾數據)    where是分組之前過濾數據

1 / 範例:找出每個工作崗位的平均薪水,要求顯示平均薪水大於1500的

mysql> select job,avg(sal) from emp group by job having avg(sal)>1500;    //having在分組之後調用分組函數

——————DQL語句的總結:

1 / 語句關鍵字順序!!不能變!!

select ....    

from ....            

where....         

group by ....      

having....          

order by .....     

2 / 執行順序:

from ....             //從某張表中檢索數據

where....           //經過某條件進行過濾

group by ....      //然後分組

having....          //分組之後不滿意再過濾

select ....          //查詢出來

order by .....     //排序輸出

——————表的連接查詢(跨表查詢):




常用命令

1 / 查看數據庫
show databases;
2 / 創建數據庫
create database name charset utf8 ;   #name :數據庫名 。charset utf8 加入字符集編碼,用以操作中文
3 / 進入數據庫
use name; #name :數據庫名
4 / 查看錶
show tables;
5 / 創建表(例)
create table name       # name:表名
(
id int not null auto_inctement primary key,
name char(32) not null,
sex char(8) not null,
age tinyint unsigned not null,
tel char(13) null default "-"
);
6 / 查看錶
desc name  #name 表名
7 / 查看如何創建的表
show create table name #name:表名
8 / 插入數據操作
insert  into name(name,sex,age,tel) values('值1',‘值2’,‘值3’,‘值4');
9 / 查看錶中所有數據
select * from name;
10 / 條件查詢
select * from name where age >20;  #age>20 是查詢條件
11 / 多條件查詢
select * from students where age >15 and sex = 'men';
12 / 模糊查詢
select * from name where age like "1%"; "1%"表示查詢1開頭的年齡
13 / 數據修改
updata name set age =26 where name='dralon'; #修改哪個人的某個值
14 / 批量修改
updata name set age =26; #不指定修改哪個人的
15 / 刪除
delete from name where name ='long'; #修改某個名字的行
16 / 插入新的字段
alter table name add column nal char(64);

pythonmysqlapi常用操作
python中對數據庫的操作用一下格式,加上mysql的增刪改查命令
import pymysql

conn = pymysql.connect(host='127.0.0.1',user='root',passwd='password',db='ddtest') #鏈接數據庫
cur = conn.cursor() #遊標
reCount = cur.execute('insert into students(name,sex,age,tel) values(%s,%s,%s,%s)',('haha','man',26,1353456456))#插入數據操作。使用數據庫操作命令
conn.commit()#執行寫入操作
cur.close()
conn.close()
取數據
遊標.fetchmany(參數) 參數爲取多少條
遊標.fetchone() 取一條
遊標. fetchall() 全部取出
通過遊標取出的數據以元組列表的形式返回。
import pymysql

conn = pymysql.connect(host='127.0.0.1',user='root',passwd='password',db='ddtest') #鏈接數據庫
cur = conn.cursor() #遊標
reCount = cur.execute('select * from students')#查找數據操作。使用數據庫操作命令
conn.commit()#執行寫入操作
#去除數據
res = cur.fetchone()
res2 = cur.fetchmany(2)
res3 = cur.fetchall() ##前面語句取出後,表中數據會被減少
print(res)
print(res2)
print(res3)
cur.close()
conn.close()
結果:
(1, 'dralon', 'male', 38, '12345678922')
((2, 'zhuzhu', 'women', 28, '12345678922'), (3, 'long', 'men', 35, '12345678922'))
((4, 'haha', 'man', 26, '1353456456'), (5, 'haha', 'man', 26, '1353456456'))

回滾:

-----------------------------------------------------------------------
表(table):

:字段(column)
字段的四個屬性:字段名字,字段數據類型,字段長度,字段約束(非空,唯一性)
:數據 (記錄)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章