一、数值类型

 
    标准sql中包含数据类型 INTEGER, SMALLINT, DECIMAL, NUMERIC,以及FLOAT, REAL, DOUBLE。mysql在此基础上进行了拓展,增加了TINYINT, MEDIUMINT, BIGINT三种长度不同的整数,以及BIT类型,用来存放位数据。

整数类型 字节
TINYINT 1
SMALLINT 2
MEDIUMINT 3
INT/INTEGER 4
BIGINT 8
浮点数类型 字节
FLOAT 4
DOUBLE 8
定点整数类型 字节
DEC(M,D)/DECIMAL(M,D) M+2

 
create table ai(id int auto_increment not null, unique(id));

 
比如用默认的decimal来存放数据1.23, 则实际只会保留整数位1,小数位的.23被丢弃。

 
    bit位类型用于存放位字段值,BIT(M)可以用来存放多位二进制数,M范围从1到64,如果不写则默认为1位。对于位字段,直接使用SELECT命令将不会看到结果,可以用bin()(显示为二进制格式)或者hex()(显示为十六进制格式)函数进行读取。

2. 日期和时间类型

日期和时间类型 字节 最小值 最大值
DATE 4 1000-01-01 9999-12-31
DATETIME 8 1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP 4 19700101080001 2038年的某个时刻
TIME 3 -838:59:59 838:59:59
YEAR 1 1901 2155

 
即,char列最后的空格在做操作时都已经被删除,而varchar依然保留空格。

 
create table t(en enum('hello','world'));

 
insert into t values('a,b'), ('c,d'), ('a, c, d'); #一次插入多个记录

二、算术运算符

在mysql命令行下,通过select expression 来得到表达式的值。

str regexp str_pat,当str字符串中含有str_pat相匹配的字符串时,返回值为1,否则返回0.

 
    包括not或者!, and或者&&, or或者||, xor(异或).

 
    包括 &, |, ~, ^, >>, << 等。

 
    和c/c++有差别,比如位运算符的优先级貌似比较高,需要在使用时注意。

 

三、 常用函数

1. 字符串函数

函数 功能
concat(s1,s2....sn) 连接s1,s2...sn为一个字符串
insert(str, x, y, instr) 将字符串str从第x个位置开始,y个字符长度的子串替换为字符串instr
lower(str) 将字符串str中所有字符变为小写
upper(str) 将字符串str中所有字母变为大写
left(str, x) 返回字符串str最左边的x个字符
right(str,x) 返回字符串str最右边的x个字符
lpad(str,n,pad) 用字符串pad对str最左边进行填充,直到长度为n个字符串长度
rpad(str,n,pad) 用字符串pad对str最右边进行填充,直到长度为n个字符串长度
ltrim(str) 去掉字符串str左侧的空格
rtrim(str) 去掉字符串str右侧的空格
repeat(str,x) 返回str重复x次的结果
replace(str,a,b) 用字符串b替换字符串str中所有出现的字符串a
strcmp(s1,s2) 比较字符串s1和s2
trim(str) 去掉字符串行尾和行头的空格
substring(str, x, y) 返回从字符串str x位置起y个字符长度的字串

2. 数值函数

函数 功能
abs(x) 返回x的绝对值
ceil(x) 返回大于x的最小整数值
floor(x) 返回大于等于x的最小整数值
mod(x,y) 返回x/y的模
rand() 返回参数x的四舍五入的有y位小数的值
round(x,y) 返回参数x的四舍五入的有y位小数的值
truncate(x,y) 返回数字x截断为y位小数的结果

3. 日期和时间函数

函数 功能
curdate() 返回当前日期
curtime() 返回当前时间
now() 返回当前日期和时间
unix_timestamp(date) 返回日期date的unix时间戳
from_unixtime 返回unix时间戳的日期值
week(date) 返回date为一年中的第几周
year(date) 返回date的年份
hour(time) 返回time的小时值
minute(time) 返回time的分钟值
monthname(date) 返回date的月份名
date_format(date, fmt) 返回按字符串fmt格式化日期date值
date_add(date interval expr type) 返回一个日期或者时间值加上一个时间间隔的时间值
datediff(expr, expr2) 返回起始时间expr和结束时间expr2之间的天数

4. 流程函数

函数 功能
if(value,t f) 如果value是真,返回t;否则返回f
ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2
case when [value1] then [result] .... else [default] end 如果value1为真,返回result1,否则返回default
case [expr] when [value1] then [result]...else [default]end 如果expr等于value1,返回result,否则返回default

 
select user_id, case when salary<=2000 then 'low' else 'high' end from t;

 
select ifnull(salary, 0) from t;#列出所有的salary,如果salary那一列为空,则显示0.

5. 其他常用函数

函数 功能
database() 返回当前数据库名
version() 返回当前数据库版本
user() 返回当前登录用户名
inet_aton(ip) 返回ip地址的网络字节序数字表示
inet_ntoa(num) 返回数字代表的ip地址
password(str) 返回字符串str的加密版本
md5(str) 返回字符串str的md5值

    其中,字符串的加密版本password(str)返回的是一个41字节长的字符串;md5(str)返回str的md5值,常用来对应用中的数据进行加密。

相关文章:

  • 2021-11-18
  • 2021-11-10
  • 2022-12-23
  • 2022-01-17
  • 2021-10-27
  • 2022-02-22
  • 2021-07-04
  • 2022-02-09
猜你喜欢
  • 2021-07-16
  • 2021-12-23
  • 2021-09-10
  • 2022-12-23
相关资源
相似解决方案