表內(nèi)容的操作

對(duì)表數(shù)據(jù)進(jìn)行增刪改查(curd)

增(insert into):

  • auto_increment自增長(zhǎng)
CREATE DATABASE class1804 charset=utf8;(創(chuàng)建一個(gè)名為class1804的數(shù)據(jù)庫(kù))
use class1804;(進(jìn)入class1804這個(gè)數(shù)據(jù)庫(kù))
create table studentinfo(
    ->student_id int not null auto_increment,
    ->student_name varchar(10) not null,
    -> age int not null default 18,
    -> gender int not null default 0,
    -> phonenum char(11),
    -> primary key(student_id)
    -> );(在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)表單牡肉,名為studentinfo白胀,表單中寫(xiě)入詳細(xì)信息)

SELECT * FROM 表單名稱(chēng) 查看這個(gè)表單的所有詳細(xì)信息(*表示所有)

1.完全插入
INSERT INTO studenyinfo values(180401,'老王',18,1,15658966558);

2.不完全插入
INSERT INTO studentinfo(student_id,student_name,age,gender) -> values('180403','小王',23,0);

3.多行插入
insert into studentinfo(student_id,student_name,age)
-> VALUES(180404,'老黃',23),(180405,'富貴',19),
-> (180406,'小黃',6);

將一個(gè)表插入到另一個(gè)表中

insert into studentinfo1(student_id,age) SELECT student_id,age FROM studentinfo;

刪(為了從一個(gè)表中刪除(去掉)數(shù)據(jù)孕蝉,使用DELETE語(yǔ)句):

刪除時(shí)最好找唯一的標(biāo)識(shí)

DELETE FROM studentinfo WHERE student_id=180402;
DELETE FROM studentinfo;(刪除整個(gè)表單,慎用)

更新(修改)表中的數(shù)據(jù)燃观,可使用UPDATE語(yǔ)句。

INSERT INTO studentinfo(student_id,student_name,age,gender,phonenum)
    -> values(180401,'鄭程峰',25,1,'18695436957'),
    -> (180402,'李客',20,1,'16598759632');
UPDATE studentinfo SET student_name='成風(fēng)',age=30 WHERE student_id=180401;

SELECT * FROM studentinfo WHERE student_id=180402;

修改 跟新 update
1.跟新單個(gè)字段(列)
update 表名 set name = '娜娜' , age = 19 where id = 12345;
2.跟新多行
update 表名 set name = ' 娜娜 ' ;
3.跟新多個(gè)字段(列)
update 表名 set name = ' 娜娜 ' age = 19 where id = 18888 ;
將一個(gè)表復(fù)制到另一個(gè)表中
insert into 新表 (列名,列名...) select 列名,列名... from 原表 ;
刪除數(shù)據(jù) delete
刪除特定的一行:例如:delete from 表名 where id = 10010 ;
刪除所有行:例如:delete from 表名 (不能輕易做);
查詢(xún)
  查詢(xún)所有 select * from 表名 泽铛;
  查詢(xún)某一個(gè) select * from 表名 where id = 13333 ;
  查詢(xún)年齡這個(gè)列 select age from 表名 where id = 19999壮韭;
使用限定的方式查找北发,不進(jìn)入數(shù)據(jù)庫(kù)就可以查詢(xún)到表的信息
  select * from 數(shù)據(jù)庫(kù)名.表名;
使用 distinct 去重,返回不重復(fù)的列的值
  select distinct age from 表名喷屋;insert into 表 (列名,列名...) select 列名,列名... from 表
數(shù)據(jù)庫(kù)的查詢(xún) where(過(guò)濾)
  查詢(xún)一行 select * from 表名 where age = 6×詹Α;
where 條件查詢(xún)和運(yùn)算符 
  = 等于 select * from 表名 where age = 6 ;
<> 不等于屯曹, != 不等于狱庇,
  < 小于, <= 小于等于恶耽, > 大于密任, >= 大于等于,
  between ... and 在兩者之間(包含邊界值);
例如:select name ,age from 表名 where age between 5 and 30 ;
  is null 判斷某一列的數(shù)據(jù)驳棱,如果包含null 批什,則返回記錄;
  例如:select * from 表名 where phone is null ;
and 鏈接查詢(xún)條件,查詢(xún)的數(shù)據(jù)要全部滿(mǎn)足
  例如:select name from 表名 where userid>=18004 and age>99;
or 鏈接查詢(xún)條件,查詢(xún)的數(shù)據(jù)只要滿(mǎn)足其中一個(gè)即可
  例如:select name from 表名 where userid>=18004 or age>90;
in 操作符 (相當(dāng)于 or ) in (條件1社搅,條件2驻债,條件3)乳规;
  例如:selete name(列)

聚合函數(shù)

AVG:求某一列平均值

COUNT:統(tǒng)計(jì)總行數(shù)

SUM:計(jì)算列總和

MIN:求某一列的最小值

MAX:求某一列的最大值

AVG:求某一列平均值

SELECT AVG(age) FROM studentinfo;

求某一列值(起一個(gè)別名)

SELECT AVG(age) as avgage FROM studentinfo;

SELECT MIN(age) as minage FROM studentinfo;

SELECT MAX(age) as maxage FROM studentinfo;

SELECT SUM(age) FROM studentinfo;

SELECT COUNT(*) FROM studentinfo;

DISTINCT去重,只計(jì)算不同的值

SELECT SUM(DISTINCT age) FROM studentinfo;

添加條件合呐,進(jìn)行聚合函數(shù)的計(jì)算

SELECT COUNT(gender) FROM studentinfo WHERE gender=1;

SELECT COUNT(gender) FROM studentinfo WHERE gender=0;

分組跟聚合函數(shù)的使用暮的,統(tǒng)計(jì)每一個(gè)分組下有多少人(有多少條記錄)

SELECT count(*) as total,age FROM studentinfo GROUP BY age;

統(tǒng)計(jì)分組的信息

SELECT count(*), avg(age),min(age),sum(age),gender FROM studentinfo GROUP BY gende;

group by 與 group_concat(列)

group_concat(字段名)可以作為一個(gè)輸出字段來(lái)使用淌实,

表示分組之后冻辩,根據(jù)分組結(jié)果,使用group_concat()來(lái)放置每一組的某字段的值的集合

SELECT gender,group_concat(student_name),group_concat(age) FROM studentinfo GROUP BY gender;

group by + with rollup

在最后新增一行拆祈,來(lái)記錄當(dāng)前列里所有記錄的總和

SELECT gender,count(*) FROM studentinfo GROUP BY gender with rollup;

HAVING

HAVING非常類(lèi)似于WHERE

唯一的差別是WHERE過(guò)濾行恨闪,而HAVING過(guò)濾分組

having 條件表達(dá)式:用來(lái)分組查詢(xún)后指定一些條件來(lái)輸出查詢(xún)結(jié)果

having作用和where類(lèi)似,但having只能用于group by

SELECT COUNT(),age,adress FROM customers GROUP BY age,adress HAVING COUNT() >= 2;
在開(kāi)發(fā)中會(huì)有大量的處理字符串的工作 比如注冊(cè)登錄時(shí)的如何判斷一個(gè)手機(jī)號(hào)是不是一個(gè)手機(jī)號(hào)
可以使用正則表達(dá)式來(lái)分辨過(guò)濾 在代碼中的簡(jiǎn)寫(xiě)是(regex | regexp | re)

. 匹配任何字符字母及數(shù)字 除\n換行符外

\ 轉(zhuǎn)義字符 使字符改變?cè)瓉?lái)的意思

[...] 字符集[^a]表示不是a的其他字符這里不是以a開(kāi)頭的意思

預(yù)定義字符集 可以寫(xiě)在字符集中

\d [0-9] 匹配0-9中的任意數(shù)字

\D [^\d]匹配非數(shù)字

\s t/r/n/f匹配空白字符

\S匹配非空白字符

\w匹配0-9A-Za-z+下劃線(xiàn) 數(shù)字大小字母下劃線(xiàn)

\W [^\w]匹配非數(shù)字大小字母下劃線(xiàn)

數(shù)量詞用來(lái)匹配次數(shù) 用在字符或(...)之后

*匹配前一個(gè)字符0次或無(wú)限次

+匹配前一個(gè)字符1次或無(wú)限次

?匹配前一個(gè)字符0次或1次

{m}匹配前一個(gè)字符的m次

{m,n}m和n可以省略+?(非貪婪)匹配m次不加則匹配n次{2,6}最少匹配2次最多匹配6次;

^匹配以字符開(kāi)頭

$匹配以字符結(jié)尾

\A匹配字符串開(kāi)頭

\Z匹配字符串末尾

\b匹配\w和\W之間

\B [^\b]非\b

|或者從左至右匹配沒(méi)在括號(hào)中使用時(shí)范圍是全文

(...)分組 被括起來(lái)的稱(chēng)為一組 左邊是分組 右邊是編號(hào)

左邊(?P=<name起一個(gè)名字>) 右邊(P=<name起的名字>)
在 Python 中放坏,我們可以使用內(nèi)置的 re 模塊來(lái)使用正則表達(dá)式咙咽。

有一點(diǎn)需要特別注意的是,正則表達(dá)式使用 對(duì)特殊字符進(jìn)行轉(zhuǎn)義淤年,所以如果我們要使用原始字符串钧敞,只需加一個(gè) r 前綴,示例:

re 模塊的一般使用步驟如下:

使用 compile() 函數(shù)將正則表達(dá)式的字符串形式編譯為一個(gè) Pattern 對(duì)象

通過(guò) Pattern 對(duì)象提供的一系列方法對(duì)文本進(jìn)行匹配查找麸粮,獲得匹配結(jié)果溉苛,一個(gè) Match 對(duì)象。

最后使用 Match 對(duì)象提供的屬性和方法獲得信息弄诲,根據(jù)需要進(jìn)行其他的操作

compile 函數(shù)

compile 函數(shù)用于編譯正則表達(dá)式愚战,生成一個(gè) Pattern 對(duì)象,它的一般使用形式如下:

import re將正則表達(dá)式編譯成 Pattern 對(duì)象pattern = re.compile(r'\d+')

修飾符號(hào) 描述

re.I 使用匹配對(duì)大小寫(xiě)不敏感(不區(qū)分大小寫(xiě))

re.S 使.匹配包括換行符在內(nèi)的所有字符

re.M 多行匹配

re.L 做本地化識(shí)別

在上面威根,我們已將一個(gè)正則表達(dá)式編譯成 Pattern 對(duì)象凤巨,接下來(lái),我們就可以利用 pattern 的一系列方法對(duì)文本進(jìn)行匹配查找了洛搀。

Pattern 對(duì)象的一些常用方法主要有:

match 方法:從起始位置開(kāi)始查找敢茁,一次匹配

search 方法:從全文開(kāi)始查找,一次匹配

findall 方法:全文開(kāi)始全部匹配留美,返回列表

finditer 方法:全文開(kāi)始全部匹配彰檬,返回迭代器

split 方法:全文開(kāi)始分割字符串,返回列表

sub 方法:全文替換

排序 ORDER BY

ASC:升序谎砾,默認(rèn)的情況是升序

DESC: 降序

1.單列排序

SELECT * FROM 表名 ORDER BY 列 (ASC | DESC)逢倍;

2.添加條件根據(jù)查詢(xún)結(jié)果排序

SELECT * FROM 表名 WHERE 條件 ORDER BY 列 (ASC | DESC);

3.多列排序

SELECT * FROM 表名 WHERE 條件 ORDER BY 列 (ASC | DESC)景图,列 (ASC | DESC)较雕;

4.如果你要排序的列是中文,我們先要將排序的列指明為GBK編碼,然后在排序

SELECT * FROM 表名 WHERE 條件 ORDER BY convert(name USING gbk);

查詢(xún)出性別為1的學(xué)生并根據(jù)年齡進(jìn)行排序升序

SELECT * FROM studentinfo WHERE gender=1 ORDER BY age;

查詢(xún)出性別為0的學(xué)生并根據(jù)年齡進(jìn)行排序降序

SELECT * FROM studentinfo WHERE gender=0 ORDER BY age DESC;

注意:

在多個(gè)列上降序排序 如果想在多個(gè)列上進(jìn)行降序排序亮蒋,必須對(duì)每個(gè)列指定DESC關(guān)鍵字與和ASC(ASCENDING)關(guān)鍵字

默認(rèn)按照列值從小到大排列(asc)asc從小到大排列扣典,即升序 desc從大到小排序,即降序

多列排序時(shí)將行數(shù)據(jù)按照列1進(jìn)行排序慎玖,如果某些行列1的值相同時(shí)贮尖,則按照列2排序,以此類(lèi)推

限定查詢(xún)

1.如果LIMIT 后面只跟了一個(gè)數(shù)字趁怔,表示限制返回多少條湿硝,并且從第一條開(kāi)始。

SELECT * FROM studentinfo LIMIT 6; => SELECT * FROM studentinfo LIMIT 0,6;

2.如果LIMIT 后面只跟了兩個(gè)數(shù)字润努,第一個(gè)數(shù)字表示偏移量(不包含當(dāng)前數(shù)字對(duì)應(yīng)的這一行)关斜,后一個(gè)數(shù)字表示限制返回多少條。

SELECT * FROM studentinfo LIMIT 6,6;

我們?nèi)绾稳?shí)現(xiàn)一個(gè)分頁(yè)功能,輸入對(duì)應(yīng)的頁(yè)碼m铺浇,每一頁(yè)返回20條數(shù)據(jù)

SELECT * FROM studentinfo LIMIT (m-1)*20,20

取年齡最大的

SELECT * FROM studentinfo ORDER BY age DESC LIMIT 1;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚤吹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子随抠,更是在濱河造成了極大的恐慌,老刑警劉巖繁涂,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拱她,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡扔罪,警方通過(guò)查閱死者的電腦和手機(jī)秉沼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)矿酵,“玉大人唬复,你說(shuō)我怎么就攤上這事∪梗” “怎么了敞咧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)辜腺。 經(jīng)常有香客問(wèn)我休建,道長(zhǎng),這世上最難降的妖魔是什么评疗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任测砂,我火速辦了婚禮,結(jié)果婚禮上百匆,老公的妹妹穿的比我還像新娘砌些。我一直安慰自己,他們只是感情好加匈,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布存璃。 她就那樣靜靜地躺著仑荐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪有巧。 梳的紋絲不亂的頭發(fā)上释漆,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音篮迎,去河邊找鬼男图。 笑死,一個(gè)胖子當(dāng)著我的面吹牛甜橱,可吹牛的內(nèi)容都是我干的逊笆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岂傲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼难裆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起镊掖,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乃戈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后亩进,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體症虑,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年归薛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谍憔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡主籍,死狀恐怖习贫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情千元,我是刑警寧澤苫昌,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站诅炉,受9級(jí)特大地震影響蜡歹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涕烧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一月而、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧议纯,春花似錦父款、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)世杀。三九已至,卻和暖如春肝集,著一層夾襖步出監(jiān)牢的瞬間瞻坝,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工杏瞻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留所刀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓捞挥,卻偏偏與公主長(zhǎng)得像浮创,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砌函,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容