1.MySQL表數(shù)據(jù)類型
- MySQL支持多種類型剧腻,大致可以分為三類:數(shù)值耻警、日期/時間和字符串(字符)類型隔嫡。
具體的數(shù)據(jù)類型可見:數(shù)據(jù)類型
2.用SQL語句創(chuàng)建表
- 語句解釋:CREATE TABLE table_name (column_name column_type);
- 設(shè)定列類型 、大小甘穿、約束:常見的列類型有int腮恩、char、varchar温兼、varchar(10)這個字符串類型長度就是10個字符秸滴,不帶n的:字符或者數(shù)字占一個字節(jié),漢字為兩個字節(jié)募判,帶n的:雙字節(jié)存儲荡含,字母或者數(shù)字、漢字兩個字節(jié)届垫。
- 設(shè)定主鍵:PRIMARY KEY關(guān)鍵字用于定義列為主鍵释液。 您可以使用多列來定義主鍵,列間以逗號分隔装处。如: PRIMARY KEY (
runoob_id
)误债。
3.用SQL語句向表中添加數(shù)據(jù)
- 語句解釋:MySQL 表中使用 INSERT INTO SQL語句來插入數(shù)據(jù)。
- 多種添加方式(指定列名;不指定列名):
指定列名:
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("學(xué)習(xí) PHP", "菜鳥教程", NOW());
不指定列名:
mysql> INSERT INTO runoob_tbl
-> VALUES
-> (0, "JAVA 教程", "RUNOOB.COM", '2016-05-06');
4.用SQL語句刪除表
- 語句解釋:刪除表用 drop寝蹈,就是啥都沒了;
- DELETE:刪除表內(nèi)數(shù)據(jù)李命,用 delete。格式為:delete from 表名 where 刪除條件;
- DROP:刪除表用 drop躺盛,就是啥都沒了项戴;格式為:drop table 表名;
- TRUNCATE:清除表內(nèi)數(shù)據(jù),保存表結(jié)構(gòu)槽惫,用 truncate周叮。格式為:truncate table 表名;
- 不同方式的區(qū)別:
1、當(dāng)你不再需要該表時界斜, 用 drop;
2仿耽、當(dāng)你仍要保留該表,但要刪除所有記錄時各薇, 用 truncate;
3项贺、當(dāng)你要刪除部分記錄時, 用 delete峭判。
5.用SQL語句修改表
- 修改列名: 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è)#
項目三:超過5名學(xué)生的課(難度:簡單)
創(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 |
+---------+------------+
編寫一個 SQL 查詢林螃,列出所有超過或等于5名學(xué)生的課奕删。
應(yīng)該輸出:
+---------+
| class |
+---------+
| Math |
+---------+
Note:
學(xué)生在每個課中不應(yīng)被重復(fù)計算。
select class from courses group by class having count(distinct student)>=5
項目四:交換工資(難度:簡單)
創(chuàng)建一個 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谨设,反之亦然)。要求使用一個更新查詢缎浇,并且沒有中間臨時表扎拣。
運行你所編寫的查詢語句之后,將會得到以下表:
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')
2.2 MySQL 基礎(chǔ) (三)- 表聯(lián)結(jié)
學(xué)習(xí)內(nèi)容#
- MySQL別名:MySQL支持兩種別名华畏,稱為列別名和表別名鹏秋。
- INNER JOIN:(等值連接) 只返回兩個表中聯(lián)結(jié)字段相等的行。
- LEFT JOIN:(左聯(lián)接) 返回包括左表中的所有記錄和右表中聯(lián)結(jié)字段相等的記錄 亡笑。
- CROSS JOIN:返回被連接的兩個表的笛卡爾積侣夷,返回結(jié)果的行數(shù)等于兩個表行數(shù)的乘積。
- 自連接:自連接可以將自身表的一個鏡像當(dāng)作另一個表來對待仑乌。
- UNION:合并兩個或多個 SELECT 語句的結(jié)果集百拓。
以上幾種方式的區(qū)別和聯(lián)系
作業(yè)#
項目五:組合兩張表 (難度:簡單)
在數(shù)據(jù)庫中創(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 是上表主鍵
編寫一個 SQL 查詢,滿足條件:無論 person 是否有地址信息衙传,都需要基于上述兩表提供 person 的以下信息:FirstName, LastName, City, State
select FirstName,LastName,City,State from Person a right join Address b on a.PersonId = b.PersonId
項目六:刪除重復(fù)的郵箱(難度:簡單)
編寫一個 SQL 查詢决帖,來刪除 email 表中所有重復(fù)的電子郵箱,重復(fù)的郵箱里只保留 Id 最小 的那個蓖捶。
+----+---------+
| Id | Email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+
Id 是這個表的主鍵地回。
例如,在運行你的查詢語句之后俊鱼,上面的 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