MySQL 基礎(chǔ) (二)- 表操作

1.MySQL表數(shù)據(jù)類型

  • MySQL支持多種類型,大致可以分為三類:數(shù)值、日期/時(shí)間和字符串(字符)類型。
    具體的數(shù)據(jù)類型可見(jiàn):數(shù)據(jù)類型

2.用SQL語(yǔ)句創(chuàng)建表

  • 語(yǔ)句解釋:CREATE TABLE table_name (column_name column_type);
  • 設(shè)定列類型 、大小、約束:常見(jiàn)的列類型有int、char、varchar、varchar(10)這個(gè)字符串類型長(zhǎng)度就是10個(gè)字符,不帶n的:字符或者數(shù)字占一個(gè)字節(jié),漢字為兩個(gè)字節(jié),帶n的:雙字節(jié)存儲(chǔ),字母或者數(shù)字、漢字兩個(gè)字節(jié)。
  • 設(shè)定主鍵:PRIMARY KEY關(guān)鍵字用于定義列為主鍵。 您可以使用多列來(lái)定義主鍵,列間以逗號(hào)分隔。如: PRIMARY KEY ( runoob_id )。

3.用SQL語(yǔ)句向表中添加數(shù)據(jù)

  • 語(yǔ)句解釋:MySQL 表中使用 INSERT INTO SQL語(yǔ)句來(lái)插入數(shù)據(jù)。
  • 多種添加方式(指定列名;不指定列名):

指定列名:

mysql> INSERT INTO runoob_tbl 
    -> (runoob_title, runoob_author, submission_date)
    -> VALUES
    -> ("學(xué)習(xí) PHP", "菜鳥(niǎo)教程", NOW());

不指定列名:

mysql> INSERT INTO runoob_tbl
    -> VALUES
    -> (0, "JAVA 教程", "RUNOOB.COM", '2016-05-06');

4.用SQL語(yǔ)句刪除表

  • 語(yǔ)句解釋:刪除表用 drop,就是啥都沒(méi)了;
  • DELETE:刪除表內(nèi)數(shù)據(jù),用 delete。格式為:delete from 表名 where 刪除條件;
  • DROP:刪除表用 drop,就是啥都沒(méi)了;格式為:drop table 表名;
  • TRUNCATE:清除表內(nèi)數(shù)據(jù),保存表結(jié)構(gòu),用 truncate。格式為:truncate table 表名;
  • 不同方式的區(qū)別:
    1、當(dāng)你不再需要該表時(shí), 用 drop;
    2、當(dāng)你仍要保留該表,但要?jiǎng)h除所有記錄時(shí), 用 truncate;
    3、當(dāng)你要?jiǎng)h除部分記錄時(shí), 用 delete。

5.用SQL語(yǔ)句修改表

  • 修改列名: ALTER TABLE testalter_tbl CHANGE 老列名 新列名;
  • 修改表中數(shù)據(jù):update 表名 set 字段名=‘新內(nèi)容’ + where條件;
  • 刪除行:DELETE FROM table_name WHERE condition;
  • 刪除列:alter table 表名 drop column 列名;
  • 新建列:alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null;
  • 新建行:INSERT INTO table_name ( field1, field2,...fieldN ) VALUES
    ( value1, value2,...valueN );

作業(yè)#

項(xiàng)目三:超過(guò)5名學(xué)生的課(難度:簡(jiǎn)單)
創(chuàng)建如下所示的courses 表 ,有: student (學(xué)生) 和 class (課程)。
例如,表:
+---------+------------+
| student | class |
+---------+------------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Computer |
| G | Math |
| H | Math |
| I | Math |
| A | Math |
+---------+------------+

編寫(xiě)一個(gè) SQL 查詢,列出所有超過(guò)或等于5名學(xué)生的課。
應(yīng)該輸出:
+---------+
| class |
+---------+
| Math |
+---------+
Note:
學(xué)生在每個(gè)課中不應(yīng)被重復(fù)計(jì)算。

select class from courses group by class having count(distinct student)>=5
image.png

項(xiàng)目四:交換工資(難度:簡(jiǎn)單)
創(chuàng)建一個(gè) salary表,如下所示,有m=男性 和 f=女性的值 。
例如:

id name sex salary
1 A m 2500
2 B f 1500
3 C m 5500
4 D f 500

交換所有的 f 和 m 值(例如,將所有 f 值更改為 m,反之亦然)。要求使用一個(gè)更新查詢,并且沒(méi)有中間臨時(shí)表。
運(yùn)行你所編寫(xiě)的查詢語(yǔ)句之后,將會(huì)得到以下表:

id name sex salary
1 A f 2500
2 B m 1500
3 C f 5500
4 D m 500
update salary set sex=if(sex='f','m','f')
image.png

2.2 MySQL 基礎(chǔ) (三)- 表聯(lián)結(jié)

學(xué)習(xí)內(nèi)容#

  • MySQL別名:MySQL支持兩種別名,稱為列別名和表別名。
  • INNER JOIN:(等值連接) 只返回兩個(gè)表中聯(lián)結(jié)字段相等的行。
  • LEFT JOIN:(左聯(lián)接) 返回包括左表中的所有記錄和右表中聯(lián)結(jié)字段相等的記錄 。
  • CROSS JOIN:返回被連接的兩個(gè)表的笛卡爾積,返回結(jié)果的行數(shù)等于兩個(gè)表行數(shù)的乘積。
  • 自連接:自連接可以將自身表的一個(gè)鏡像當(dāng)作另一個(gè)表來(lái)對(duì)待。
  • UNION:合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結(jié)果集。
    以上幾種方式的區(qū)別和聯(lián)系

作業(yè)#

項(xiàng)目五:組合兩張表 (難度:簡(jiǎn)單)
在數(shù)據(jù)庫(kù)中創(chuàng)建表1和表2,并各插入三行數(shù)據(jù)(自己造)
表1: Person
+-------------+---------+
| 列名 | 類型 |
+-------------+---------+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
+-------------+---------+
PersonId 是上表主鍵

表2: Address
+-------------+---------+
| 列名 | 類型 |
+-------------+---------+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
+-------------+---------+
AddressId 是上表主鍵

編寫(xiě)一個(gè) SQL 查詢,滿足條件:無(wú)論 person 是否有地址信息,都需要基于上述兩表提供 person 的以下信息:FirstName, LastName, City, State

select  FirstName,LastName,City,State  from Person a right join Address b on a.PersonId = b.PersonId
image.png

項(xiàng)目六:刪除重復(fù)的郵箱(難度:簡(jiǎn)單)
編寫(xiě)一個(gè) SQL 查詢,來(lái)刪除 email 表中所有重復(fù)的電子郵箱,重復(fù)的郵箱里只保留 Id 最小 的那個(gè)。
+----+---------+
| Id | Email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+
Id 是這個(gè)表的主鍵。
例如,在運(yùn)行你的查詢語(yǔ)句之后,上面的 Person表應(yīng)返回以下幾行:
+----+------------------+
| Id | Email |
+----+------------------+
| 1 | a@b.com |
| 2 | c@d.com |
+----+------------------+

delete p1 from email p1,email p2 where p1.Email = p2.Email and p1.ID > p2.ID
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識(shí) 1 MySQL數(shù)據(jù)庫(kù)概要 2 簡(jiǎn)單MySQL環(huán)境 3 數(shù)據(jù)的存儲(chǔ)和獲取 4 MySQL基本操...
    Kingtester閱讀 8,067評(píng)論 5 115
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,985評(píng)論 0 9
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    草里有只羊閱讀 18,558評(píng)論 0 85
  • 轉(zhuǎn)眼間,基金課馬上畢業(yè)了,一路從小白營(yíng)走來(lái),驀然回首,有種滄海桑田、物是人非的感覺(jué),好像自己突然變了個(gè)人一樣。...
    張衛(wèi)樂(lè)閱讀 376評(píng)論 0 8
  • 打開(kāi)推薦電影欄,它出現(xiàn)在我的視線里,因探險(xiǎn)懸疑題材抓住了我的眼球,于是開(kāi)始了了解它的旅程。 開(kāi)頭采用剪紙?jiān)貏?dòng)畫(huà)簡(jiǎn)...
    慕意謙華閱讀 266評(píng)論 0 0

友情鏈接更多精彩內(nèi)容