MySQL 支持數值、日期時間和字符串三種類型。
具體的類型說明能夠參考菜鳥教程的總結mysql
CREATE TABLE table_name ( prod_id CHAR(10) NOT NULL, vend_id CHAR(10) NOT NULL, prod_name CHAR(254) NOT NULL, prod_price DECIMAL(8,2) NOT NULL DEFAULT 0.00, prod_desc TEXT(1000) NULL );
語句解釋sql
類型包括數值、字符和日期類型;
NULL / NOT NULL
表示是否容許該列缺值;若是不指定NOT NULL 則默認 NULL;DEFAULT
指明默認值。安全
CREATE TABLE tableName( id INT PRIMARY KEY ); -- OR CREATE TABLE tableName( id INT, PRIMARY KEY (id) );
建完表以後,增長主鍵學習
ALTER TABLE tableName ADD PRIMARY KEY(id)
INSERT INTO table_name VALUES(xxxxx);
語句解釋: 向表中插入數據,數據在VALUES 子句中給出;VALUES 按照建立表的列的順序填寫(這樣會不安全);.net
INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES('1000000006', 'Toy Land', '123 Any Street', 'New York', 'NY', '11111', 'USA', NULL, NULL);
沒有指明的列是空的(要求沒指出的列容許空或者有默認值);code
DROP TABBLE table_name;
語句解釋, DROP 永久刪除表,沒有確認也不能撤銷;htm
當你再也不須要該表時, 用 drop;當你仍要保留該表,但要刪除全部記錄時, 用 truncate;當你要刪除部分記錄時(always with a WHERE clause), 用 delete。blog
DELETE 刪除行 DROP 刪除表 TRUNCATE 保留表,刪除數據
ALTER TABLE
-- 將test字段改成test1 -- ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段類型 約束條件 ALTER TABLE user10 CHANGE test test1 CHAR(32) NOT NULL DEFAULT '123';
--修改列類型 ALTER TABLE tableName ALTER COLUMN columnName VARCHAR(4000) --修改數據 update 表名 set 列名='須要修改的值' where 列名='原來的值'
DELETE FROM 表名稱 WHERE 列名稱 = 值
ALTER TABLE Vendors DROP COLUMN vend_phone;
ALTER TABLE Vendors ADD vend_phone CHAR(20);
INSERT INTO tablename [(columns, ...)] VALUES(values, ...)
ALTER TABLE test RENAME test1
+---------+------------+ | student | class | +---------+------------+ | A | Math | | B | English | | C | Math | | D | Biology | | E | Math | | F | Computer | | G | Math | | H | Math | | I | Math | | A | Math | +---------+------------+
編寫一個 SQL 查詢,列出全部超過或等於5名學生的課。
Note:
學生在每一個課中不該被重複計算。教程
解答:
CREATE TABLE courses( student VARCHAR(64) NOT NULL, class VARCHAR(20) ); INSERT INTO courses VALUES('A','Math'); INSERT INTO courses VALUES('B','English'); INSERT INTO courses VALUES('C','Math'); INSERT INTO courses VALUES('D','Biology'); INSERT INTO courses VALUES('E','Math'); INSERT INTO courses VALUES('F','Computer'); INSERT INTO courses VALUES('G','Math'); INSERT INTO courses VALUES('H','Math'); INSERT INTO courses VALUES('I','Math'); INSERT INTO courses VALUES('A','Math'); SELECT class FROM courses GROUP BY class HAVING COUNT(DISTINCT student)>=5
| 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 |
CREATE TABLE salary( id INT NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL, sex CHAR NOT NULL, salary int ); INSERT INTO salary VALUES(1,'A','m',2500); INSERT INTO salary VALUES(2,'B','f',5500); INSERT INTO salary VALUES(3,'C','m',5000); INSERT INTO salary VALUES(4,'D','f',1500); INSERT INTO salary VALUES(5,'E','f',2000); UPDATE salary SET sex = CASE WHEN sex='f' THEN 'm' WHEN sex='m' THEN 'f' ELSE sex END; SELECT * FROM salary;
參考瞭如下博客