官網下載安裝mysql
安裝方式:點擊打開鏈接
python3下不能使用Mysqldb,需要用到pymysql
>>>pip install pymysql
安裝navicat數據庫管理軟件
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 ..... //排序輸出
——————表的連接查詢(跨表查詢):常用命令
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()
取數據通過遊標取出的數據以元組列表的形式返回。
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'))