提醒 : 设定下面的语句是在数据库名为 db_book 里执行的。
创建user_info表
注意:pwd为密码字段,这里使用了VARCHAR(128)类型,为了后面方便对比,开发项目里一般使用char(32),SQL语句里使用MD5加密函数
bash
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表里添加多条数据
bash
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时间戳
bash
SELECT CURDATE(),CURTIME(),NOW(),UNIX_TIMESTAMP(NOW()),MONTH(birthday)FROM db_book.user_info;/*日期和时间函数*/
执行结果
UNIX_TIMESTAMP 函数示例
在终端里执行: SELECT UNIX_TIMESTAMP(now());
CURDATE()函数示例
在终端里执行:SELECT CURDATE();
其他几个日期函数执行操心和上面一样
使用AS为列名设置别名
bash
SELECT CURDATE(),CURTIME(),NOW(),MONTH(birthday) AS m FROM db_book.user_info;
执行结果
二、字符串函数
- CHAR_LENGTH(s) 计算字符串s的字符数;
- UPPER(s) 把所有字母变成大写字母;
- LOWER(s) 把所有字母变成小写字母;
bash
SELECT userName,CHAR_LENGTH(userName),UPPER(userName),LOWER(userName)FROM db_book.user_info;/*字符串函数*/
执行结果
三、数学函数
- A BS(x)求绝对值
- SQRT(x)求平方根
- MOD(x.y)求余
bash
SELECT num,ABS(num) FROM db_book.user_info;/*求绝对值*/
3.1 求绝对值
执行结果
bash
SELECT SQRT(num) FROM db_book.user_info;/*对num求平方根*/
执行结果
3.2 求平方根
bash
SELECT SQRT(4);/*对4求平方根*/
终端里执行结果
MySQL Workbench执行结果
3.3 求余
bash
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语句
bash
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
bash
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语句
bash
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语句
bash
SELECT DECODE(avatar,'ak') FROM db_book.user_info WHERE num = 20680;