1. 程式人生 > >MySQL基本操作整理

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相關操作