MYSQL實操日記

1、連接、登錄MySQL

搭建好環境,啟動MYSQL服務:net start mysql

然后登錄MySQL數據庫

shell>mysql -hhost?-uuser?-p

Enter password:********

2、創建數據庫

mysql>CREATE DATABASE 數據庫名;

mysql>USE 數據庫名

可以在調用mysql時,通過命令行選擇數據庫,只需要在提供連接參數之后指定數據庫名稱

shell>mysql -h?hos t-u?user?-p 數據庫名

Enter password:********

3、創建表

3.1 查看現有數據庫列表

mysql>SHOW TABLES;

3.2 創建一個寵物數據表(名字、主人、種類,性別、出生和死亡日期)

mysql>CREATE TABLE pet (

name VARCHAR(20),?

owner VARCHAR(20),

species VARCHAR(20),?

sex CHAR(1),?

birth DATE, death DATE

);

查看表結構是否正確(忘記列名也可用):DESCRIBE pet;

3.3 插入數據:

INSERT INTO pet?VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

注意,這里字符串和日期值均為引號擴起來的字符串。另外,可以直接用INSERT語句插入NULL代表不存在的值。

3.41 ?SELECT語句:從數據表中檢索信息,語句的一般格式是:?

SELECTwhat_to_select

FROMwhich_table

WHEREconditions_to_satisfy;

實例:SELECT * FROM pet;

3.42 添加WHERE條件實例:

SELECT * FROM pet WHERE name = 'Bowser';

SELECT * FROM pet WHERE birth >'1998-1-1';

SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';

SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';

注意:AND和OR可以混用,但AND比OR具有更高的優先級。如果你使用兩個操作符,使用圓括號指明如何對條件進行分組是一個好主意,如:

SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')?OR (species = 'dog' AND sex = 'f');

3.43 選擇指定列:

SELECT name, birth FROM pet;

SELECT owner FROM pet;

3.44 增加關鍵字DISTINCT檢索出每個唯一的輸出記錄:

SELECT DISTINCT owner FROM pet;

3.45 使用一個WHERE子句結合行選擇與列選擇。例如,要想查詢狗和貓的出生日期

SELECT name, species, birth FROM pet?WHERE species = 'dog' OR species = 'cat';

3.46?分類行

按動物生日日期排序:

SELECT name, birth FROM pet ORDER BY birth;

注意:默認排序是升序,最小的值在第一。要想以降序排序,在你正在排序的列名上增加DESC(降序 )關鍵字,如:

SELECT name, birth FROM pet ORDER BY birth DESC;

3.47 可以對多個列進行排序,并且可以按不同的方向對不同的列進行排序。例如,按升序對動物的種類進行排序,然后按降序根據生日對各動物種類進行排序(最年輕的動物在最前面)

SELECT name, species, birth FROM pet?ORDER BY species, birth DESC;

注意 : DESC關鍵字僅適用于在它前面的列名(birth);不影響species列的排序順序。

3.48 模式匹配

SQL模式匹配允許你使用“_”匹配任何單個字符,而“%”匹配任意數目字符(包括零字符)。如要想找出以“b”開頭的名字:

SELECT * FROM pet WHERE name LIKE 'b%';

要想找出以“fy”結尾的名字:

SELECT * FROM pet WHERE name LIKE '%fy';

要想找出包含“w”的名字:

SELECT * FROM pet WHERE name LIKE '%w%';

要想找出正好包含5個字符的名字,使用“_”模式字符:

SELECT * FROM pet WHERE name LIKE '_____';

3.49 計數行

COUNT(*)函數計算行數,所以計算動物數目的查詢應為:

SELECT COUNT(*) FROM pet;

如果你想要知道每個主人有多少寵物,可使用GROUP BY對每個owner的所有記錄分組,你可以使用COUNT( )函數:,

SELECT owner, COUNT(*) FROM pet GROUP BY owner;

每種動物的數量:

SELECT species, COUNT(*) FROM pet GROUP BY species;

每種性別的動物數量:

SELECT sex, COUNT(*) FROM pet GROUP BY sex;

按種類和性別組合的動物數量:

SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;

若使用COUNT( ),你不必檢索整個表。例如,前面的查詢,當只對狗和貓進行時,應為:

mysql>SELECT species, sex, COUNT(*) FROM pet

->WHERE species = 'dog' OR species = 'cat'

->GROUP BY species, sex;

如果你僅需要知道已知性別的按性別的動物數目:

mysql>SELECT species, sex, COUNT(*) FROM pet

->WHERE sex IS NOT NULL

->GROUP BY species, sex;

3.410 使用1個以上的表

先創個寵物事件表(寵物名字、發生日期、描述事件的字段、事件類型字段)

CREATE TABLE event (name VARCHAR(20), date DATE,

->type VARCHAR(15), remark VARCHAR(255));

然后從EVENT表中,查找到寶寶出生日期,找出每只寵物的年齡。

mysql>SELECT pet.name,

->(YEAR(date)-YEAR(birth)) - (RIGHT(date,5)

->remark

->FROM pet, event

->WHERE pet.name = event.name AND event.type = 'litter';

關于該查詢要注意的幾件事情:

FROM子句列出兩個表,因為查詢需要從兩個表提取信息。

當從多個表組合(聯結)信息時,你需要指定一個表中的記錄怎樣能匹配其它表的記錄。這很簡單,因為它們都有一個name列。查詢使用WHERE子句基于name值來匹配2個表中的記錄。

因為name列出現在兩個表中,當引用列時,你一定要指定哪個表。把表名附在列名前即可以實現。

你不必有2個不同的表來進行聯結。如果你想要將一個表的記錄與同一個表的其它記錄進行比較,可以將一個表聯結到自身。例如,為了在你的寵物之中繁殖配偶,你可以用pet聯結自身來進行相似種類的雄雌配對:

mysql>SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species

->FROM pet AS p1, pet AS p2

->WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';

在這個查詢中,我們為表名指定別名以便能引用列并且使得每一個列引用與哪個表實例相關聯更直觀

3.5. 獲得數據庫和表的信息

3.51 列出由服務器管理的數據庫:

mysql>SELECT DATABASE();

3.52 列出當前的數據庫的數據表:

mysql>SHOW TABLES;

3.53 查看表結構

mysql>DESCRIBE pet;

注意:Field顯示列名字,Type是列的數據類型,Null表示列是否能包含NULL值,Key顯示列是否被索引而Default指定列的默認值。

3.54 ?在批處理模式下使用mysql

涉及腳本,后續補充

3.6 常用查詢例子

先創建一個例子表

CREATE TABLE shop (

->article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,

->dealer? CHAR(20)???????????????? DEFAULT ''???? NOT NULL,

->price?? DOUBLE(16,2)???????????? DEFAULT '0.00' NOT NULL,

->PRIMARY KEY(article, dealer));

mysql>INSERT INTO shop VALUES

->(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),

->(3,'C',1.69),(3,'D',1.25),(4,'D',19.95);

3.6.1. 列的最大值

“最大的物品號是什么?”

SELECT MAX(article) AS article FROM shop;

3.6.2. 擁有某個列的最大值的行

任務:找出最貴物品的編號、銷售商和價格。

這很容易用一個子查詢做到:

SELECT article, dealer, price

FROM?? shop

WHERE? price=(SELECT MAX(price) FROM shop);

另一個解決方案是按價格降序排序所有行并用MySQL特定LIMIT子句只得到第一行:

SELECT article, dealer, price

FROM shop

ORDER BY price DESC

LIMIT 1;

:如果有多項最貴的物品(例如每個的價格為19.95),LIMIT解決方案僅僅顯示其中一個!

3.6.3. 列的最大值:按組

任務:每項物品的的最高價格是多少?

SELECT article, MAX(price) AS price

FROM? shop

GROUP BY article

3.6.4. 擁有某個字段的組間最大值的行

任務:對每項物品,找出最貴價格的物品的經銷商。

可以用這樣一個子查詢解決該問題:

SELECT article, dealer, price

FROM? shop s1

WHERE? price=(SELECT MAX(s2.price)

FROM shop s2

WHERE s1.article = s2.article);

3.6.5. 使用用戶變量

可以清空MySQL用戶變量以記錄結果,不必將它們保存到客戶端的臨時變量中。(

例如,要找出價格最高或最低的物品的,其方法是:

mysql>SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;mysql>SELECT * FROM shop WHERE price=@min_price OR price=@max_price;

3.6.6. 使用外鍵

未完待續




3.5 UPDATE更新數據

mysql>UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,489評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,290評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,776評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,510評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,866評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,036評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,585評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,331評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,536評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,754評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,154評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,469評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,273評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,505評論 2 379

推薦閱讀更多精彩內容

  • 目錄 MySQL簡介 基本輸入查詢 創建并使用數據庫 SELECT語句 選擇特殊行 條件 通配符 選擇特殊列 排序...
    鬼宇書生閱讀 1,038評論 2 1
  • 一、數據庫操作: 1.1 創建數據庫: create database student; 1.2 刪除數據庫: ...
    __71db閱讀 796評論 0 0
  • MySQL5.6從零開始學 第一章 初始mysql 1.1數據庫基礎 數據庫是由一批數據構成的有序的集合,這些數據...
    星期四晚八點閱讀 1,181評論 0 4
  • 墨西哥之行(2017.6.4~6.11)分享:墨西哥國際電力電子暨照明展于當地時間6月6日~6月8日在會議展覽中心...
    禮之用和為貴閱讀 238評論 0 0
  • 我是一個6月份就畢業的學生,是大專生,對,就是大專生!高中沒有好好讀書,也沒有做過什么傷天害理,違法亂紀,驚天動...
    怡淘閱讀 275評論 1 2