【入門篇】2.5 MySQL常用數(shù)據(jù)類型、函數(shù)介紹
2023-07-15 00:11 作者:數(shù)據(jù)庫進階 | 我要投稿

MySQL常用數(shù)據(jù)類型、函數(shù)介紹
目錄
1 常用的數(shù)據(jù)類型
1.1 整數(shù)類型(Integer Types)
1.2 浮點數(shù)類型(Floating-Point Types)
1.3 字符串類型(String Types)
1.4 日期和時間類型(Date and Time Types)
1.5 二進制類型(Binary Types)
1.6 示例
2 常用的函數(shù)
2.1 字符串函數(shù)
2.2 數(shù)值函數(shù)
2.3 日期和時間函數(shù)
2.4 聚合函數(shù)
2.5 示例
?
1 常用的數(shù)據(jù)類型
1.1 整數(shù)類型(Integer Types)
- TINYINT:范圍為-128到127的有符號整數(shù)或0到255的無符號整數(shù)。若要表達無符號整數(shù),在類型后添加
UNSIGNED
關(guān)鍵字即可。 1字節(jié)。 - SMALLINT:范圍為-32768到32767的有符號整數(shù)或0到65535的無符號整數(shù)。2字節(jié)。
- MEDIUMINT:范圍為-8388608到8388607的有符號整數(shù)或0到16777215的無符號整數(shù)。3字節(jié)。
- INT或INTEGER:范圍為-2147483648到2147483647的有符號整數(shù)或0到4294967295的無符號整數(shù)。 4字節(jié)。
- BIGINT:范圍為-9223372036854775808到9223372036854775807的有符號整數(shù)或0到18446744073709551615的無符號整數(shù)。8字節(jié)。
1.2 浮點數(shù)類型(Floating-Point Types)
- FLOAT:單精度浮點數(shù),精度為7位。4字節(jié)。
- DOUBLE:雙精度浮點數(shù),精度為15位。8字節(jié)。
- DECIMAL:高精度小數(shù),用于存儲精確的十進制數(shù)值。DECIMAL的定義格式為:DECIMAL(precision, scale),其中precision表示總位數(shù),scale表示小數(shù)位數(shù)。
- precision:表示數(shù)值的總位數(shù),包括整數(shù)位和小數(shù)位。它的取值范圍是1到65,默認為10。
- scale:表示小數(shù)位數(shù)。它的取值范圍是0到precision之間,默認為0,表示整數(shù)。
DECIMAL數(shù)據(jù)類型的定義示例:
定義一個DECIMAL列,精度為10位,沒有小數(shù)位:
column_name DECIMAL(10, 0);
這將允許存儲范圍在-9999999999到9999999999之間的整數(shù)。
定義一個DECIMAL列,總長度為8位,包括2位小數(shù):
column_name DECIMAL(8, 2);
這將允許存儲范圍在-999999.99到999999.99之間的數(shù)值,小數(shù)部分占據(jù)2位。
1.3 字符串類型(String Types)
- CHAR:固定長度字符串,最大長度為255個字符。
- VARCHAR:可變長度字符串,最大長度為65535個字符。
- TEXT:可變長度的文本字符串,最大長度為65535個字符。存不下時使用LONGTEXT。
- ENUM:枚舉類型,用于定義一組允許的值。1或2字節(jié),取決于枚舉值的數(shù)量。
- SET:集合類型,用于定義一組允許的值。1、2、3、4或8字節(jié),取決于集合值的數(shù)量。
1.4 日期和時間類型(Date and Time Types)
- DATE:日期,格式為'YYYY-MM-DD'。3字節(jié)。
- TIME:時間,格式為'HH:MM:SS'。3字節(jié)。
- DATETIME:日期和時間,格式為'YYYY-MM-DD HH:MM:SS'。
- TIMESTAMP:UNIX時間戳,范圍從'1970-01-01 00:00:01'到'2038-01-19 03:14:07'。
- YEAR:年份,范圍從1901到2155。1字節(jié)。
1.5 二進制類型(Binary Types)
- BINARY:固定長度的二進制字符串。最多255字節(jié)。
- BLOB:二進制大對象,用于存儲大量的二進制數(shù)據(jù)。最多65535字節(jié)。
- LONGBLOB:長二進制大對象,最大長度為4294967295個字節(jié)。最多4294967295字節(jié)。
1.6 示例
創(chuàng)建一個包含不同數(shù)據(jù)類型的表:
CREATE TABLE my_table ( id INT, name VARCHAR(50), age TINYINT UNSIGNED, salary DECIMAL(10, 2), birth_date DATE );
插入數(shù)據(jù)到表中:
INSERT INTO my_table (id, name, age, salary, birth_date) VALUES (1, 'John Doe', 30, 5000.00, '1990-01-01');
?
2 常用的函數(shù)
2.1 字符串函數(shù)
- CONCAT:將多個字符串連接成一個字符串。
- LENGTH:返回字符串的長度。
- SUBSTRING:提取字符串的子串。
- UPPER:將字符串轉(zhuǎn)換為大寫。
- LOWER:將字符串轉(zhuǎn)換為小寫。
- REPLACE:替換字符串中的部分字符。
2.2 數(shù)值函數(shù)
- ABS:返回一個數(shù)的絕對值。
- ROUND:四舍五入到指定的小數(shù)位數(shù)。
- CEIL:向上取整。
- FLOOR:向下取整。
- MOD:返回兩個數(shù)相除的余數(shù)。
2.3 日期和時間函數(shù)
- NOW:返回當(dāng)前日期和時間。
- DATE:提取日期部分。
- TIME:提取時間部分。
- YEAR:提取年份。
- MONTH:提取月份。
- DAY:提取日期。
- HOUR:提取小時。
- MINUTE:提取分鐘。
- SECOND:提取秒數(shù)。
- DATA_SUB: 指定日期減去指定的時間間隔。
2.4 聚合函數(shù)
- COUNT:返回匹配指定條件的行數(shù)。
- SUM:計算指定列的總和。
- AVG:計算指定列的平均值。
- MAX:返回指定列的最大值。
- MIN:返回指定列的最小值。
2.5 示例
使用字符串函數(shù):
SELECT CONCAT('Hello', ' ', 'World') AS result; -- 輸出:Hello World SELECT LENGTH('MySQL') AS result; -- 輸出:5 SELECT SUBSTRING('Hello World', 7) AS result; -- 輸出:World SELECT SUBSTRING('Hello World', 7, 3) AS result; -- 輸出:Wor SELECT SUBSTRING('Hello World', -2) AS result; -- 輸出:ld SELECT UPPER('hello') AS result; -- 輸出:HELLO SELECT LOWER('WORLD') AS result; -- 輸出:world SELECT REPLACE('Hello World', 'World', 'ChatGPT') AS result; -- 輸出:Hello ChatGPT
使用數(shù)值函數(shù):
SELECT ABS(-10) AS result; -- 輸出:10 SELECT ROUND(3.14159, 2) AS result; -- 輸出:3.14 SELECT CEIL(3.5) AS result; -- 輸出:4 SELECT FLOOR(3.9) AS result; -- 輸出:3 SELECT MOD(10, 3) AS result; -- 輸出:1
使用日期和時間函數(shù):
SELECT NOW() AS current_datetime; -- 輸出:當(dāng)前日期和時間 SELECT DATE('2023-07-09 15:30:00') AS result; -- 輸出:2023-07-09 SELECT TIME('2023-07-09 15:30:00') AS result; -- 輸出:15:30:00 SELECT YEAR('2023-07-09') AS result; -- 輸出:2023 SELECT MONTH('2023-07-09') AS result; -- 輸出:7 SELECT DAY('2023-07-09') AS result; -- 輸出:9 SELECT HOUR('2023-07-09 15:30:00') AS result; -- 輸出:15 SELECT MINUTE('2023-07-09 15:30:00') AS result; -- 輸出:30 SELECT SECOND('2023-07-09 15:30:00') AS result; -- 輸出:0 SELECT DATE_SUB('2023-07-14', INTERVAL 1 DAY); -- 輸出:2023-07-13 SELECT DATE_SUB(NOW(), INTERVAL 3 MONTH); -- 輸出:根據(jù)當(dāng)前日期計算出的三個月前的日期 SELECT DATE_SUB('2023-07-09 10:00:00', INTERVAL 2 HOUR); -- 輸出:2023-07-09 08:00:00 SELECT DATE_SUB(NOW(), INTERVAL 30 MINUTE); -- 輸出:根據(jù)當(dāng)前日期時間計算出的30分鐘前的日期時間
使用聚合函數(shù):
假設(shè)有一個名為employees
的表,包含salary
列,可以執(zhí)行以下查詢:
SELECT COUNT(*) AS total_employees FROM employees; -- 輸出:返回員工總數(shù) SELECT SUM(salary) AS total_salary FROM employees; -- 輸出:返回員工工資總和 SELECT AVG(salary) AS average_salary FROM employees; -- 輸出:返回員工工資平均值 SELECT MAX(salary) AS max_salary FROM employees; -- 輸出:返回最高工資 SELECT MIN(salary) AS min_salary FROM employees; -- 輸出:返回最低工資 2.5 MySQL常用數(shù)據(jù)類型、函數(shù)介紹
?
標(biāo)簽: