【例6.1】求2,-3.3和-33的绝对值,输入语句如下:
select abs(2), abs(-3.3), abs(-33);
【例6.2】返回圆周率值,输入语句如下:
select pi();
【例6.3】求9,40和-49的二次平方根,输入语句如下:
select sqrt(9), sqrt(40), sqrt(-49);
【例6.4】对mod(31,8),mod(234, 10),mod(45.5,6)进行求余运算,输入语句如下:
select mod(31,8),mod(234, 10),mod(45.5,6);
【例6.5】使用ceiling函数返回最小整数,输入语句如下:
select ceil(-3.35),ceiling(3.35);
【例6.6】使用floor函数返回最大整数,输入语句如下:
select floor(-3.35), floor(3.35);
【例6.7】使用rand()函数产生随机数,输入语句如下:
select rand(),rand(),rand();
【例6.8】使用rand(x)函数产生随机数,输入语句如下:
select rand(10),rand(10),rand(11);
【例6.9】使用round(x)函数对操作数进行四舍五入操作,输入语句如下:
select round(-1.14),round(-1.67), round(1.14),round(1.66);
【例6.10】使用round(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:
select round(1.38, 1), round(1.38, 0), round(232.38, -1), round(232.38,-2);
【例6.11】使用truncate(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:
select truncate(1.31,1), truncate(1.99,1), truncate(1.99,0), truncate(19.99,-1);
【例6.12】使用sign函数返回参数的符号,输入语句如下:
select sign(-21),sign(0), sign(21);
【例6.13】使用pow和power函数进行乘方运算,输入语句如下:
select pow(2,2), power(2,2),pow(2,-2), power(2,-2);
【例6.14】使用exp函数计算e的乘方,输入语句如下:
select exp(3),exp(-3),exp(0);
【例6.15】使用log(x)函数计算自然对数,输入语句如下:
select log(3), log(-3);
【例6.16】使用log10计算以10为基数的对数,输入语句如下:
select log10(2), log10(100), log10(-100);
【例6.17】使用radians将角度转换为弧度,输入语句如下:
select radians(90),radians(180);
【例6.18】使用degrees将弧度转换为角度,输入语句如下:
select degrees(pi()), degrees(pi() / 2);
【例6.19】使用sin函数计算正弦值,输入语句如下:
select sin(1), round(sin(pi()));
【例6.20】使用asin函数计算反正弦值,输入语句如下:
select asin(0.8414709848078965), asin(3);
【例6.21】使用cos函数计算余弦值,输入语句如下:
select cos(0),cos(pi()),cos(1);
【例6.22】使用acos函数计算反余弦值,输入语句如下:
select acos(1),acos(0), round(acos(0.5403023058681398));
【例6.23】使用tan函数计算正切值,输入语句如下:
select tan(0.3), round(tan(pi()/4));
【例6.24】使用atan函数计算反正切值,输入语句如下:
select atan(0.30933624960962325), atan(1);
【例6.25】使用cot()函数计算余切值,输入语句如下,
select cot(0.3), 1/tan(0.3),cot(pi() / 4);
【例6.26】使用char_length函数计算字符串字符个数,输入语句如下:
select char_length('date'), char_length('egg');
【例6.27】使用length函数计算字符串长度,输入语句如下:
select length('date'), length('egg');
【例6.28】使用concat函数连接字符串,输入语句如下:
select concat('my sql', '5.6'),concat('my',null, 'sql');
【例6.29】使用concat_ws函数连接带分隔符的字符串,输入语句如下:
select concat_ws('-', '1st','2nd', '3rd'), concat_ws('*', '1st', null, '3rd');
【例6.30】使用insert函数进行字符串替代操作,输入语句如下:
select insert('quest', 2, 4, 'what') as col1,
insert('quest', -1, 4, 'what') as col2,
insert('quest', 3, 100, 'wh') as col3;
【例6.31】使用lower函数或者lcase函数将字符串中所有字母字符转换为小写,输入语句如下:
select lower('beautiful'), lcase('well');
【例6.32】使用upper函数或者ucase函数将字符串中所有字母字符转换为大写,输入语句如下:
select upper('black'), ucase('black');
【例6.33】使用left函数返回字符串中左边的字符,输入语句如下:
select left('football', 5);
【例6.34】使用right函数返回字符串中右边的字符,输入语句如下:
select right('football', 4);
【例6.35】使用lpad函数对字符串进行填充操作,输入语句如下:
select lpad('hello',4,'??'), lpad('hello',10,'??');
【例6.36】使用rpad函数对字符串进行填充操作,输入语句如下:
select rpad('hello',4,'?'), rpad('hello',10,'?');
【例6.37】使用ltrim函数删除字符串左边的空格,输入语句如下:
select '( book )',concat('(',ltrim(' book '),')');
【例6.38】select concat( '(', rtrim (' book '), ')');
select '( book )',concat('(', rtrim (' book '),')');
【例6.39】select concat( '(', trim(' book ') , ')');
select '( book )',concat('(', trim(' book '),')');
【例6.40】使用trim(s1 from s)函数删除字符串中两端指定的字符,输入语句如下:
select trim('xy' from 'xyxboxyokxxyxy') ;
【例6.41】使用repeat函数重复生成相同的字符串,输入语句如下:
select repeat('mysql', 3);
【例6.42】使用space函数生成由空格组成的字符串,输入语句如下:
select concat('(', space(6), ')' );
【例6.43】使用replace函数进行字符串替代操作,输入语句如下:
select replace('xxx.mysql.com', 'x', 'w');
【例6.44】使用strcmp函数比较字符串大小,输入语句如下:
select strcmp('txt', 'txt2'),strcmp('txt2', 'txt'), strcmp('txt', 'txt');
【例6.45】使用substring函数获取指定位置处的子字符串,输入语句如下:
select substring('breakfast',5) as col1,
substring('breakfast',5,3) as col2,
substring('lunch', -3) as col3,
substring('lunch', -5, 3) as col4;
【例6.46】使用mid()函数获取指定位置处的子字符串,输入语句如下:
select mid('breakfast',5) as col1,
mid('breakfast',5,3) as col2,
mid('lunch', -3) as col3,
mid('lunch', -5, 3) as col4;
【例6.47】使用locate,position,instr函数查找字符串中指定子字符串的开始位置,输入语句如下:
select locate('ball','football'),position('ball'in 'football'),instr ('football', 'ball');
【例6.48】使用reverse函数反转字符串,输入语句如下:
select reverse('abc');
【例6.49】使用elt函数返回指定位置字符串,输入语句如下:
select elt(3,'1st','2nd','3rd'), elt(3,'net','os');
【例6.50】使用field函数返回指定字符串第一次出现的位置,输入语句如下:
select field('hi', 'hihi', 'hey', 'hi', 'bas') as col1,
field('hi', 'hey', 'lo', 'hilo', 'foo') as col2;
【例6.51】使用find_in_set()函数返回子字符串在字符串列表中的位置,输入语句如下:
select find_in_set('hi','hihi,hey,hi,bas');
【例6.52】使用make_set根据二进制位选取指定字符串,输入语句如下:
select make_set(1,'a','b','c') as col1,
make_set(1 | 4,'hello','nice','world') as col2,
make_set(1 | 4,'hello','nice',null,'world') as col3,
make_set(0,'a','b','c') as col4;
【例6.53】使用日期函数获取系统当前日期,输入语句如下:
select curdate(),current_date(), curdate() + 0;
【例6.54】使用时间函数获取系统当前时间,输入语句如下:
select curtime(),current_time(),curtime() + 0;
【例6.55】使用日期时间函数获取当前系统日期和时间,输入语句如下:
select current_timestamp(),localtime(),now(),sysdate();
【例6.56】使用unix_timestamp函数返回unix格式的时间戳,输入语句如下:
select unix_timestamp(), unix_timestamp(now()), now();
【例6.57】使用from_unixtime函数将unix时间戳转换为普通格式时间,输入语句如下:
select from_unixtime('1364098609');
【例6.58】使用utc_date()函数返回当前utc日期值,输入语句如下:
select utc_date(), utc_date() + 0;
【例6.59】使用utc_time()函数返回当前utc时间值,输入语句如下:
select utc_time(), utc_time() + 0;
【例6.60】使用month()函数返回指定日期中的月份,输入语句如下:
select month('2013-02-13');
【例6.61】使用monthname()函数返回指定日期中的月份的名称,输入语句如下:
select monthname('2013-02-13');
【例6.62】使用dayname()函数返回指定日期的工作日名称,输入语句如下:
select dayname('2013-02-13');
【例6.63】使用dayofweek()函数返回日期对应的周索引,输入语句如下:
select dayofweek('2011-02-13');
【例6.64】使用weekday()函数返回日期对应的工作日索引,输入语句如下:
select weekday('2011-02-13 22:23:00'), weekday('2011-07-01');
【例6.65】使用week()函数查询指定日期是一年中的第几周,输入语句如下:
select week('2011-02-20'),week('2011-02-20',0), week('2011-02-20',1);
【例6.66】使用weekofyear()查询指定日期是一年中的第几周,输入语句如下:
select week('2011-02-20',3), weekofyear('2011-02-20');
【例6.67】使用dayofyear()函数返回指定日期在一年中的位置,输入语句如下:
select dayofyear('2011-02-20');
【例6.68】使用dayofyear()函数返回指定日期在一个月中的位置,输入语句如下:
select dayofmonth('2011-02-20');
【例6.69】使用year()函数返回指定日期对应的年份,输入语句如下:
select year('11-02-03'),year('96-02-03');
【例6.70】使用quarter()函数返回指定日期对应的季度,输入语句如下:
select quarter('11-04-01');
【例6.71】使用minute()函数返回指定时间的分钟值,输入语句如下:
select minute('11-02-03 10:10:03');
【例6.72】使用second()函数返回指定时间的秒值,输入语句如下:
select second('10:05:03');
【例6.73】使用extract函数提取日期或者时间值,输入语句如下:
select extract(year from '2011-07-02') as col1,
extract(year_month from '2011-07-12 01:02:03') as col2,
extract(day_minute from '2011-07-12 01:02:03') as col3;
【例6.74】使用time_to_sec函数将时间值转换为秒值,输入语句如下:
select time_to_sec('23:23:00');
【例6.75】使用sec_to_time()函数将秒值转换为时间格式,输入语句如下:
select sec_to_time(2345),sec_to_time(2345)+0,
time_to_sec('23:23:00'), sec_to_time(84180);
【例6.76】使用date_add()和adddate()函数执行日期加操作,输入语句如下:
select date_add('2010-12-31 23:59:59', interval 1 second) as col1,
adddate('2010-12-31 23:59:59', interval 1 second) as col2,
date_add('2010-12-31 23:59:59', interval '1:1' minute_second) as col3;
【例6.77】使用date_sub和subdate函数执行日期减操作,输入语句如下:
select date_sub('2011-01-02', interval 31 day) as col1,
subdate('2011-01-02', interval 31 day) as col2,
date_sub('2011-01-01 00:01:00',interval '0 0:1:1' day_second) as col3;
【例6.78】使用addtime进行时间加操作,输入语句如下:
select addtime('2000-12-31 23:59:59','1:1:1'), addtime('02:02:02', '02:00:00');
【例6.79】使用subtime()函数执行时间减操作,输入语句如下:
select subtime('2000-12-31 23:59:59','1:1:1'), subtime('02:02:02','02:00:00');
【例6.80】使用datediff()函数计算两个日期之间的间隔天数,输入语句如下:
select datediff('2010-12-31 23:59:59','2010-12-30') as col1,
datediff('2010-11-30 23:59:59','2010-12-31') as col2;
【例6.81】使用date_format()函数格式化输出日期和时间值,输入语句如下:
select date_format('1997-10-04 22:23:00', '%w %m %y') as col1,
date_format('1997-10-04 22:23:00','%d %y %a %d %m %b %j') as col2;
【例6.82】使用time_format()函数格式化输入时间值,输入语句如下:
select time_format('16:00:00', '%h %k %h %i %l');
【例6.83】使用get_format()函数显示不同格式化类型下的格式字符串,输入语句如下:
select get_format(date,'eur'), get_format(date,'usa');
【例6.84】在date_format()函数中,使用get_format函数返回的显示格式字符串来显示指定的日期值,输入语句如下:
select date_format('2000-10-05 22:23:00', get_format(date,'usa') );
【例6.85】使用if()函数进行条件判断,输入语句如下:
select if(12,2,3),
if(1<2,'yes ','no'),
if(strcmp('test','test1'),'no','yes');
【例6.86】使用ifnull()函数进行条件判断,输入语句如下:
select ifnull(1,2), ifnull(null,10), ifnull(1/0, 'wrong');
【例6.87】使用case value when语句执行分支操作,输入语句如下:
select case 2 when 1 then 'one' when 2 then 'two' else 'more' end;
【例6.88】使用case when语句执行分支操作,输入语句如下:
select case when 1<0 then 'true' else 'false' end;
【例6.89】查看当前mysql版本号,输入语句如下:
select version();
【例6.90】查看当前用户的连接数,输入语句如下:
select connection_id();
【例6.91】使用show processlist命令输出当前用户的连接信息,输入语句如下:
show processlist;
【例6.92】查看当前使用的数据库,输入语句如下:
select database(),schema();
【例6.93】获取当前登录用户名称,输入语句如下:
select user(), current_user(), system_user();
【例6.94】使用charset()函数返回字符串使用的字符集,输入语句如下:
select charset('abc'),
charset(convert('abc' using latin1)),
charset(version());
【例6.95】使用collation()函数返回字符串排列方式,输入语句如下:
select collation('abc'),collation(convert('abc' using utf8));
【例6.96】使用select last_insert_id查看最后一个自动生成的列值,执行过程如下:
1.一次插入一条记录
首先创建表worker,其id字段带有auto_increment约束,输入语句如下:
create table worker (id int auto_increment not null primary key,
name varchar(30));
分别单独向表worker中插入2条记录:
insert into worker values(null, 'jimy');
insert into worker values(null, 'tom');
select * from worker;
查看已经插入的数据可以发现,最后一条插入的记录的id字段值为2,使用last_insert_id()查看最后自动生成的id值:
select last_insert_id();
2.一次同时插入多条记录
接下来,向表中插入多条记录,输入语句如下:
insert into worker values
(null, 'kevin'),(null,'michal'),(null,'nick');
查询已经插入的的记录,
【例6.97】使用password函数加密密码,输入语句如下:
select password('newpwd');
【例6.98】使用md5函数加密字符串,输入语句如下:
select md5 ('mypwd');
【例6.99】使用encode加密字符串,输入语句如下:
select encode('secret','cry'), length(encode('secret','cry'));
【例6.100】使用decode函数解密被encode加密的字符串,输入语句如下:
select decode(encode('secret','cry'),'cry');
【例6.101】使用format函数格式化数字,保留小数点位数为指定值,输入语句如下:
select format(12332.123456, 4), format(12332.1,4), format(12332.2,0);
【例6.102】使用conv函数在不同进制数值之间转换,输入语句如下:
select conv('a',16,2),
conv(15,10,2),
conv(15,10,8),
conv(15,10,16);
【例6.103】使用inet_aton函数将字符串网络点地址转换为数值网络地址,输入语句如下:
select inet_aton('209.207.224.40');
【例6.104】使用inet_ntoa函数将数值网络地址转换为字符串网络点地址,输入语句如下:
select inet_ntoa(3520061480);
【例6.105】使用加锁、解锁函数,输入语句如下:
select get_lock('lock1',10) as getlock,
is_used_lock('lock1') as isusedlock,
is_free_lock('lock1') as isfreelock,
release_lock('lock1') as releaselock;
【例6.106】使用benchmark重复执行指定函数。
首先,使用password函数加密密码,输入语句如下:
select password ( 'newpwd' );
可以看到,password执行花费时间为0.00sec,下面使用benchmark函数重复执行password操作500000次:
select benchmark( 500000, password ('newpwd') );
【例6.107】使用convert()函数改变字符串的默认字符集,输入语句如下:
select charset('string'), charset(convert('string' using latin1));
【例6.108】使用cast和convert函数进行数据类型的转换,sql语句如下:
select cast(100 as char(2)), convert('2010-10-01 12:12:12',time);