MySQL基本操作整理
一、關於表的操作
1. 建表
CREATE TABLE 表名(列名 資料型別 是否可以為NULL值, 列名 資料型別 是否可以為NULL值, 列名 資料型別 是否可以為NULL值 PRIMARY KEY(列名,列名) );
CREATE TABLE 'student'('id' int(11) NOT NULL, 'name' varchar(40) NOT NULL, PRIMARY KEY('id') ); 或者 CREATE TABLE 'student'('id' int(11) NOT NULL PRIMARY KEY, 'name' varchar(40) NOT NULL );
2. 利用查詢結果建表
CREATE TABLE 表名1 AS SELECT 列名,列名,... FROM 表名2 WHERE 條件;
CREATE TABLE 'student_new' AS SELECT id,name FROM student WHERE id>=10;
3. 更新表
增加列 :ALTER TABLE 表名 ADD COLUMN 列名 資料型別 是否可以為NULL值;
刪除列:ALTER TABLE 表名 DROP COLUMN 列名;
ALTER TABLE 'student' ADD COLUMN 'sex' varchar(4) NOT NULL; ALTER TABLE 'student' DROP COLUMN 'sex';
4. 重命名錶
RENAME TABLE 舊錶名 TO 新表名;
RENAME TABLE student TO stu;
5. 刪除表
DROP TABLE 表名;
DROP TABLE stu;
二、關於資料的操作
1. 增
INSERT INTO 表名(列名,列名,……) VALUES (值,值,……), (值,值,……);
INSERT INTO stu1(id,name,sex) VALUES (1,'aa','f'), (2,'bb','m');
2. 將查詢結果插入表
INSERT INTO 表名(列名,列名,……) SELECT 列名,列名,…… FROM 表名 WHERE 條件;
INSERT INTO stu1(id,name)
SELECT id,name FROM student WHERE id<20;
3. 刪
DELETE FROM 表名 WHERE 條件;
DELETE FROM student WHERE id>25;
4. 查
SELECT 列名,列名,…… FROM 表名 JOIN 表名 ON 條件 WHERE 條件 AND 條件 GROUP BY 列名 HAVING 條件 ORDER BY 列名 LIMIT m,n;
5. 改
UPDATE 表名 SET 列名=值,列名=值,…… WHERE 條件;
UPDATE sutdent SET name = 'dd'
WHERE id = 10;
三、常用函式
1. 日期時間函式
1.1 獲取
NOW( )=CURRENT_TIMESTAMP( ) ——獲得系統當前日期和時間 ‘2018-11-13 14:13:05’;
CURDATE( ) ——獲得系統當前日期‘2018-11-13’;
CURTIME( ) ——獲得系統當前時間‘14:13:05’;
DATE(‘2018-11-13 14:13:05’) ——返回日期部分‘2018-11-13’;
TIME(‘2018-11-13 14:13:05’) ——返回時間部分‘14:13:05’;
YEAR(‘2018-11-13 14:13:05’) ——返回年‘2018’;
MONTH(‘2018-11-13 14:13:05’) ——返回月‘11’;
DAY(‘2018-11-13 14:13:05’) ——返回日‘13’;
HOUR(‘2018-11-13 14:13:05’) ——返回時‘14’;
MINUTE(‘2018-11-13 14:13:05’) ——返回分‘13’;
SECOND(‘2018-11-13 14:13:05’) ——返回秒‘05’;
EXTRACT(YEAR_MONTH FROM ‘2018-11-13 14:13:05’) ——返回日期的一部分,年月‘2018-11’;
DAYOFYEAR(‘2018-11-13') ——判斷2018-11-13是一年裡的第幾天;
DAYOFMONTH(‘2018-11-13') ——判斷2018-11-13是一月裡的第幾天;
DAYOFWEEK(‘2018-11-13') ——判斷2018-11-13是一週裡的第幾天;
DAYNAME(‘2018-11-13') ——返回所屬星期名稱‘Tuesday’;
MONTHNAME(‘2018-11-13') ——返回所屬月份名稱‘November’;
1.2 轉換
STR_TO_DATE(‘11.13. 2018 14:13:05’, '%m.%d.%Y %H:%m:%s') ——返回標準形式‘2018-11-13 14:13:05’;
DATE_FORMAT(‘2018-11-13 14:13:05’, '%Y/%m/%d %H/%i/%s') ——按format形式返回日期‘2018/11/13 14/13/05’;
1.3 計算
DATEDIFF(date1, date2) ——返回兩個日期相差的天數date1-date2;
TIMEDIFF(date1, date2)——返回兩個日期相差的時間date1-date2;
DATE_ADD(‘2018-11-13', INTERVAL 1 DAY)
= ‘2018-11-13' + INTERAVL 1 DAY
= ADDDATE(‘2018-11-13', INTERVAL 1 DAY) ——返回加上一天的日期 ‘2018-11-14’;
DATE_SUB(‘2018-11-13', INTERVAL 1 MONTH)
= ‘2018-11-13' - INTERAVL 1 MONTH
= SUBDATE(‘2018-11-13', INTERVAL 1 MONTH) ——返回減去一月的日期 ‘2018-10-13’;
2. 數值處理函式
PI( ) ——返回pi值;
RAND( ) ——返回0-1之間的一個隨機數;
COS(X), SIN(X), TAN(X) ——三角函式計算;
ABS(X) ——返回X的絕對值;
EXP(X) ——返回e的X次方;
SQRT(X) —— 返回根號X;
MOD(X,Y) ——返回X/Y的餘;
DIV(X,Y) ——返回X整除Y的值;
ROUND(X,Y) ——對X保留Y位小數,Y可以取負值;
TRUNCATE(X,Y) ——對X,在小數點後Y位截斷;
3. 文字處理函式
3.1 整理
LTRIM(' xyz123 ') ——刪除左側空格‘xyz123 ’;
RTRIM(' xyz123 ') ——刪除右側空格‘ xyz123’;
TRIM(' xyz123 ') ——刪除兩側空格‘xyz123’;
3.2 轉換
UPPER('abcDEF')——轉大寫‘ABCDEF’;
LOWER('abcDEF')——轉小寫‘abcdef’;
3.3 獲取
LENGTH('abcdEF') ——返回字串長度‘6’;
3.4 涉及子串的處理
LEFT('abcdef',2) ——擷取左側2個長度的子串‘ab’;
RIGHT('abcdef',2) ——擷取右側2個長度的子串‘ef’;
SUBSTRING('abcdef',2,3) ——從第2個位置開始擷取長度為3的子串‘bcd’;
SUBSTRING('abcdef',2) ——從第2個位置開始擷取到字串結束‘bcdef’;
LOCATE('cd', 'abcdefcd',3) ——返回‘cd’在‘abcdef’中第一次出現的位置,從第3位後算起‘7’,如果沒有就返回0;
LOCATE('cd', 'abcdefcd') ——返回‘cd’在‘abcdef’中第一次出現的位置‘3’,如果沒有就返回0;
CONCAT('123', 'ABC','abc') ——拼接字串‘123ABCabc’;
RPLACE('12345ABCD', '123', 'abc') ——替換‘abc45ABCD’;
4. 其他函式
COALESCE(X,Y,Z,......) ——返回引數中第一個非空的表示式;
IF(X,Y,Z) ——如果X為真則返回Y,否則返回Z;
IFNULL(X,Y) —— 如果X是NULL值則返回Y;
CASE WHEN x>y THEN x WHEN y>z THEN y ELSE z END;
5. 聚合函式
MAX( ),MIN( ),SUM( ),COUNT( ),AVG( )
四、常用關鍵字
DISTINCT ——去重
LIMIT ——限制篩選
UNION ——連線查詢結果,自動去重
UNION ALL ——連線查詢結果,不去重
五、JOIN相關操作