---恢復內容開始---
mysql常用命令
Mysql創建數據表
語法:
CREATE TABLE table_name (column_name column_type);
創建一個“student”表
1 create table student( 2 stu_id INT NOT NULL AUTO_INCREMENT, 3 name CHAR(32) NOT NULL, 4 age INT NOT NULL, 5 register_date DATE, 6 PRIMARY KEY ( stu_id ) 7 );
1.如果你不想字段為NULL可以設置字段的屬性為NOT NULL,在操作數據庫時,如果該字段值為NULL就會報錯。
2.AUTO_INCREMENT定義列為自增屬性,一般用於主鍵,數值就會自動加1.
3.PRIMARY KEY關鍵字用於定義列為主鍵。你可以使用多列來定義主鍵,列間用逗號分隔。
Mysql插入輸入
語法:
insert into table_name(field1,field2,......fieldN)values(value1,value2,........valueN);
插入數據:
mysql> insert into student (name,age,register_date) values ("alex li",22,"2016-03-4") -> ; Query OK, 1 row affected (0.00 sec) mysql> select * from student; +--------+---------+-----+---------------+ | stu_id | name | age | register_date | +--------+---------+-----+---------------+ | 1 | alex li | 22 | 2016-03-04 | +--------+---------+-----+---------------+ 1 row in set (0.00 sec)
Mysql查詢數據
SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ][LIMIT N]
- 查詢語句中你可以使用一個或者多個表,表之間使用逗號(,)分割,並使用WHERE語句來設定查詢條件。
- SELECT 命令可以讀取一條或者多條記錄。
- 你可以使用星號(*)來代替其他字段,SELECT語句會返回表的所有字段數據
- 你可以使用 WHERE 語句來包含任何條件。
- 你可以通過OFFSET指定SELECT語句開始查詢的數據偏移量。默認情況下偏移量為0。
- 你可以使用 LIMIT 屬性來設定返回的記錄數
1 mysql> select * from student limit 3 offset 2; 2 +--------+---------+-----+---------------+ 3 | stu_id | name | age | register_date | 4 +--------+---------+-----+---------------+ 5 | 3 | alex li | 24 | 2016-03-04 | 6 | 4 | alex li | 24 | 2016-03-01 | 7 | 5 | alex li | 24 | 2016-03-02 | 8 +--------+---------+-----+---------------+ 9 3 rows in set (0.00 sec) 10 比如這個SQL ,limit后面跟的是3條數據,offset后面是從第3條開始讀取 11 12 mysql> select * from student limit 3 ,1; 13 +--------+---------+-----+---------------+ 14 | stu_id | name | age | register_date | 15 +--------+---------+-----+---------------+ 16 | 4 | alex li | 24 | 2016-03-01 | 17 +--------+---------+-----+---------------+ 18 1 row in set (0.00 sec)
Mysql where子句
- 語法:
-
SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
以下為操作符列表,可用於 WHERE 子句中。
下表中實例假定 A為10 B為20
操作符 描述 實例 = 等號,檢測兩個值是否相等,如果相等返回true (A = B) 返回false。 <>, != 不等於,檢測兩個值是否相等,如果不相等返回true (A != B) 返回 true。 > 大於號,檢測左邊的值是否大於右邊的值, 如果左邊的值大於右邊的值返回true (A > B) 返回false。 < 小於號,檢測左邊的值是否小於右邊的值, 如果左邊的值小於右邊的值返回true (A < B) 返回 true。 >= 大於等於號,檢測左邊的值是否大於或等於右邊的值, 如果左邊的值大於或等於右邊的值返回true (A >= B) 返回false。 <= 小於等於號,檢測左邊的值是否小於於或等於右邊的值, 如果左邊的值小於或等於右邊的值返回true (A <= B) 返回 true。 使用主鍵作為WHERE子句的條件查詢是非常快速的。
-
select * from student where register_date > '2016-03-04';
Mysql update修改
-
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] update student set age=22 ,name="Alex Li" where stu_id>3;
Mysql delete刪除
- 語法:
-
FROM table_name [WHERE Clause]<br><br>delete from student where stu_id=5;
Mysql like子句
-
1 SELECT field1, field2,...fieldN table_name1, table_name2... 2 WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue' 3 4 5 select *from student where name binary like "%Li"; 6 select *from student where name binary like binary "%Li"; #只匹配大寫
Mysql排序
-
1 SELECT field1, field2,...fieldN table_name1, table_name2... 2 ORDER BY field1, [field2...] [ASC [DESC]] 3 使用 ASC 或 DESC 關鍵字來設置查詢結果是按升序或降序排列。 默認情況下,它是按升序排列。 4 select *from student where name like binary "%Li" order by stu_id desc;
Mysql GROUP BY語句
-
1 SELECT column_name, function(column_name) 2 FROM table_name 3 WHERE column_name operator value 4 GROUP BY column_name;
實例
-
1 mysql> SELECT * FROM employee_tbl; 2 +----+--------+---------------------+--------+ 3 | id | name | date | singin | 4 +----+--------+---------------------+--------+ 5 | 1 | 小明 | 2016-04-22 15:25:33 | 1 | 6 | 2 | 小王 | 2016-04-20 15:25:47 | 3 | 7 | 3 | 小麗 | 2016-04-19 15:26:02 | 2 | 8 | 4 | 小王 | 2016-04-07 15:26:14 | 4 | 9 | 5 | 小明 | 2016-04-11 15:26:40 | 4 | 10 | 6 | 小明 | 2016-04-04 15:26:54 | 2 | 11 +----+--------+---------------------+--------+ 12 13 接下來我們使用 GROUP BY 語句 將數據表按名字進行分組,並統計每個人有多少條記錄: 14 mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; 15 +--------+----------+ 16 | name | COUNT(*) | 17 +--------+----------+ 18 | 小麗 | 1 | 19 | 小明 | 3 | 20 | 小王 | 2 | 21 +--------+----------+ 22 3 rows in set (0.01 sec) 23 24 使用 WITH ROLLUP 25 mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; 26 +--------+--------------+ 27 | name | singin_count | 28 +--------+--------------+ 29 | 小麗 | 2 | 30 | 小明 | 7 | 31 | 小王 | 7 | 32 | NULL | 16 | 33 +--------+--------------+ 34 4 rows in set (0.00 sec) 35 其中記錄 NULL 表示所有人的登錄次數。<br> 36 其中記錄 NULL 表示所有人的登錄次數。<br> 37 我們可以使用 coalesce 來設置一個可以取代 NUll 的名稱,coalesce 語法: 38 mysql> SELECT coalesce(name, '總數'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
Mysql alter命令
- 當需要修改數據表明或者修改數據表字段時,就需要使用MySQLALTER命令。
- 刪除,添加修改表字段
-
alter table student drop register_date; #從student表刪除register_date 字段alter table student add phone int(11) not null; #添加phone字段
修改字段類型及名稱
- 如果需要修改字段類型及名稱,就可以在ALTER命令中使用MODIFY或CHANGE子句。
- 例如:把字段c的類型從char(1)改為char(10),可以執行以下命令:
-
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
使用change子句,語法有很大的不用。在change關鍵字之后,緊跟着的是你要修改的字段名,然后指定新字段及名稱類型。嘗試如下實例:
-
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT; mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
ALTER TABLE 對NULL值和默認值的影響
- 當你修改字段時,你可以指定是否包含或者是否設置默認值。
- 當你修改字段時,指定字段j為NOTnull切默認值為100
-
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
修改表名
-
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
- Mysql null值處理
- 已經知道Mysql使用sql select 命令及where子句來讀取數據表中的數據,但是當提供的查詢條件字段為NULL時,該命令可能無法工作。
- 為了處理這種清空,MYSQL提供了三大運算符:
- is null:當列的值是NULL,此運算符返回True。
- is not null:當列的值不為空,此運算符返回True。
- <=>比較運算符當比較的連個值為NULL時返回True。關於 NULL 的條件比較運算是比較特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。在MySQL中,NULL值與任何其它值的比較(即使是NULL)永遠返回false,即 NULL = NULL 返回false 。MySQL中處理NULL使用IS NULL和IS NOT NULL運算符。
- MySQL連接(left join,right join,inner join,full join)
- 在已經學會了如何在一張表里讀取數據,這是相對簡單的,但是在真正的應用中jingch需要從多個數據表中讀取數據。
- 這里主要介紹如何使用Mysql的JOIN在兩個或多個表中查詢數據。
- 可以使用select,update和delete語句中使用Mysql的JOIN來聯合奪標查詢。
- JOIN按照功能大致分為如下三類:
- INSERT JOIN(內連接,或多值連接):獲取兩個表中字段匹配的記錄
- LEFI JOIN(做鏈接):獲取左表所有記錄,即使游標沒有對應匹配的記錄。
- RIGHI JOIN(右連接):與LEFT JOIN相反,用於獲取右表的所有記錄。
---恢復內容結束---