Mysql基础(四)—– 运算符,函数和索引

756-周同学

发表文章数:47

热门标签

,
首页 » MySQL » 正文

一. 运算符

1. 算数运算符

SELECT 1+1;
SELECT 3 div 0;

2. 比较运算符

结果只能为真或者假

SELECT id,username,age,sex,age<>null FROM cms_user;
SELECT id,username,score,score>=70 FROM student;
SELECT id,username,age,age IS NULL FROM cms_user;
SELECT id,username,age,age BETWEEN 10 AND 30 FROM cms_user;
SELECT id,username,age,age IN(21,31,41,51) FROM cms_user;
SELECT 1 IN(1,2,3);
SELECT 's' LIKE '_';
SELECT 'sd' LIKE '_';
SELECT id,username,age,username LIKE '____' FROM cms_user;
SELECT id,username,age,username REGEXP'^t' FROM cms_user;

3. 逻辑运算符

结果只能为真或者假

SELECT 1&&1;
SELECT 2&&2,2&&0,2&&NULL,1||0,1||0,1||NULL,0||NULL;
SELECT NULL&&1;
SELECT !1,!0,!NULL;
SELECT 1XOR0,0XOR1,1XOR1,0XOR0;

二. 函数

1. 数学函数

--向上取整
SELECT CEIL(1.2),CELING(1.2);
SELECT num1,CEIL(num2),CEILING(num3) FROM test4;
--向下取整
SELECT FLOOR(3.14);
--取余数
SELECT MOD(3,8);
--乘积
SELECT POW(2,3),POWER(3,3);
--取近似值
SELECT ROUND(3,14567,2);
--截断
SELECT TRUNCATE(3.1456,2);
--取绝对值
SELECT ABS(-12);
--取pai值
SELECT PI();
--取随机数
SELECT RAND();
SELECT * FROM cms.cms_user ORDER BY RAND();
SELECT RAND(1);
--取符号值,1,0,-1
SELECT SING(12),SIGN(0),SIGN(-12);
--取指数函数
SELECT EXP(3);

2. 字符串函数

--返回字符串的字符数和长度
SELECT CHAR_LENGTH('maizi'),LENGTH('maizi');
--将字符串合并为一个字符串
SELECT CONCAT('HELLO','WORLD');
SELECT id, CONCAT(username,'__') FROM student;
SELECT CONCAT('a','b',null);
--以指定分隔符连接字符串
SELECT CONCAT_WS('_','a','b','c');
SELECT CONCAT_WS('','a','b','c');
SELECT CONCAT_WS(NULL,'a','b','c');
SELECT CONCAT_WS('_','a','b','c',NULL);
--将字符串转换为大写,小写
SELECT UPPER('this is a test'),UCASE('this is a test');
SELECT LOWER('HELLO WORLD'),LCASE('HELLO WORLD');
--返回字符串的前几个或后几个字符
SELECT LEFT('ABCDEF',2),RIGHT('ANCDEF',2);
--将字符串S1用S2填充到指定的LEN
SELECT LPAD('A',5,'?'),RPAD('A',5,'!');
--去掉字符串中的空格
SELECT'  ABC ',CONCAT('_',TRIM(' ABC '),'_'),CONCAT('_',LTRIM(' ABC '),'_'),CONCAT('_',RTRIM(' ABC '),'_');
--去掉字符串S中开始和结尾处的字符串S1
SELECT TRIM('A' FROM 'ABCBCA');
--重复指定字符串
SELECT REPEAT('H',5);
--返回N个空格
SELECT CONCAT('_',SPACE(5),'_');
--字符串替换,搜索时区分大小写
SELECT REPLACE('ABCBCA','A','_');
--比较两个字符串是否相同,不区分大小写,>=<分别返回1,0,-1
SELECT STRCMP('a','a'),STRCMP('A','a'),STRCMP('A','B');
--截取字符串
SELECT SUBSTRING('ABCDE',2,2);
--反转字符串
SELECT REVERSE('ABC');
--返回指定位置的字符串
SELECT ELT(2,'A','B','C')

3. 日期时间函数

--返回当前日期
SELECT CURDATE(),CURRENT_DATE();
--返回当前时间
SELECT CURTIME(),CURRENT_TIME();
--返回日期时间
SELECT NOW();
--返回日期中月份的值
SELECT MONTH('2015-1-3');
SELECT MONTH(NOW());
--返回日期中月份名称
SELECT MONTHNAME(NOW());
--返回日期是几
SELECT DAYNAME(NOW());
--返回一周内第几天,1代表星期日
SELECT DAYOFWEEK(NOW());
--返回日期是星期几,0代表星期一
SELECT WEEKDAY(NOW());
--一年中的第多少个星期
SELECT WEEK(NOW());
--返回年份
SELECT YEAR(NOW());
--返回小时
SELECT HOUR(NOW());
--返回分钟
SELECT MINUTE(NOW());
--返回秒数
SELECT SECOND(NOW());
--计算日期差
SELECT DATEDIFF(CURRENT_DATE(),'1990-1-1');

4. 条件判断函数和系统函数

  1. 条件判断函数
--如果表达式成立,返回结果1,否则返回2
SELECT id,username,score,IF(score>=60,'PASS','FAIL') FROM student;
--如果第一个不为空,显示第一个值,否则显示第二个
SELECT id,username,age,IFNULL(age,'100') FROM cms_user;
--CASE表示函数开始,END表示函数结束
SELECT id,username,score,CASE WHEN score>60 THEN 'good' WHEN score=60 THEN 'pass' ELSE 'fail' END FROM student;
  1. 系统函数
--返回数据库的版本号
SELECT VERSION();
--返回服务器的连接数
SELECT CONNECTION_ID();
--返回当前数据库名
SELECT DATABASE(),SCHEMA();
--返回当前用户
SELECT USER(),SYSTEM_USER();
SELECT CURRENT_USER(),CURRENT_USER;
--返回字符串STR的字符集
SELECT CHARSET('AAA');
--返回字符串STR的校验字符集
SELECT COLLATION('AAA');
--返回最近生成的AUTO_INCREMENT
SELECT LAST_INSERT_ID();

5. 其他常用的函数

  1. 加密函数
--信息摘要算法,32位
SELECT MD5('ADMIN');
--密码算法
SELECT PASSWORD('root'),PASSWORD('king');
--加密结果是一二进制数
--对通过ENCODE加密之后
  1. 其他函数
--将数字格式化,保留到小数点后几位
SELECT FORMAT(3.14145,2);
--返回字符串的第一个字符的ASCII码
SELECT ASCII('abc');
--返回二进制编码,十六进制,八进制
SELECT BIN(5),HEX(5),OCT(5);
--从f1进制转变为f2进制
SELECT CONV(5,10,2);
SELECT CONV(35,10,8);
--将IP地址转换为数字
SELECT INET_ATON('127.0.0.1');
--将数字转换成IP地址
SELECT INET_NTOA(2130706433);
--定义锁,后面的数字是秒数
SELECT GET_LOCK('KING',10);
SELECT IS_FREE_LOCK('KING;);
--解锁
SELECT RELEASE_LOCK('KING');

三. 索引

索引有数据库中一列或多列组合而成,可以提高检索数据的速度,但是创建和维护索引需要耗费时间,可以提高查询速度,会减慢写入速度

1. 普通索引

CREATE TABLE test4(
id TINYINT UNSIGNED,
username VARCHAR (20),
INDEX in_id(id),
KEY in_username(username)
);

--删除索引
DROP INDEX in_id ON test4;
DROP INDEX in_username ON test4;

--创建索引
CREAT INDEX in_id ON test4(id);
ALTER TABLE test4 ADD INDEX in_username(username);

2. 唯一索引

CREATE TABLE test5(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR (20) NOT NULL UNIQUE,
card CHAR (18) NOT NULL,
UNIQUE KEY uni_card(card)
);

ALTER TABLE test5 DROP INDEX uni_card;
DROP INDEX username ON test5;

CREATE UNIQUE INDEX uni_username ON test5(username);
ALTER TABLE test5 ADD UNIQUE INDEX in_card(card);

3. 全文索引

CREATE TABLE test6(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR (20) NOT NULL UNIQUE,
userDesc VARCHAR (20) NOT NULL,
FULLTEXT INDEX full_userDesc(userDesc)
);

DROP INDEX full_userDesc ON test6;

CREATE FULLTEXT INDEX full_userDesc on test6(userDesc);

4. 单列索引

CREATE TABLE test7(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
test1 VARCHAR (20) NOT NULL,
test2 VARCHAR (20) NOT NULL,
test3 VARCHAR (20) NOT NULL,
test4 VARCHAR (20) NOT NULL,
INDEX in_test1(test1)
);

5. 多列索引

CREATE TABLE test8(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
test1 VARCHAR (20) NOT NULL,
test2 VARCHAR (20) NOT NULL,
test3 VARCHAR (20) NOT NULL,
test4 VARCHAR (20) NOT NULL,
INDEX mul_t1_t2_t3(test1,test2,test3)
);

ALTER TABLE test8 DROP INDEX mul_t1_t2_t3;
ALTER TABLE test8 ADD INDEX mul_t1_t2_t3(test1,test2,test3);

6. 空间索引

CREATE TABLE test10(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
test GEOMETRY NOT NULL,
SPATIAL INDEX spa_test(test)
)ENGINE=MyISAM;

DROP INDEX spa_test ON test10;

CREATE SPATIAL INDEX spa_test ON test10(test);

四. 图形化工具管理MySQL

1. PHPMyAdmin

2. SQLyog

标签:

未经允许不得转载:作者:756-周同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Mysql基础(四)—– 运算符,函数和索引》 发布于2020-05-20

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录