目錄
- 創建資料庫
- 洗掉資料庫
- 資料型別
- 創建資料表
- 洗掉資料表
- 插入資料
- 查詢資料
- UPDATE更新
- DELETE陳述句
- WHERE子句
- LIKE子句
- UNION
- 排序
- 分組
- 連接的使用
- 內連接
- 左連接
- 右連接
- ALTER命令
- 洗掉,添加或修改表欄位
- 修改欄位型別及名稱
- ALTER TABLE 對 Null 值和默認值的影響
- 修改表名
- MySQL函式
創建資料庫
CREATE DATABASE database_name;
create database mysql_test;
洗掉資料庫
DROP DATABASE database_name;
> drop database mysql_test;
資料型別
完整資料型別請參考MySQL 資料型別,
MySQL支持所有標準SQL數值資料型別,所以資料型別有很多,這里介紹幾個常用的
數值型別
| 型別 | 大小 | 范圍(有符號) | 范圍(無符號) | 用途 |
|---|---|---|---|---|
| INT或INTEGER | 4 bytes | (-2147483648,2147483647) | (0,4294967295) | 大整數值 |
| FLOAT | 4 bytes | - | - | 單精度浮點數值 |
| DOUBLE | 8 bytes | - | - | 雙精度浮點數值 |
| DECIMAL | 對DECIMAL(M,D) ,如果M>D,為M+2否則為D+2 | 依賴于M和D的值 | 依賴于M和D的值 | 小數值 |
日期型別
| 型別 | 大小( bytes) | 范圍 | 格式 | 用途 |
|---|---|---|---|---|
| DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
字串型別
| 型別 | 大小 | 用途 |
|---|---|---|
| CHAR | 0-255 bytes | 定長字串 |
| VARCHAR | 0-65535 bytes | 變長字串 |
| TEXT | 0-65 535 bytes | 長文本資料 |
總體來說整數用int,小數根據精度選擇float,double和decimal,日期用date,字串用varchar,
然后再說一下字串型別的區別, CHAR 和 VARCHAR 型別類似,但它們保存和檢索的方式不同,它們的最大長度和是否尾部空格被保留等方面也不同,在存盤或檢索程序中不進行大小寫轉換,所以經常變化的欄位用 varchar, 知道固定長度的用 char,盡量用 varchar,超過 255 字符的只能用 varchar 或者 text,能用 varchar 的地方盡量不用 text,
創建資料表
CREATE TABLE table_name (column_name column_type);
UNSIGNED 無符號,即非負
AUTO_INCREMENT 自增
NOT NULL 非空
PRIMARY KEY 主鍵
CREATE table student(
id int PRIMARY KEY auto_increment,
name VARCHAR(20) not null,
address VARCHAR(20) not null)
;
洗掉資料表
DROP TABLE table_name ;
插入資料
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
INSERT into student (name,address) VALUES ('張三','北京');
查詢資料
SELECT column_name,column_name FROM table_name [WHERE Clause]
SELECT id,name,address FROM student;

UPDATE更新
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
UPDATE student set address = '長沙' WHERE `name` = '李四';

DELETE陳述句
DELETE FROM table_name [WHERE Clause]
如果沒有指定 WHERE 子句,MySQL 表中的所有記錄將被洗掉,
WHERE子句
我們知道從 MySQL 表中使用 SQL SELECT 陳述句來讀取資料,如需有條件地從表中選取資料,可將 WHERE 子句添加到 SELECT 陳述句中,
SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
查詢陳述句中你可以使用一個或者多個表,表之間使用逗號, 分割,并使用WHERE陳述句來設定查詢條件,
- 你可以在 WHERE 子句中指定任何條件,
- 你可以使用 AND 或者 OR 指定一個或多個條件,
- WHERE 子句也可以運用于 SQL 的 DELETE 或者 UPDATE 命令,
- WHERE 子句類似于程式語言中的 if 條件,根據 MySQL 表中的欄位值來讀取指定的資料,
LIKE子句
SQL LIKE 子句中使用百分號 %字符來表示任意字符,如果沒有使用百分號 %, LIKE 子句與等號 = 的效果是一樣的,
SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
你可以在 WHERE 子句中指定任何條件,
你可以在 WHERE 子句中使用LIKE子句,
你可以使用LIKE子句代替等號 =,
LIKE 通常與 % 一同使用,類似于一個元字符的搜索,
你可以使用 AND 或者 OR 指定一個或多個條件,
你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句來指定條件,
SELECT id,name,address FROM student WHERE address LIKE '%京';

UNION
UNION 運算子用于連接兩個以上的 SELECT 陳述句的結果組合到一個結果集合中,多個 SELECT 陳述句會洗掉重復的資料,
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
expression1, expression2, ... expression_n: 要檢索的列,
tables: 要檢索的資料表,
WHERE conditions: 可選, 檢索條件,
DISTINCT: 可選,洗掉結果集中重復的資料,默認情況下 UNION 運算子已經洗掉了重復資料,所以 DISTINCT 修飾符對結果沒啥影響,
ALL: 可選,回傳所有結果集,包含重復資料,
CREATE table teacher(
id int PRIMARY key auto_increment,
name VARCHAR(20) not null,
address VARCHAR(20) not null);
創建老師表并插入資料

SELECT address FROM student UNION SELECT address FROM teacher;

排序
如果我們需要對讀取的資料進行排序,我們就可以使用 MySQL 的 ORDER BY 子句來設定你想按哪個欄位哪種方式來進行排序,再回傳搜索結果,
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默認 ASC]], [field2...] [ASC [DESC][默認 ASC]]
你可以使用任何欄位來作為排序的條件,從而回傳排序后的查詢結果,
你可以設定多個欄位來排序,
你可以使用 ASC 或 DESC 關鍵字來設定查詢結果是按升序或降序排列, 默認情況下,它是按升序排列,
你可以添加 WHERE...LIKE 子句來設定條件,
SELECT * FROM student ORDER BY address;

分組
GROUP BY 陳述句根據一個或多個列對結果集進行分組,在分組的列上我們可以使用 COUNT, SUM, AVG,等函式,
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
插入更多資料,并統計各個地址的人數

SELECT address,COUNT(address) as '人數' FROM student GROUP BY address;

連接的使用
你可以在 SELECT, UPDATE 和 DELETE 陳述句中使用 Mysql 的 JOIN 來聯合多表查詢,
JOIN 按照功能大致分為如下三類:
INNER JOIN(內連接,或等值連接):獲取兩個表中欄位匹配關系的記錄,
LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄,
RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用于獲取右表所有記錄,即使左表沒有對應匹配的記錄,
內連接

新建一個分數表,鏈接兩個表列印成績和住址
SELECT student.id,student.`name`,student.address,score.score FROM student JOIN score on student.id = score.id;

左連接
SELECT student.id,student.`name`,student.address,score.score FROM student left JOIN score on student.id = score.id;

右連接
SELECT student.id,student.`name`,student.address,score.score FROM student RIGHT JOIN score on student.id = score.id;

ALTER命令
洗掉,添加或修改表欄位
如下命令使用了 ALTER 命令及 DROP 子句來洗掉以上創建表的 i 欄位:
ALTER TABLE testalter_tbl DROP i;
如果資料表中只剩余一個欄位則無法使用DROP來洗掉欄位,
MySQL 中使用 ADD 子句來向資料表中添加列,如下實體在表 testalter_tbl 中添加 i 欄位,并定義資料型別:
ALTER TABLE testalter_tbl ADD i INT;
執行以上命令后,i 欄位會自動添加到資料表欄位的末尾,
如果你需要指定新增欄位的位置,可以使用MySQL提供的關鍵字 FIRST (設定位第一列), AFTER 欄位名(設定位于某個欄位之后),
修改欄位型別及名稱
如果需要修改欄位型別及名稱, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 ,
例如,把欄位 c 的型別從 CHAR(1) 改為 CHAR(10),可以執行以下命令:
ALTER TABLE testalter_tbl MODIFY c CHAR(10);
使用 CHANGE 子句, 語法有很大的不同, 在 CHANGE 關鍵字之后,緊跟著的是你要修改的欄位名,然后指定新欄位名及型別,嘗試如下實體:
ALTER TABLE testalter_tbl CHANGE i j BIGINT;
ALTER TABLE testalter_tbl CHANGE j j INT;
ALTER TABLE 對 Null 值和默認值的影響
當你修改欄位時,你可以指定是否包含值或者是否設定默認值,
以下實體,指定欄位 j 為 NOT NULL 且默認值為100 ,
ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;
如果你不設定默認值,MySQL會自動設定該欄位默認為 NULL,
修改表名
如果需要修改資料表的名稱,可以在 ALTER TABLE 陳述句中使用 RENAME 子句來實作,
嘗試以下實體將資料表 testalter_tbl 重命名為 alter_tbl:
ALTER TABLE testalter_tbl RENAME TO alter_tbl;
MySQL函式
完整MySQL函式請參考MySQL函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/16399.html
標籤:MySQL
下一篇:MySQL基礎:DML陳述句
