SQL语法预览:
使用函数:【select函数名(参数1,参数2…);】
详解:
五
条件判断函数
条件判断函数也称为控制流程函数,根据满足条件不同,执行相应的流程。MySQL中进行条件判断的函数有IF、IFNULL和CASE。
1
IF(expr,v1,v2)函数
如果表达式expr是TURE(expr0 and exprNULL),则IF()函数的返回值为v1;否则返回值为v2。IF()的返回值是数字值还是字符串值,视其所在语境而定。
案例
使用IF()函数进行条件判断,使用的SQL语句如下:
命令语句
select IF(1>2,1,2),IF(1
执行结果:
2
IFNULL(v1,v2)函数
假如v1不为NULL,则IFNULL()函数的返回值为v1;否则返回值为v2。IFNULL()的返回值是数字值还是字符串值,视其所在语境而定。
案例
使用IFNULL()函数进行条件判断,SQL语句如下:
命令语句
select IFNULL(1,2),IFNULL(NULL,10),IFNULL(1/0,'wrong');
执行结果:
3
CASE函数
CASE expr WHEN v1 THEN r1[WHEN v2 THEN r2][ELSE rn]END函数表示,如果expr想值等于某个vn,则返回对应位置THEN后面的结果。如果与所有值都不相等,则返回ELSE后面的rn
案例
使用CASE WHEN语句执行分支操作,SQL语句如下:
命令语句
select CASE 2 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;
执行结果:
期的函数和返回UTC时间的函数
案例
使用CASE WHEN语句执行分支操作,SQL语句如下:
命令语句
select CASE WHEN 1>2 THEN 'true' ELSE 'false' END;
执行结果:
六
系统信息函数
MySQL中系统信息有数据库的版本号、当前用户名和连接数、系统字符集、最后一个自动生成的ID值等。
1
获取MySQL版本号、连接数和数据库名的函数
1)VERSION()函数
VERSION()函数返回表示MySQL服务器版本的字符串。这个字符串使用UTF-8字符集。
案例
查看当前MySQL版本号,SQL语句如下:
命令语句
select VERSION();
结果如下:
2)CONNECTION_ID()函数
CONNECTION_ID()函数返回mysql服务器当前连接次数,每个连接都有各自唯一的ID。
案例
查看当前用户连接数,SQL语句如下:
命令语句
select CONNECTION_ID();
结果如下:
另外通过 SHOW PROCESSLIST和 SHOW FULL PROCESSLIST语句也可以查看连接信息。
PROCESSLIST命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态,可以帮助识别出有问题的查询语句等。
如果roo账号,能看到所有用户的当前连接。如果是其他普通帐号,则只能看到自己占用的连接。 SHOW PROCESSLIST只列出前100条连接信息,如果想列出全部连接信息可使用SHOW FULL PROCESSLIST命令。
案例
使用 SHOW PROCESSLIST命令输出当前用户的连接信息,SQL语句如下:
命令语句
SHOW PROCESSLIST;
结果如下:
(1)Id列:用户MySQL时,系统分配的 connection id
(2)User列:显示当前用户,如果不是root,这个命令就只显示用户权限范围内的mysql语句
(3)Host列:显示这个语句是从哪个ip的哪个端口上发出的,可以用来追踪出现问题语句的用户
(4)db列:显示这个进程目前连接的是哪个数据库
(5)Command列:显示当前连接执行的命令,一般取值为体眠(sleep)、查询(query)和连接接( Connect)
(6)Time列:显示这个状态持续的时间,单位是秒。
(7)State列:显示使用当前连接的SQL语句的状态,这是很重要的列,后续会有所有状态的描述,State只是语句执行中的某一个状态。一个SOL语句,以查询为例,可能需要经过Copying to tmp table(复制到临时表)、 Sorting result(排序结果)、 Sending data(发送数据)等状态才可以完成
(8)info列:显示这个SOL语句,是判断问题语句的一个重要依据。
3)DATABASE()和 SCHEMA()函数
DATABASE()和 SCHEMA()函数返回使用utf8字符集的默认(当前)数据库名。
案例
查看当前使用的数据库,SQL语句如下:
命令语句
select DATABASE(),SCHEMA();
结果如下:
可以看到,使用哪个数据库才显示那个,不然就是NULL。
2
获取用户名的函数
USER()、CURRENT_USER、CURRENT_USER()、SYSTEM_USER()和SESSION_USER()这几个函数返回当前被 MySQL服务器验证的用户名和主机名的组合。一般情况下,这几个函数的运回值是相同的。
案例
获取当前登录用户名,SQL语句如下:
命令语句
select USER(),CURRENT_USER(),SYSTEM_USER();
执行结果:
3
获取字符串的字符集和排序方式的函数
1)CHARSET()函数
CHARSET(str)函数表示返回字符串str自变量的字符集。
案例
使用CHARSET()函数返回字符串使用的字符集,SQL语句如下:
命令语句
select CHARSET('abc'),CHARSET(VERSION());
结果如下:
2)COLLATION()函数
COLLATION()函数返回字符串str的字符排到方式。
案例
使用COLLATION()函数返回字符串的排到方式,SQL语句如下:
命令语句
select COLLATION('abc'),COLLATION(CONVERT('abc' USING utf8));
结果如下:
可以看到,使用不同的字符集时,字符串的排列方式也不同。
4
获取最后一个自动生成ID值的函数
LAST_INSERT_ID()函数自动返回最后一个INSERI或UPDATE为AUTO_INCREMENT列设置的第一个发生的值。
案例
使用 SELECT LAST_INSERT_ID查看最后一个自动生成的列值,SQL语法如下:
1)一次插入一条记录
首先创建表 worker,其Id字段带有 AUTO_INCREMENT约束,输入的语句及其执行结果如下:
命令语句
create table worker (Id int AUTO_INCREMENT NOT NULL primary key,Name varchar(30));
insert into worker values(null,'jimy');
insert into worker values(null,'tom');
select * from worker;
select LAST_INSERT_ID();
结果如下:
分次向表 worker中插入2条记录,查看插入的数据可以发现,最后一次插入的记录的ld字段借为2。
2)一次同时插入多条记录
向表中插入多条记录,输入的语句及其执行结果如下:
命令语句
insert into worker values(null,'Kevin'),(null,'michal'),(null,'nick');
select * from worker;
select LAST_INSERT_ID();
结果如下:
结果显示LAST_INSERT_ID的值不是5而是3,这是为什么呢,在向数据表中插入一条心记录时,LAST_INSERT_I()返回带有AUTO_INCREMENT约束的字段最新生成值2;继续向表中添加3条记录,注意当使用INSERT语句插入多条记录时,LAST_INSERT_ID()只返回插入第一行数据时产生的值,在这里为第三条数据,意味着不是看记录个数而是看insert语句。之所以这样是因为这样会使依靠其他服务器复制同样的INSERT语句变得简单。
注意:LAST_INSERT_ID与table无关,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回b中的ID值。
SQL语法总结:
使用函数:【select函数名(参数1,参数2…);】
end
欢迎关注互动|未来科技008
微信ID:seali_521
欢迎关注互动|十年之前diary
微信ID:Lseali_521
十年之前diary
文学随笔,生活点滴
广读胸中有本,勤写笔下生辉
领取专属 10元无门槛券
私享最新 技术干货