MySQL4:运算符、数学函数库及索引

1152-张同学

发表文章数:21

首页 » MySQL » 正文

十二、Mysql中的运算符

1.算数运算符

MySQL4:运算符、数学函数库及索引

SELECT 1+1,1-1,2*4,3*8;

-- MySQL也可以对不同数据类型进行转化
SELECT 1+'4spike';

-- 当除数为0时,结果为Null
SELECT 3/Null;
SELECT 3 DIV 0;

-- 对Null进行运算,结果都是Null
SELECT 1+NULL;

-- 取余数
SELECT 3%8;
SELECT 3 MOD 8;

2.比较运算符

MySQL4:运算符、数学函数库及索引

-- 比较运算符的结果只能为真或假
SELECT 1=1,1='1',1=2;
SELECT username, username='king' FROM student;

MySQL4:运算符、数学函数库及索引

-- 当需要筛选的值=NULL时,需要使用<=>
SELECT id,username,age,sex,sex<=>NULL FROM cms_user;

SELECT id,username,score,score>=70 FROM student;
SELECT id,username,age,sex,sex IS NULL FROM cms_user;
SELECT id,username,age,age BETWEEN 10 AND 30 FROM cms_user;
SELECT id,username,age,age IN(30,40,50,60) FROM cms_user;
SELECT 's' LIKE '_';
SELECT id,username,username LIKE '____' FROM cms_user;
SELECT id,username,username REGEXP '^t' FROM cms_user;

3.逻辑运算符

MySQL4:运算符、数学函数库及索引

SELECT 2&&2, 2&&0, 2&&NULL, 1||1, 1||0, 1||NULL, 0||NULL;

MySQL4:运算符、数学函数库及索引

-- NULL取反还是NULL
SELECT !1,!0,!NULL;
-- 两个不同为真,则为假
SELECT 1 XOR 0, 0 XOR 1, 1 XOR 1, 0 XOR 0;

MySQL4:运算符、数学函数库及索引

4.运算符的优先级

MySQL4:运算符、数学函数库及索引

十三、MySQL数学函数库

1.数学函数

MySQL4:运算符、数学函数库及索引

-- 进一取整
-- 结果为2
SELECT CEIL(1.2),CEILING(1.2);

-- 舍一取整
-- 结果为1
SELECT FLOOR(1.2);

-- 取余数
SELECT MOD(3,8);

-- 幂运算
SELECT POW(2,2);

-- 四舍五入
SELECT ROUND(3.14);

-- 数字截取
-- 不进行四舍五入,第二个参数代表取几位
SELECT TRUNCATE(3.14159,2);

-- 取绝对值
SELECT ABS(-12);

-- 圆周率
SELECT PI();

-- 返回0-1之间的随机数字
SELECT RAND();
SELECT RAND(12);

-- 返回值的符号
SELECT SIGN(10);
SELECT SIGN(-10);
SELECT SIGN(0);

-- 计算e的几次方
SELECT EXP(3);
SELECT EXP(2);

2.字符串函数

MySQL4:运算符、数学函数库及索引

-- 返回字符串的长度
SELECT CHAR_LENGTH('spike'),LENGTH('spike');
-- UTF8下,一个中文的字符数为1,但长度为3
SELECT CHAR_LENGTH('啊'),LENGTH('啊');

-- 连接字符串
SELECT CONCAT('Hello','World');
SELECT id,CONCAT(username,'_') FROM student;
-- 拼接的字符串中如果有NULL,则结果为NULL
SELECT CONCAT('A','B',NULL);

-- 以指定分隔符连接字符串
SELECT CONCAT_WS('^_^','A','B','C');
-- 如果分隔符为NULL,则整个结果为NULL
SELECT CONCAT_WS(NULL,'A','B','C');
-- 如果连接内容为NULL,则返回的结果中不含NULL
SELECT CONCAT_WS('^_^','A','B',NULL);

-- 全部大写
SELECT UPPER('adasdas'), UCASE('adasd');
-- 全部小写
SELECT LOWER('ERIWEOREW'),LCASE('EDQWEQW');

--返回字符串前/后n个字符
SELECT LEFT('ABCD',2),RIGHT('ABCD',2);

-- 添加指定长度的字符串
SELECT LPAD('S',5,'?'), RPAD('B',5,'!');

MySQL4:运算符、数学函数库及索引

-- 过滤字符串两端的空格
SELECT LTRIM('  DAD'),RTRIM('DAD  '),TRIM(' DAD ');
SELECT CONCAT('_',TRIM('  ABC  '),'_'), CONCAT('_',LTRIM('  ABC  '),'_'),CONCAT('_',RTRIM('  ABC  '),'_');
-- 去掉字符串中指定的字符
SELECT TRIM('A' FROM 'ABCD');

-- 重复字符串指定次数
SELECT REPEAT('S',5);

-- 返回N个空格
SELECT CONCAT('__',SPACE(5),'__');

-- 替换字符串,替换的字符区分大小写
SELECT REPLACE('ABCD','A','___');

-- 比较两个字符串是否相同,比较时不区分大小写,如果A>B,返回1,如果A<B,返回-1
SELECT STRCMP('a','a'),STRCMP('A','a'),STRCMP('A','B');

-- 截取字符串
-- 从第二个位置截取2个
SELECT SUBSTRING('ABCD',2,2);

-- 反转字符串
SELECT REVERSE('abc');

-- 返回指定位置的字符串
SELECT ELT(2,'A','B','C');

3.日期时间函数

MySQL4:运算符、数学函数库及索引

-- 得到当前的日期
SELECT CURDATE(),CURRENT_DATE();
-- 得到当前的时间
SELECT CURTIME(),CURRENT_TIME();
-- 得到当前的日期时间
SELECT NOW();

SELECT MONTH('2020-7-15');
SELECT MONTH(NOW());
SELECT MONTHNAME(NOW());
SELECT DAYNAME(NOW());
SELECT DAYOFWEEK(NOW());
SELECT DAYOFMONTH(NOW());
SELECT DAYOFYEAR(NOW());

-- 周一是0
SELECT WEEKDAY(NOW());

MySQL4:运算符、数学函数库及索引

-- 一年中的多个星期
SELECT WEEK(NOW());

SELECT YEAR(NOW());
SELECT HOUR(NOW());
SELECT MINUTE(NOW());
SELECT SECOND(NOW());

-- 返回两个日期相差的天数
-- 建国25858天
SELECT DATEDIFF(NOW(),"1949-10-01");

4.判断函数

MySQL4:运算符、数学函数库及索引

-- 相当于if和else
SELECT id,username,score, IF(score >=60,'及格','不及格') FROM student;

SELECT id,username,age,sex, IFNULL(sex,'保密') FROM cms_user;

SELECT id,username,score, CASE WHEN score>60 THEN 'ojbk' WHEN score=60 THEN 'Onmjbk'
ELSE '完犊子' END FROM student;

5.系统信息函数

MySQL4:运算符、数学函数库及索引

SELECT VERSION();
SELECT CONNECTION_ID();
SELECT DATABASE(),SCHEMA();
SELECT USER(),SYSTEM_USER();
SELECT CURRENT_USER(),CURRENT_USER;
SELECT CHARSET('DAD');
SELECT COLLATION('SAD');
SELECT LAST_INSERT_ID();

SHOW CREATE TABLE student;
SELECT * FROM student;
INSERT student(username,score) VALUES('KING9',105);

6.加密函数

MySQL4:运算符、数学函数库及索引

SELECT MD5('ADMIN');
SELECT PASSWORD('root'),PASSWORD('king');

7.其他函数

MySQL4:运算符、数学函数库及索引

SELECT FORMAT(3.14159,2);
SELECT ASCII('aBC');
SELECT BIN(16),HEX(16),OCT(16);

-- 将16从十进制转化成16进制
SELECT CONV(16,10,16);

SELECT INET_ATON('127.0.0.1');
SELECT INET_NTOA('2130706433');

-- 定义锁
SELECT GET_LOCK('king',10);
-- 判断整个锁是否被使用,返回的是0,代表锁已经创建
SELECT IS_FREE_LOCK('king');

-- 解锁
SELECT RELEASE_LOCK('king');
-- 解锁后,返回的是1
SELECT IS_FREE_LOCK('king');

十四、索引

1.什么是索引

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

2.索引的分类

  • 普通索引
  • 唯一索引
  • 全文索引
  • 单列索引
  • 多列索引
  • 空间索引

3.如何创建索引

  • 创建表的时候创建索引
    • CREATE TABLE tbl_name(字段名称 字段类型 [完整性约束条件],…,[UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY [索引名称] (字段名称[(长度)] [ASC | DESC]));
  • 在已经存在的表上创建索引
    • CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX 索引名称 ON 表名 {字段名称[(长度)] [ASC|DESC]};
    • ALTER TABLE tbl_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX索引名称(字段名称[(长度)] [ASC|DESC]);

4.如何删除索引

DROP INDEX 索引名称 ON tbl_name

-- 创建普通索引
SHOW TABLES;
DROP TABLE test1,test12,test13,test14,test5,testuser; 

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;
-- 在已经存在的表上创建索引
CREATE INDEX in_id ON test4(id);
ALTER TABLE test4 ADD INDEX in_username(username);

-- 创建唯一索引
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;
-- 在已经存在的表上创建索引
CREATE INDEX uni_username ON test5(username);
ALTER TABLE test5 ADD UNIQUE INDEX uni_card(card);

-- 创建全文索引
CREATE TABLE test6(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE,
card CHAR(18) NOT NULL,
userDesc VARCHAR(20) NOT NULL,
FULLTEXT INDEX full_userDesc(userDesc)
);
-- 删除索引
DROP INDEX full_userDesc ON test6;
-- 在已经存在的表上创建索引
CREATE FULLTEXT INDEX full_userDesc ON test6(userDesc);

-- 创建单列索引
CREATE TABLE test7(
test1 VARCHAR(20) NOT NULL,
test2 VARCHAR(20) NOT NULL,
test3 VARCHAR(20) NOT NULL,
test4 VARCHAR(20) NOT NULL,
INDEX in_test1(test1)
);

-- 创建多列索引
CREATE TABLE test8(
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,test4)
);
-- 删除索引
DROP INDEX mul_t1_t2_t3 ON test8;
ALTER TABLE test8 DROP INDEX mul_t1_t2_t3;
-- 在已经存在的表上创建索引
CREATE INDEX mul_t1_t2_t3 ON test8(test1,test2,test3);
ALTER TABLE test8 ADD INDEX mul_t1_t2_t3(test1,test2,test3);


-- 创建空间索引,空间类型不能为空
CREATE TABLE test9(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
test GEOMETRY NOT NULL,
SPATIAL INDEX spa_test(test)
)ENGINE=MyISAM;
-- 删除索引
DROP INDEX spa_test ON test9;
ALTER TABLE test9 ADD SPATIAL INDEX spa_test(test);
CREATE SPATIAL INDEX spa_test on test9(test);

未经允许不得转载:作者:1152-张同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《MySQL4:运算符、数学函数库及索引》 发布于2020-07-20

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

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

支付宝扫一扫打赏

微信扫一扫打赏

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

登录

忘记密码 ?

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

Q Q 登 录
微 博 登 录