Day3 高級(jí)查詢

一含懊、連接查詢

1.接連查詢:

同時(shí)查詢多個(gè)表中的數(shù)據(jù)
SELECT * FROM 表名1,表名2... WHERE 連接條件;
連接查詢?nèi)绻患舆B接條件纹笼,結(jié)果是一個(gè)笛卡爾積:(a,b,c)(1,2,3) --> (a1,a2,a3,b1,b2,b3,c1,c2,c3)

查詢每個(gè)老師對(duì)應(yīng)的學(xué)院

SELECT teaname, collname FROM tb_college, tb_teacher WHERE tb_teacher.collid=tb_college.collid;

查詢學(xué)生姓名對(duì)應(yīng)的學(xué)科名的分?jǐn)?shù)

SELECT stuname, couname, mark FROM tb_student, tb_course, tb_score 
WHERE tb_score.stuid=tb_student.stuid and tb_score.couid=tb_course.couid;

查詢平均分高于80分的學(xué)生名字和對(duì)應(yīng)的平均分分?jǐn)?shù)
注意:如果連接查詢的時(shí)候既有連接條件又有篩選條件,我們要把篩選條件寫在連接條件后邊

SELECT stuname, avg_mark FROM 
tb_student, 
(SELECT stuid, AVG(mark) as avg_mark FROM tb_score GROUP BY(stuid)) as temp_t 
WHERE tb_student.stuid = temp_t.stuid and avg_mark>80;   
2.內(nèi)連接

SELECT * FROM 表1 inner join 表2 on 表2的連接條件 inner join 表3 on 表3的連接條件 ...;
注意: 中間表寫在最前面(存在關(guān)聯(lián)其他表外鍵的表)
查詢學(xué)生姓名對(duì)應(yīng)的學(xué)科名的分?jǐn)?shù)

SELECT stuname, couname, mark FROM tb_score  
INNER JOIN tb_studnt ON tb_student.stuid=tb_score.stuid  
INNER JOIN tb_course ON tb_course.couid=tb_score.couid 
WHERE mark < 60;  
3.外連接

外連接分為左外連接、右外連接和全連接, 但是在MySQL中支持左外連接和右外連接
表1(左表) left/right/inner join 表2(右表)
左外連接:將左表中對(duì)應(yīng)字段的所有數(shù)據(jù)取出,然后再對(duì)應(yīng)的右表中字段的值佛猛,如果右表對(duì)應(yīng)的值不存在結(jié)果就為null
右外連接:將右表中對(duì)應(yīng)字段的所有數(shù)據(jù)取出,然后再對(duì)應(yīng)的左表中字段的值坠狡,如果左表對(duì)應(yīng)的值不存在結(jié)果就為null

查所有學(xué)生名對(duì)應(yīng)的成績

SELECT stuname, mark FROM tb_score INNER JOIN tb_student ON tb_student.stuid=tb_score.stuid;
SELECT stuname, mark FROM tb_score  RIGHT JOIN tb_student ON tb_student.stuid=tb_score.stuid; 

二继找、字段索引

字段的索引就相當(dāng)于于目錄,作用是為了能夠快速的對(duì)這個(gè)字段進(jìn)行查找
添加索引的好處是可以大大的提高查詢效率逃沿; 缺點(diǎn)是:1.會(huì)消耗額外的存儲(chǔ)空間婴渡, 2.會(huì)讓添加和刪除的效率降低
建議: 1.索引不能濫用 2.如果項(xiàng)目中針對(duì)某個(gè)字段的查詢很頻繁,建議加個(gè)對(duì)應(yīng)的索引
EXPLAIN: 獲取執(zhí)行計(jì)劃

EXPLAIN SELECT * FROM tb_student WHERE stuid=110;
EXPLAIN SELECT * FROM tb_student WHERE stuname='張三';

添加索引: create index 索引名稱 on 表名 (字段名); - 給指定表中的指定字段添加索引

CREATE INDEX index_stuname on tb_student (stuname);   -- 給名字加索引
CREATE INDEX index_stuname1 on tb_student (stuname(1));    -- 按姓加索引

刪除索引

ALTER TABLE tb_student DROP INDEX index_stuname;   

三凯亮、DCL

1.創(chuàng)建用戶

create user 用戶名@登錄地址
登錄地址: (限制用戶能夠登錄MySQL的主機(jī)地址)边臼, ip地址(指定地址), localhost(數(shù)據(jù)庫本機(jī)), %(任何位置)
CREATE USER 'zhangshan'@'%' IDENTIFIED BY 'yuting123456';

刪除用戶: drop user 用戶名;
DROP USER 'zhangshan';

2.授權(quán)

grant 權(quán)限類型 on 數(shù)據(jù)庫.對(duì)象 to 用戶名;

GRANT SELECT on school.tb_student TO 'zhangshan';
GRANT UPDATE on school.tb_student TO 'zhangshan';  
GRANT all PRIVILEGES ON school.* TO 'zhangshan';   -- 添加所有權(quán)限  
GRANT all PRIVILEGES ON school.* TO 'zhangshan' WITH GRANT OPTION;   -- 添加所有權(quán)限,并且能夠?qū)⒆约旱臋?quán)限再授權(quán)給其他用戶 

?

3.召回授權(quán)

REVOKE 權(quán)限類型 on 數(shù)據(jù)庫.對(duì)象 from 用戶名;

REVOKE DELETE on school.* FROM 'zhangshan';
REVOKE all PRIVILEGES on school.* FROM 'zhangshan';
REVOKE all PRIVILEGES on school.* FROM 'zhangshan';
REVOKE SELECT on school.tb_student FROM 'zhangshan';
REVOKE UPDATE on school.tb_student FROM 'zhangshan';
4.事務(wù)

完成一個(gè)任務(wù)需要執(zhí)行多條sql假消,但是要求這多個(gè)操作中只要有一個(gè)操作失敗柠并,這個(gè)任務(wù)就失敗,數(shù)據(jù)全部還原富拗;所有的操作都成功臼予,整個(gè)任務(wù)才成功的時(shí)候就使用事務(wù)

開啟事務(wù)環(huán)境
BEGIN;
UPDATE tb_student set stuname='444' WHERE stuname='222';
UPDATE tb_student set birth2='1990-1-1' WHERE stuname='222';
提交事務(wù)(只有begin到commit之間的所有的sql都執(zhí)行成功,才會(huì)執(zhí)行commit; 否則執(zhí)行rollback)
COMMIT;
事務(wù)回滾(放棄beigin到commit之間執(zhí)行成功的所有sql語句的結(jié)果)
ROLLBACK;

四啃沪、在python中使用pyMySQL

第一步:按照第三方庫pymysql

pip install -i https://pypi.doubanio.com/simple pymysql

第二步:創(chuàng)建連接

    conn = pymysql.connect(host='localhost',    # 本機(jī)用localhost粘拾,遠(yuǎn)程用IP地址
                           port=3306,           # 端口號(hào)
                           user='root',         # 用戶名
                           password='123456',   # 密碼
                           database='db_myschool',  # 數(shù)據(jù)庫
                           charset='utf8',      # 支持中文
                           autocommit=True)     # 每次執(zhí)行sql語句自動(dòng)提交

第三步:

# 獲取游標(biāo)對(duì)象 - 提供數(shù)據(jù)庫的上下文
    cursor = conn.cursor()

第三步:

# 查詢所有數(shù)據(jù)
    cursor.execute('select * from tb_student')
    for row in cursor.fetchall():
        print(row)
    print("共%d條數(shù)據(jù)。" % cursor.rowcount)

第四步:

# 關(guān)閉連接
    conn.close()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末创千,一起剝皮案震驚了整個(gè)濱河市缰雇,隨后出現(xiàn)的幾起案子入偷,更是在濱河造成了極大的恐慌,老刑警劉巖械哟,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盯串,死亡現(xiàn)場離奇詭異,居然都是意外死亡戒良,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門冠摄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糯崎,“玉大人,你說我怎么就攤上這事河泳∥帜兀” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拆挥,是天一觀的道長薄霜。 經(jīng)常有香客問我,道長纸兔,這世上最難降的妖魔是什么惰瓜? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮汉矿,結(jié)果婚禮上崎坊,老公的妹妹穿的比我還像新娘。我一直安慰自己洲拇,他們只是感情好奈揍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赋续,像睡著了一般男翰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纽乱,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天蛾绎,我揣著相機(jī)與錄音,去河邊找鬼迫淹。 笑死秘通,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的敛熬。 我是一名探鬼主播肺稀,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼应民!你這毒婦竟也來了话原?” 一聲冷哼從身側(cè)響起夕吻,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎繁仁,沒想到半個(gè)月后涉馅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡黄虱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年稚矿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捻浦。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晤揣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朱灿,到底是詐尸還是另有隱情昧识,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布盗扒,位于F島的核電站跪楞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侣灶。R本人自食惡果不足惜甸祭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炫隶。 院中可真熱鬧淋叶,春花似錦、人聲如沸伪阶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栅贴。三九已至斟湃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間檐薯,已是汗流浹背凝赛。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坛缕,地道東北人墓猎。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赚楚,于是被迫代替她去往敵國和親毙沾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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