Mysql打卡第三天
MySQL表數據類型
- 數值類型
- 日期和時間類型
- 字符串類型
用SQL語句創建表
語句解釋
CREATE TABLE table_name (
column1 datatyoe,
column2 datatyoe,
column3 datatyoe,
);
table_name -> 表名
column -> 列名
datatype -> 數據類型
設定列類型、大小、約束
列類型
-
建表時設置,如上方法
-
添加列時設定
ALTER TABLE table_name ADD column_name datatype;
-
修改列類型
ALTER TABLE table_name ALTER COLUMN column_name datatype;
大小
-
建表時設置,在類型後面用括號表示其最大長度
-
修改列大小
ALTER TABLE table_name modify column column_name varchar(50) ;
約束
-
建表時設置,在列大小後面增加
-
修改列約束
ALTER table table_name add constraint my_un unique(column_name);
設定主鍵
-
建表時是這,在最後加入
PRIMARY KEY (column_name)
; -
修改表約束爲主鍵約束
ALTER table table_name add constraint key_name primary key(column_name);
用SQL語句向表中添加數據
語句解釋
-
不指定列名
INSERT INTO table_name VALUES ('value1', 'value2', 'value3', 'value4');
根據列名的順序插入值,不插入的要用
null
填充 -
指定列名
INSERT INTO table_name (column1,column2,column3) VALUES (value1,value2,value3);
根據列名的順序插入值
用SQL語句刪除表
-
DELETE
DELETE FROM table_name;
系統一行一行地刪除表的內容,表的結構還存在,不釋放空間,可以回滾恢復;
-
DROP
DROP TABLE table_name;
直接刪除表內容和結構,釋放空間,沒有備份表之前要慎用;
-
TRUNCATE
TRUNCATE TABLE table_name;
直接先刪除表的內容,再建表,可以釋放空間,沒有備份表之前要慎用。
MySQL別名
SELECT column1 AS my_name FROM table_name my_table_name;
用 AS 或者省略
作業
項目三:超過5名學生的課(難度:簡單)
創建如下所示的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名學生的課。
應該輸出:
±--------+
| class |
±--------+
| Math |
±--------+
Note:
學生在每個課中不應被重複計算。
select class from courses GROUP BY class HAVING COUNT( DISTINCT student) >= 5
項目四:交換工資(難度:簡單)
創建一個 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 = ( CASE WHEN 'SEX' = 'f' THEN 'm' ELSE 'm' END);