MySQL(命令和查詢語句)

一,DDL

1够掠,創(chuàng)建數(shù)據(jù)庫 CREATE DATABASE 數(shù)據(jù)庫名稱;
2忠聚,刪除數(shù)據(jù)庫 DROP DATABASE 數(shù)據(jù)庫名稱;
3,查看數(shù)據(jù)庫 SHOW DATABASES;
4,使用(進(jìn)入)數(shù)據(jù)庫 USE 數(shù)據(jù)庫名稱柳弄;
5舶胀,查看數(shù)據(jù)庫中有多少張表 SHOW TABLES;
(注意:寫的順序,先使用數(shù)據(jù)庫碧注,再去查看有多少張表嚣伐。)
6,查看表的字段信息 DESC 表名萍丐;
7轩端,添加一列 ALTER TABLE 表名 ADD ,列名 數(shù)據(jù)類型逝变;
8基茵,刪除一列 ALTER TABLE 數(shù)據(jù)庫名 DROP 表名奋构;
9,修改表名 RENAME TABLE 原始表名 TO 要修改的表名拱层;
10弥臼,查看表的創(chuàng)建細(xì)節(jié) SHOW CREATE TABLE 表名;
11根灯,修改表的字符集 ALTER TABLE 表名 CHARSET=utf8径缅;
12,修改表的列名 ALTER TABLE 數(shù)據(jù)庫名 CHANGE 原始名 新名烙肺;
13纳猪,刪除表 DROP TABLE 表名;
14桃笙,創(chuàng)建學(xué)生表 CREATE TABLE 表名(內(nèi)容)氏堤;
(注意:最后一行沒有逗號)

添加多行數(shù)據(jù)(批量插入):INSERT INTO 表名 VALUES (列值1....);

SQL插入數(shù)據(jù)

1,查詢表中的所有數(shù)據(jù)

SELETE * FROM 表名;

DML是對表中的數(shù)據(jù)進(jìn)行增搏明、刪丽猬、改操作

2,插入操作: INSERT INTO 表名 ( 列名1,列名2 ) VALUES (列值1, 列值2...);
舉例:

INSERT INTO students (id,name,age,email,score) VALUES (
2,'lisi',18,'wengwenyu@aliyun.com',null
);

3熏瞄,添加多條數(shù)據(jù)(批量插入):

VALUES后面以逗號隔開
INSERT INTO 表名(列名1,列名2....) VALUES(列值1,列值2),(列值1,列值2)....;

舉例:

INSERT INTO students (id,name,age,email,score) VALUES (
2,'wangwu',20,'wengwenyu2@aliyun.com',20
),(
3,'maliu',21,'wengwenyu3@aliyun.com',22
);

SQL更新數(shù)據(jù)以及修改數(shù)據(jù)庫密碼

1. 更新操作

UPDATE 表名 SET 列名1=列值1, 列名2=列值2... WHERE 列名=值

舉例:
1 把所有學(xué)生的分?jǐn)?shù)改為90

UPDATE students SET score=90;

2脚祟,把姓名為zs的學(xué)生分?jǐn)?shù)修改為60

UPDATE students SET score=60 WHERE name='zs';

3,把姓名為lisi的年齡修改為20和分?jǐn)?shù)修改為70

UPDATE students SET age=30,score=70 WHERE name='lisi';

4 把wangwu的年齡在原來基礎(chǔ)上+1歲

UPDATE students SET age=age+1 WHERE name='wangwu'

2, 修改數(shù)據(jù)庫密碼

mysqladmin -u root -p password 123456

3刪除操作

如果不加過濾條件就是刪除所有數(shù)據(jù)
DELETE FROM 表名 WHERE 列名=值;

舉例:

DELETE FROM students WHERE name='amliu'

4,刪除所有數(shù)據(jù)

TRUNCATE TABLE 表名;

DELETE 與 TRUNCATE的區(qū)別:
DELETE可以刪除指定數(shù)據(jù)也能刪除所有數(shù)據(jù) TRUNCATE只能刪除所有數(shù)據(jù)
**DELETE刪除表中的數(shù)據(jù),表結(jié)構(gòu)還在;刪除后數(shù)據(jù)還可以找回
**TRUNCATE刪除是把表直接DROP掉,然后再創(chuàng)建一個同樣的新表.刪除的數(shù)據(jù)不能找回.執(zhí)行速度比DELETE快

虛擬結(jié)果集

  1. 查詢所有列

SELECT * FROM 表名

2.查詢指定的列

SELECT 列名1,列名2 FROM 表名;

舉例:

SELECT name,age FROM students;

3,條件查詢

BETWEEN...AND; 值在什么范圍
IN(set);
IS NULL; (為空)
IS NOT NULL; (不為空)
AND; 與

OR; 或
NOT; 非

使用

  1. 查詢性別為男,并且年齡為20的學(xué)生記錄
    添加性別字段

ALTER table students add gender varchar(2);

查詢

SELECT * FROM students WHERE gender='男' AND age=20;

2,查詢學(xué)號為1001 或者 名為 zs 的記錄

SELECT * FROM students WHERE id=1001 OR name='zs';

  1. 查詢學(xué)號為1001 , 1002 ,1003的記錄

SELECT * FROM students WHERE id = 1001 OR id = 1002 OR id = 1003;

SELECT * FROM students WHERE id in (1001,1002,1003);

  1. 查詢年齡為null的記錄

SELECT * FROM students WHERE age IS NULL;

  1. 查詢年齡在18-20之間的學(xué)生記錄

SELECT * FROM students WHERE age>= 18 AND age<=20;

SELECT * FROM students WHERE age BETWEEN 18 AND 20;

  1. 查詢性別非男的學(xué)生記錄

SELECT * FROM students WHERE gender != '男';

  1. 查詢姓名不為null的學(xué)生記錄

SELECT * FROM students WHERE name IS NOT NULL;

模糊查詢

_:任意一個字母
%:任意0~n個字母

使用

  1. 查詢姓名由5個字母構(gòu)成的學(xué)生記錄

5個字母就是5個下劃線

SELECT * FROM students WHERE name LIKE '_____';

  1. 查詢姓名由5個字母構(gòu)成,并且第5個字母為's'的學(xué)生記錄

SELECT * FROM students WHERE name LIKE '____s';

  1. 查詢姓名以'm'開頭的學(xué)生記錄

SELECT * FROM students WHERE name LIKE 'm%';

  1. 查詢姓名中第二個字母為'u'的學(xué)生記錄

SELECT * FROM students WHERE name LIKE '_u%';

  1. 查詢姓名中包含's'字母的學(xué)生記錄

SELECT * FROM students WHERE name LIKE '%s%';

字段控制查詢

去除重復(fù)記錄

查詢所有學(xué)生name信息,去除重復(fù)信息
SELECT DISTINCT name FROM students;

把查詢字段的結(jié)果進(jìn)行運(yùn)算,必須都要是數(shù)值型

SELECT *,字段1+字段2 FROM 表名;

舉例:

查出所有內(nèi)容,又添加了一個新的列為age和score的和,注意* 表示查出所有,然后逗號隔開强饮,然后age+score
SELECT *,age+score FROM students;

注意
1,列有很多記錄的值為null,因為任何東西與NULL相加的結(jié)果還是NULL,所以結(jié)算結(jié)果可能會出現(xiàn)NULL,下面使用了把NULL轉(zhuǎn)化成數(shù)值0的函數(shù)IFNULL:

SELECT *,age+IFNULL(score,0) FROM students;

2,對查詢結(jié)果起別名 在上面的查詢中出現(xiàn)列名為sx+IFNULL(yw,0),這很不美觀,現(xiàn)在我們給這一列起一個別名,為total:

SELECT *,yw+IFNULL(sx,0) AS total FROM score;
省略
AS SELECT *,yw+IFNULL(sx,0) total FROM score;排序

排序

關(guān)鍵字 ORDER BY
排序類型(默認(rèn)是ASC))
升序ASC 從小到大
降序DESC 從大到小

使用

SELECT * FROM employee ORDER BY salary DESC,id DESC;

聚合函數(shù)

  • COUNT():統(tǒng)計指定列不為NULL的記錄行數(shù);
  • MAX():計算指定列的最大值,如果指定列是字符串類型,那么使用字符串排序運(yùn)算;
  • MIN():計算指定列的最小值,如果指定列是字符串類型,那么使用字符串排序運(yùn)算
  • SUM():計算指定列的數(shù)值和,如果指定列類型不是數(shù)值類型,那么計算結(jié)果為0;
  • AVG():計算指定列的平均值,如果指定列類型不是數(shù)值類型,那么計算結(jié)果為0;
    1. COUNT 使用
    1.查詢employee表中記錄數(shù):

SELECT COUNT(*) FROM employee;

2 查詢員工表中有績效的人數(shù):

SELECT COUNT(performance) FROM employee;

3 查詢員工表中月薪大于2500的人數(shù):

SELECT COUNT(*) FROM employee WHERE salary > 2500;

4 統(tǒng)計月薪與績效之和大于5000元的人數(shù):

SELECT COUNT(*) FROM employee WHERE IFNULL(salary,0)+IFNULL(performance,0)>5000;

5 查詢有績效的人數(shù)由桌,和有管理費的人數(shù):

SELECT COUNT(performance),COUNT(manage) FROM employee;

2. SUM 使用
1 查詢所有雇員月薪和

SELECT SUM(salary) FROM employee;

2 查詢所有雇員月薪和,以及所有雇員績效和

SELECT SUM(salary),SUM(performance) FROM employee;

3 查詢所有雇員月薪+績效和

SELECT SUM(salary+IFNULL(performance,0)) FROM employee;

4 統(tǒng)計所有員工平均工資

SELECT AVG(salary) FROM employee;

3. MAX和MIN
.1 查詢最高工資和最低工資

SELECT MAX(salary),MIN(salary) FROM employee;

一,分組查詢

對所有部門分組

SELECT department FROM employee GROUP BY department;

  1. 分組注意事項:在使用分組時,select后面直接跟著的字段一般都在出現(xiàn)在group by后

例子1: 對name和gender同時進(jìn)行分組

SELECT name,gender FROM employee GROUP BY gender,name;

例子2:

SELECT gender,GROUP_CONCAT(name) FROM employee GROUP BY gender;

去重是把相同的數(shù)據(jù)去除掉,分組是把相同的數(shù)據(jù)劃成一組,你可以對這一組數(shù)據(jù)進(jìn)行操作

二、分組查詢-使用

  1. GROUP BY+GROUP_CONCAT()
  • GROUP_CONCAT(字段名)可以作為一個輸出字段來使用
  • 表示分組之后,根據(jù)分組結(jié)果,使用group_concat()來 放置每一組的某字段的值的集合

1 使用

  • 在一組里面所有男性名字和女性名字

SELECT gender,GROUP_CONCAT('name') FROM employee GROUP BY gender;

  • 所有男性工資和女性工資

SELECT gender,GROUP_CONCAT(salary) FROM employee GROUP BY gender;

  • 對某一個部門進(jìn)行分組,查看每個部門薪資信息都羅列出來

SELECT department,GROUP_CONCAT(salary) FROM employee GROUP BY department;

GROUP BY + 聚合函數(shù)

通過group_concat()的啟發(fā),我們既然可以統(tǒng)計出每個分組的某字段的值的集合,那么我們也可以通過集合函數(shù)來對這個'值的集合'做一些操作
1 使用

  • 查看部門平均薪資

SELECT department,GROUP_CONCAT(salary),SUM(salary) FROM employee GROUP BY department;

  • 查看每個部門的最高薪資

SELECT department,GROUP_CONCAT(salary),MAX(salary) FROM employee GROUP BY department;

  • 查看每個部門的最低薪資

SELECT department,GROUP_CONCAT(salary),MIN(salary) FROM employee GROUP BY department邮丰;

  • 查詢每個部門的部門名稱和每個部門的工資和

SELECT department,GROUP_CONCAT(salary),SUM(salary) FROM employee GROUP BY department;

  • 查詢每個部門的部門名稱和每個部門的工資和

SELECT department,GROUP_CONCAT(salary),SUM(salary) FROM employee GROUP BY department;

  • 查詢每個部門的部門名稱以及每個部門工資大于1500的人數(shù)

SELECT name,salary FROM employee WHERE salary>1500;

修改后:

SELECT department,GROUP_CONCAT(salary),COUNT(*) FROM employee WHERE salary>1500 GROUP BY department;

!GROUP BY + having

  • 用分組查詢后指定一些條件來輸出查詢結(jié)果
  • having作用和where一樣,但是having只能用于GROUP BY

1 使用

  • 查詢工資總和大于9000的部門名稱
  1. 把所有部門進(jìn)行分組

SELECT department
FROM employee
GROUP BY department;

  1. 每一組有哪些薪資,以及薪資總和

SELECT department,GROUP_CONCAT(salary),SUM(salary)
FROM employee

GROUP BY department;

  1. 完成

SELECT department,GROUP_CONCAT(salary),SUM(salary)
FROM employee
GROUP BY department
HAVING SUM(salary)>9000;

HAVING和WHERE的區(qū)別

  • HAVING是在分組后對數(shù)據(jù)進(jìn)行過濾;
  • WHERE是在分組前對數(shù)據(jù)進(jìn)行過濾;
  • HAVING后面可以使用分組函數(shù)(統(tǒng)計函數(shù));
  • WHERE后面不可以使用分組函數(shù);
  • WHERE是對分組前記錄的條件,如果某行記錄沒有滿足where子語句的條件,那么這行記錄不參與分組;而HAVING是對分組后的數(shù)據(jù)約束;

3 查詢工資大于2000的,工資總和大于6000的部門名稱以及工資和;

  1. 查詢工資大于2000

SELECT salary FROM employee WHERE salary>2000;

  1. 工資總和

SELECT department,GROUP_CONCAT(salary),SUM(salary)
FROM employee
WHERE salary > 2000
GROUP BY department
HAVING SUM(salary)>9000;
ORDER BY SUM(salary) DESC;

書寫順序

  • SELECT --> FROM --> WHERE --> GROUP BY --> HAVING --> ORDER BY --> LIMIT

執(zhí)行順序

  • FROM => WHERE => GROUP BY => HAVING => SELECT => ORDER BY => LIMIT
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末行您,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子剪廉,更是在濱河造成了極大的恐慌娃循,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斗蒋,死亡現(xiàn)場離奇詭異捌斧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)泉沾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門捞蚂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跷究,你說我怎么就攤上這事姓迅。” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵丁存,是天一觀的道長肩杈。 經(jīng)常有香客問我,道長解寝,這世上最難降的妖魔是什么扩然? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮编丘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘彤悔。我一直安慰自己嘉抓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布晕窑。 她就那樣靜靜地躺著抑片,像睡著了一般。 火紅的嫁衣襯著肌膚如雪杨赤。 梳的紋絲不亂的頭發(fā)上敞斋,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音疾牲,去河邊找鬼植捎。 笑死,一個胖子當(dāng)著我的面吹牛阳柔,可吹牛的內(nèi)容都是我干的焰枢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼舌剂,長吁一口氣:“原來是場噩夢啊……” “哼济锄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起霍转,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤荐绝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后避消,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體低滩,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年岩喷,在試婚紗的時候發(fā)現(xiàn)自己被綠了委造。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡均驶,死狀恐怖昏兆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤爬虱,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布隶债,位于F島的核電站,受9級特大地震影響跑筝,放射性物質(zhì)發(fā)生泄漏死讹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一曲梗、第九天 我趴在偏房一處隱蔽的房頂上張望赞警。 院中可真熱鬧,春花似錦虏两、人聲如沸愧旦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笤虫。三九已至,卻和暖如春祖凫,著一層夾襖步出監(jiān)牢的瞬間琼蚯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工惠况, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留遭庶,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓稠屠,卻偏偏與公主長得像罚拟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子完箩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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

  • 周六赐俗,剛好是中秋小長假的第一天。內(nèi)心始終被一種節(jié)日的氣氛籠罩著弊知,借機(jī)小小的寵愛自己一把阻逮,把自己從鍋碗瓢盆交響曲中解...
    gezhe1967閱讀 334評論 4 8
  • 視聽說p38-41 1,從本篇文章/音頻/視頻中我學(xué)到的最重要的概念 The city we lived in a...
    141王成程閱讀 345評論 3 5
  • 許我一縷清風(fēng)瓜富,不忍拂你發(fā)梢。 予我一抹斜陽降盹,怎堪入你眼角与柑。 我總是,靜悄悄的, 靜悄悄的看你价捧, 看你沉思丑念,看你歡笑...
    此木非柴閱讀 664評論 0 11
  • 配置文件 生成簡明的配置文件 生成有詳細(xì)說明的配置文件 [1] 示例配置文件 .Xresource / .X...
    zmlcc閱讀 3,980評論 0 1