Python之操作MySQL資料庫

來源:互聯網
上載者:User

標籤:log   路徑   rem   val   table   統計   其他   delete   並且   

一.MySQL資料庫啟動與登陸

  安裝這裡就不細說了。安裝完成之後記得將安裝路徑配置進環境變數。然後進入到命令列下啟動資料庫。註:MySQL資料庫安裝完成後預設的是開啟狀態。

  • 開啟MySQL資料庫,註:此處輸入的服務名是安裝時候設定的服務名稱,MySQL5.7的版本預設的服務名稱是MySQL57

  •  關閉MySQL資料庫服務

  • 登陸MySQL資料庫

 

二.建表
  • 顯示資料庫
show databases;
  •  建立資料庫
create database lianxi DEFAULT character set utf8
  •  使用資料庫
use lianxi;
  •  多表之一對多
create table user_info(id int not null auto_increment primary key,name char(20),age int,gender char(1),deparment_id int,constraint 約束名稱 foregin key(deparment_id) references dep_info(id))engine = innodb default charset=utf8;create table dep_info(id int not null auto_increment primary key,title char(32),)engine=innode default charset=utf8;
  •  多表之多對多(關係表)
create table boy(id int not null auto_increment primary key,name char(32))engine = innodb default charset=utf8;create table girl(id int not null auto_increment primary key,name char(32))engine = innodb default charset=utf8;create table b2g(id int not null auto_increment primary key,b_id int,g_id int,constraint 約束名稱1 foregin key(b_id) references boy(id),constraint 約束名稱2 foregin key(g_id) references girl(id))engine = innodb default charset = utf8;

 應用情境:
1、根據具體業務
2、HTML的情境
建立的時候只需要輸入資料的情況下:單表
建立的時候必須要我們選擇一個其他資料的情境下:一對多
建立的時候針對某些欄位可以進行多選的情況下:多對多

  • 刪除資料庫
drop database db_name;
三.增刪改查
  • 插入:
insert into table_name(field) values(value),(value2) ;--> 兩個(value)表示插如多行資料insert into table_name(cname) select field from table_name; --> 把select查到的結果,當作資料來賦值給value
  •  清空表
delete from table_name; --> 自增列會繼續之前的IDtruncate table table_name; --> 物理刪除,速度快,重新計算ID
  •  刪除某一條
delete from table_name where filed = values and/or ...  --> 只刪除合格資料delete from table_name where filed in (1,2,3,4);  delete from table_name where id between 5 and 10; 
  •  修改
update table_name set field = ‘value‘; --> 更新所有資料的field欄位的值,加 where 只修改匹配到的行update table_name set id = 8 , name = ‘daxin‘ where age = 18;
  •  查詢
select * from table_name where id > 2;select field as ‘別名‘ from table_name --> 加別名select * from table_name where id in (1,2);select * from table_name where cid in (select tid from teacher);
  •  條件查詢
select * from table_name order by field asc/desc(正序/倒序)select * from table_name order by field asc limit 1 取第一個值select * from table_name limit 1,2(起始位置,找幾個)select * from table_name where field like ‘%key%‘ --> 尋找field欄位包含key的資料% 表示任意個任一字元, _表示任意一個字元
  •  分組
select * from table_name group by field --> 分組顯示,會去重,需要使用彙總函式來統計重複的次數select field,count(id) from table_name group by field --> 對id欄位進行彙總(其他的還有min(),max(),sum(),avg()等)
  •  例子
1、擷取每個班級多少人
SELECT class.caption,count(sid) from classLEFT join student on student.class_id = class.cid group by class.caption;

 2、擷取每個班級有多少人並且選出認識大於2的班級

注意:如果針對 group by 的結果進行篩選,那麼需要使用 having 不能在使用 where 了.

SELECT class.caption,count(sid) as number from classLEFT join student on student.class_id = class.cidgroup by class.captionHAVING number >= 2;

 3、每個課程的不及格的人數

select course.cname,count(sid) from scoreleft join course on score.corse_id = course.cidwhere number < 60group by course.cname;
四.連表

select student.sid,student.sname,class.caption from student LEFT JOIN class on student.class_id = class.cid ;
把class表中的欄位放在student表的左邊,並且進行 student.class_id = class.cid 匹配後顯示,資料量以from指定的表為基準
left join:
以 from 指定的表為基準,對資料進行顯示
right join: -->不常用
以 join 後面的表為基準進行顯示。
inner join:(join 使用的就是)
只保留連個表中都有資料的條目
例子:
1、id=1的老師任教的課程名稱
2、老師姓名瞎貓任教的課程命令
3、已選課程id=1,所有學生的姓名
4、已選體育課,所有學生的姓名
5、已選波多任教任意課程,所有學生姓名

union:
把兩個SQL的結果進行組合(上下合并)
select * from student
union / union all
select * from teacher;
注意上下兩個表中的列數要統一
注意:
1、如果所有資料都一致,那麼union會對結果進行去重
2、union all ,會儲存所有的

五.基礎資料型別 (Elementary Data Type)

MySQL的資料類型大致分為:數值、時間 和 字串。
數字:
整數
tinyint 小整數,資料類型用於儲存一些範圍的整數數值範圍。
smallint
int
bigint
小數
float 浮點型(長度越長越不精準)
double 浮點型(雙精確度,精度比float稍高) 範圍比float更大
decimal 精準(內部使用字串進行儲存的) -> 適合對精度有要求的
字串
char(19)[字元長度] 定長字串 --> 佔用空間大,但是效率高
varchar(19)[字元長度] 不定長字串 --> 佔用空間是可變的,但是效率低
注意:最大可以存放255個字元
text() 65535個字元
mediumtext() 16777215個字元
longtext() 4294967254個字元
二進位:
TinyBlob
Blob
MediumBlob
LongBlob
存檔案:雖然可以用二進位進行儲存,但是一般是隱藏檔在伺服器上的路徑(URL)
時間:
date YYYY-MM-DD
time HH:MM:SS
year YYYY
DATETIME YYYY-MM-DD HH:MM:SS -->常用
TIMESTAMP 時間戳記格式

 

 

 

 

 

 

 

 

 

 

 

 

  

Python之操作MySQL資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.