提醒: 設定下面的語句是在數據庫名為 db_book里執行的。
創建user_info表
注意:pwd為密碼字段,這里使用了VARCHAR(128)類型,為了后面方便對比,開發項目里一般使用char(32),SQL語句里使用MD5加密函數
USE db_book;
CREATE TABLE user_info(id INT NOT NULL AUTO_INCREMENT,userName VARCHAR(30) DEFAULT NULL,age INT,sex VARCHAR(4) DEFAULT NULL,moblie VARCHAR(11) DEFAULT NULL,pwd VARCHAR(128) DEFAULT NULL,birthday DATE DEFAULT NULL,avatar VARCHAR(100) DEFAULT NULL,num INT,PRIMARY KEY(id)
);
為user_info表里添加多條數據
USE db_book;
INSERT INTO user_info(userName,age,sex,moblie,pwd,birthday,avatar,num)VALUES('用戶1',20,'男',12345678901,123456,'2024-03-01',NULL,1),('用戶2',22,'男',13345678902,'123456adc','2023-10-01',NULL,2),('用戶3',23,'女',14345678903,'2423adbc','2022-12-08','https://test.avatar.1234abc',3),('Test4',24,'男',13345678902,'123456adc4','2021-04-02',NULL,4123400),('test5',25,'女',15345678902,'123456adc5','2020-11-22',NULL,51234666);
查詢user_info表數據
一、日期和時間函數
- CURDATE() 返回當前日期
只包含年、月、日部分,格式為YYYY-MM-DD;- CURTIME() 返回當前時間
只包含時、分、秒部分,格式為HH:MM:SS- MONTH(d)返回日期d中的月份值,范里是1~12
- NOW()函數 返回當前日期和時間
包含年、月、日、時、分、秒,格式為YYYY-MM-DD HH:MM:SS- UNIX_TIMESTAMP(date)函數
將date轉化為UNIX時間戳
SELECT CURDATE(),CURTIME(),NOW(),UNIX_TIMESTAMP(NOW()),MONTH(birthday)FROM db_book.user_info;/*日期和時間函數*/
執行結果
UNIX_TIMESTAMP 函數示例
在終端里執行: SELECT UNIX_TIMESTAMP(now());
CURDATE()函數示例
在終端里執行:SELECT CURDATE();
其他幾個日期函數執行操心和上面一樣
使用AS為列名設置別名
SELECT CURDATE(),CURTIME(),NOW(),MONTH(birthday) AS m FROM db_book.user_info;
執行結果
二、字符串函數
- CHAR_LENGTH(s) 計算字符串s的字符數;
- UPPER(s) 把所有字母變成大寫字母;
- LOWER(s) 把所有字母變成小寫字母;
SELECT userName,CHAR_LENGTH(userName),UPPER(userName),LOWER(userName)FROM db_book.user_info;/*字符串函數*/
執行結果
三、數學函數
- A BS(x)求絕對值
- SQRT(x)求平方根
- MOD(x.y)求余
SELECT num,ABS(num) FROM db_book.user_info;/*求絕對值*/
3.1 求絕對值
執行結果
SELECT SQRT(num) FROM db_book.user_info;/*對num求平方根*/
執行結果
3.2 求平方根
SELECT SQRT(4);/*對4求平方根*/
終端里執行結果
MySQL Workbench執行結果
3.3 求余
SELECT MOD(9,2);/*求余*/
終端執行結果
四、加密函數
- PASSWORD(Str) 一般對用戶的密碼加密 不可逆
注意:mysql8.0 已經棄用PASSWORD()函數了,可以使用MD5函數代替- MD5(str)普通加密 不可逆
- ENCODE(SLr,pswd_str)加密函數,結果是一個二進制數,必須使用BLOB 類型的字段來保存它;
注意:mysql8.0 已經找不到ENCODE()函數了,可以使用MD5函數代替- DECODE(crypt_str,pswd_str)解密函數;
注意:mysql8.0 已經找不到DECODE()函數了,可以使用MD5函數代替
4.1 PASSWORD
注意:mysql8.0 已經棄用PASSWORD()函數了,可以使用MD5函數代替
在mysql8.0以下版本執行下面SQ語句
INSERT INTO db_book.user_info(userName,age,sex,moblie,pwd,birthday,avatar,num)VALUE('用戶6',26,'男',16345678906,PASSWORD('123456abcd'),'2024-03-01',NULL,20666);
4.2 MD5
INSERT INTO db_book.user_info(userName,age,sex,moblie,pwd,birthday,avatar,num)VALUES('用戶7',27,'男',17645678907,MD5('123456abcd'),'1996-06-21',NULL,20670);
執行結果
查詢user_info表數據
4.3 ENCODE
注意:mysql8.0 已經找不到ENCODE()函數了,可以使用MD5函數或其他函數代替
在mysql8.0以下版本執行下面SQ語句
INSERT INTO db_book.user_info(userName,age,sex,moblie,pwd,birthday,avatar,num)
VALUES('用戶8',28,'男',17645678907,MD5('23456ad'),'1995-06-21',ENCODE('https://abcd.avatar','ak'),20680);
4.4 DECODE
注意:mysql8.0 已經找不到DECODE()函數了,可以使用MD5函數或其他代替
在mysql8.0以下版本執行下面SQ語句
SELECT DECODE(avatar,'ak') FROM db_book.user_info WHERE num = 20680;
推薦
MySQL:常用的SQL語句