MySQL常用語法總結
一.創建Web數據庫
1.登陸到數據庫
mysql -h hostname -u username -p
mysql -h hostname -u username -D dbname -p
2.創建數據庫
CREATE database dbname
3.使用數據庫
USE dbname
4.創建數據庫表
CREATE TABLE tablename (columns)
5.列的數據
create table customers(
customerid int unsigned not null auto_increment primary key,
name char(50) not null,
address char(100) not null,
city char(30) not null
);
create table orders
( orderid int unsigned not null auto_increment primary key,customerid int unsigned not null,amount float(6,2),date date not null
);
6.使用SHOW和DESCRIBE來查看數據庫
6.1 查看數據庫
show databases;
6.2 查看某個數據庫表
show tables;
6.2 查看某個數據庫表的詳細信息(例如customers表)
describe customers;
desc customers;
7.創建索引
CREATE [UNIQUE|FULLTEXT] INDEX index_name ON table_name (index_column_name [(length)] [ASC|DESC], ...)
二、使用MySQL數據庫
1.在數據庫中插入數據
INSERT [INTO] table [(column1, column2, column3, ...)] VALUES (value1, value2, value3, ...);
例如在 customers 表中插入數據:
insert into customers (name, city) values ('lanhaixuan', 'Wuhan');
或者另一種方法:
insert into customers set name = 'wallet', city = 'Wuhan';
再例如在orders表中插入數據:
insert into orders(customerid, amount, date) values(1, 12.00, '2017-11-1');
insert into orders(customerid, amount, date) values(2, 15.00, '2017-11-1');
注意:后面會使用這些數據
2.從數據庫中獲取數據
SELECT [options] items [INTO file_details] FROM tables [WHERE conditions][GROUP BY group_type][HAVING where_definition][ORDER BY order_type][LIMIT limit_criteria][PROCEDURE proc_name(arguments)][lock_options];
select name, city from customers;
select * from customers;
' * '代表通配符,獲得所有的列
2.1 獲取滿足條件的數據
select * from customers where city = "Wuhan";
運算符 | 名稱 | 例子 |
---|---|---|
= | 等于 | customerid=3 |
> | 大于 | amount>60.00 |
< | 小于 | amount<60.00 |
>= | 大于或等于 | amount>=60.00 |
<= | 小于或等于 | amount<=60.00 |
!=或<> | 不等于 | amount!=60.00 |
IS NOT NULL | n/a | 地址不為空 |
IS NULL | n/a | 地址不為空 |
BETWEEN | n/a | amount between 1113 and 1122 |
IN | n/a | city in ("Wuhan", "Beijing") |
NOT IN | n/a | city not in ("Wuhan", "Beijing") |
LIKE | 匹配模式 | name like ("lan%") |
NOT LIKE | 匹配模式 | name not like ("walle_") |
REGEXP | 正則表達式 | name regexp '^lanhaixuan$' |
LIKE 使用簡單SQL模式匹配, 模式可以由常規文本加上匹配任意數量的字符“%”,和只匹配一個字符的“_”組成。
REGEXP關鍵字適用于正則表達式匹配。
2.2 從多個表中獲取數據
select orders.orderid, orders.amount, orders.date from customers, orders where customers.name = 'lanhaixuan' and customers.customerid = orders.customerid;
該SQL查詢使用一個左關聯將customers表和orders表關聯起來,輸出結果為:
orderid amount date
2.2 分組和合計數據
例如,可以如下計算一個訂單總金額的平均值:
select avg(amount) from orders;
輸出結果為:
avg(amount)
類似還有 MIN、MAX、SUN等合計函數
要獲取customer更詳細的信息,可以使用group by子句。例如,按照顧客數分組瀏覽。
select customerid, avg(amount) from orders group by customerid;
2.3 選擇要返回的行
使用LIMIT子句,可以用來返回指定的行。它帶有兩個參數:起始行號與返回行數
select name from customers limit 1, 2;
2.4 使用子查詢
子查詢最常見的用法是用一個查詢的結果作為另一個查詢比較的條件。例如,如果希望找到一個金額最大的訂單,可以使用如下所示的查詢:
select customerid, amount from orders where amount = (select max(amount) from orders);
返回結果:
customerid amount
3. 更新數據庫記錄
通常,除了從數據庫中獲取數據外,我們還希望修改這些數據。可以使用UPDATE語句來完成這個任務
UPDATE語句的常用格式是:
UPDATE [LOW_PRIORITY] [IGNORE] tablename SET column1 = experssion1, column2 = expression2, ...
[WHERE condition]
[ORDER BY order_criteria]
[LIMIT number]
如果希望修改一行,例如,要更行一個顧客的地址,可以使用以下所示語句:
update customers set address = 'Beijing' where customerid = 2;
4. 創建后修改表
除了可以更新行,可能還需要改變數據庫中表的結構。要實現這個目的,可以使用ALTER TABLE語句。其基本格式為:
ALTER TABLE [IGNORE] tablename alteration [, alteration, ...]
一個常見的情況,特定的列空間沒有“足夠大”,不能容納它必須容納的數據。例如,在 customers 表中,已經允許名稱可以達到50個字符。在開始接收一些數據后,我們可能發現一些名稱因為太長而被截斷了。我們可以通過改變列的數據類型,使其長度為70個字符:
alter table customers modify name char(70) not null;
另外一個經常出現的問題需要新增一列。例如要添加訂單表中的稅:
alter table orders add tax float(6, 2) after amount;
刪除一列也是經常出現的問題。要刪除一列,只要加上如下語句即可:
alter table orders drop tax;
4. 刪除數據庫中的記錄
從數據庫刪除行的操作很簡單,可以使用DELETE語句完成,DELETE語句常見格式如下所示:
DELETE [LOW_PRIORITY][QUICK][IGNORE] FROM table
[WHERE condition]
[ORDER BY order_clos]
[LIMIT number]
如果將上述代碼改寫為:
delete from table;
所有表中的行都將被刪除。比如刪除特定的一行:
delete from customers where customerid=1;
LIMIT子句可用于限制實際刪除的最大行數
4.1 表的刪除
DROP TABLE table;
4.2 數據可刪除
DROP DATABASE database;