MySQL學習總結(2)

1、MySQL表數據類型

MySQL支持多種類型,大致可以分為三類:數值、日期/時間和字符串(字符)類型。

數值類型:嚴格數值數據類型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數值數據類型(FLOAT、REAL和DOUBLE PRECISION)。

日期和時間類型:表示時間值的日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。

字符串類型:字符串類型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。


2、用SQL語句創(chuàng)建表

創(chuàng)建mysql數據表需要:表名、表字段名,定義每個表字段

CREATE TABLE table_name(column_name column_type)

CREATE TABLE runoob_tbl(runood_id INT NOT NULL AUTO_INCREMENT,?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?runood_title VARCHAR(100) NOT NULL,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? submission_date DATE,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?PREMARY_KEY(ronood_id))

ENGTINE = InnoDB DEFAULT CHARSET= utf8;

語句解釋:

NOT NULL:設定該字段數據不為空,當為空值時報錯;

?AUTO_INCREMENT:自動加1,;

VARCHAR(100):字段類型為可變長度的字符串,最大長度為100,當存入的字符串長度為10時,長度為11;

PREMARY_KEY(ronood_id)):設定ronood_id字段為主鍵。


3、用SQL語句向表中添加數據

? ? 語句解釋 ? ? 多種添加方式(指定列名;不指定列名)

INSERT INTO table_name(field1, field2, ...,fieldN)

VALUES(value1, value2, ... ,valueN)

如果數據是字符串型,需要加單引號。

INSERT INTO 多條數據:

INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;


4. 用SQL語句刪除表

? ? 語句解釋 ? ? DELETE ? ? DROP ? ? TRUNCATE ? ? 不同方式的區(qū)別

DROP TABLE table_name ;--刪除表

DELETE 刪除表內數據

DELETE FROM student WHERE T_name = '張三';

TRUNCATE:刪除表內數據,保存表結構。

當不再要該表時,用DROP;當要保留該表,但是要刪除數據,用TRUNCATE;當刪除表中部分數據,用DELETE。

5. 用SQL語句修改表

? ? 修改列名 ? ? 修改表中數據 ? ? 刪除行 ? ? 刪除列 ? ? 新建列 ? ? 新建行

UPDATE table_name SET field1 = new-value1,field2 = new-value2

[WHERE Clause]

UPDATE runoob_tbl SET runoob_title='學習C++' WHERE runood_id = 3;

更改表格runoob_tbl中runood_id為3對應的runood_title字段下面的值為學習C++;?


作業(yè)項目三:超過5名學生的課(難度:簡單)

創(chuàng)建如下所示的courses 表 ,有: student (學生) 和 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名學生的課。

項目四:交換工資(難度:簡單)

創(chuàng)建一個 salary表,如下所示,有m=男性 和 f=女性的值 。

例如:


交換所有的 f 和 m 值(例如,將所有 f 值更改為 m,反之亦然)。要求使用一個更新查詢,并且沒有中間臨時表。


6、表聯結

MySQL別名

INNER JOIN:內連接,或等值連接,獲取兩個表中字段匹配關系的記錄。

LEFT JOIN:左連接,獲取左表所有記錄,即使右表沒有對應匹配的記錄。

RIGHT JOIN:右連接,獲取右表所有記錄,即使左表沒有對應匹配的記錄。



作業(yè):項目五:組合兩張表 (難度:簡單)

在數據庫中創(chuàng)建表1和表2,并各插入三行數據(自己造)

表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



項目六:刪除重復的郵箱(難度:簡單)

編寫一個 SQL 查詢,來刪除?email?表中所有重復的電子郵箱,重復的郵箱里只保留?**Id?***最小?*的那個。

+----+---------+ | Id | Email | +----+---------+ | 1 |?a@b.com?| | 2 |?c@d.com?| | 3 |?a@b.com?| +----+---------+

Id 是這個表的主鍵。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容