MySQL-DAY04

1.运算符的使用

2.数学函数库

3.字符串函数库

4.日期时间函数

 5.条件判断函数、系统函数及其他常用函数

 

 

 6.索引的使用

        索引是对数据库表中一列或多列的值进行处理后的一种结构,使用索引可快速访问数据库表中的特定信息。分为Hash索引和B+tree索引。

 

 7.图形化工具管理数据库

 

############################DAY04########################################

-- 数字函数库
SELECT NOW();   #返回现在的时间
SELECT VERSION();  #返回mysql的版本信息
SELECT CEIL(1.2),CEILING(1.21); #返回2,2   进一取整,把浮点数有小数的加一取整
SELECT FLOOR(3.14);  #返回3   舍一取整
SELECT MOD(3,8);  #取余数
SELECT POWER(2,3),POW(2,3); #返回:8,8   幂运算
SELECT ROUND(3.146666,2); #返回:3.15   四舍五入
SELECT TRUNCATE(3.146666,2) #返回:3.14 截取
SELECT ABS(-5.2);  #返回5.2   取绝对值
SELECT PI();   #返回圆周率
SELECT RAND();  #返回随机数, RAND(x)可以加标志,使得每次返回的值是固定的
SELECT SIGN(9),SIGN(0),SIGN(-9); #返回:1,0,-1  正数是1,负数是-1,零返回0
SELECT EXP(2);   #返回e的2次方

-- 运算符
SELECT 1+1,2*3,5-9,9/3; #返回:2,6,-4,3
SELECT 8/2,8 DIV 2;  #返回:4,4
SELECT 3%8,3 MOD 8; #返回3,3
SELECT 1+NULL,5*NULL;  #对 NULL 的所有运算都是 NULL
SELECT 1=1,1='1',1=2; #返回1,1,0
SELECT username,username!='king' FROM user13;  # !=  不等于
SELECT id,username,age,email,age<=>NULL FROM user13;  # 与 NULL 相关的等于用 <=>
SELECT id,username,score,score>=70 FROM student; 
SELECT id,username,age,age IS NULL FROM user13;
SELECT id,username,age,age IS NOT NULL FROM user13;
SELECT id,username,score,score BETWEEN 70 AND 90 FROM student; 
SELECT id,username,score,score in(50,60,95) FROM student;  # in 或 not in
SELECT 's' LIKE '_'; #返回1
SELECT 'ss' LIKE '_'; #返回0
SELECT id,username,username LIKE '___' FROM user13; 
SELECT id,username,username REGEXP '^k' FROM user13; # 正则运算,以k开头
SELECT 2&&2,2&&0,2&&NULL,1||1,1||0,1||NULL,0||NULL,NULL&&1; #返回:1,0,NULL,1,1,1,NULL,NULL
SELECT 1 XOR 1,1 XOR 0, 0 XOR 1,0 XOR 0; #返回:0,1,1,0   异或,相异为1

-- 字符串函数
SELECT CHAR_LENGTH('maizi'),LENGTH('maizi');  #返回:5,5  返回字符串中字符数,返回字符串长度
SELECT CHAR_LENGTH('啊'),LENGTH('啊');  #返回:1,3
SELECT CONCAT('hello','world');  # 返回helloworld
SELECT id,CONCAT(username,'-','*')FROM student;  # 所有名字后加 -*
SELECT CONCAT('a','b',NULL);  # 有 NULL 时返回null
SELECT CONCAT_WS('-','a','b','c'); #返回:a-b-c
SELECT UPPER('this is a test'),UCASE('this is a test');  #返回大写
SELECT LOWER('THIS IS A TEST'),LCASE('THIS IS A TEST');  #返回小写
SELECT LEFT('ABCDEF',2),RIGHT('ABCDEF',2);    #AB,EF    返回前两个,返回后两个
SELECT LPAD('A',5,'?'),RPAD('A',5,'!');    #????A,A!!!!  前填充5个,后填充5个

SELECT '  ABC  ',                      #'  ABC  '
CONCAT('_',TRIM('  ABC  '),'_'),       #'_ABC_'     去掉所有空格
CONCAT('_',LTRIM('  ABC  '),'_'),      #'_ABC  _'   去掉左端空格
CONCAT('_',RTRIM('  ABC  '),'_');      #'_  ABC_'		去掉右端空格

SELECT TRIM('A' FROM 'ABCA');  #返回:BC     去掉A
SELECT REPEAT('H',5);		#HHHHH   重复5次
SELECT CONCAT('_',SPACE(5),'_');  #'_     _'    SPACE(N) 表示N 个空格
SELECT REPLACE('ABCDA','A','_');		#'_BCD_'   REPLACE(str,from_str,to_str)函数区分大小写
SELECT STRCMP('a','  a');  # 比较字符串,不区分大小写
SELECT SUBSTRING('ABCDEF',2,2);  #'BC'    从第2个位置开始数2个返回
SELECT REVERSE('ABC');					 #'CBA'   颠倒顺序
SELECT ELT(2,'a','b','c','d');   #'b'     返回起始从1开始数

-- 日期时间函数
SELECT CURTIME(),CURRENT_TIME() #获取当前时间
SELECT NOW();  #获取当前年月日 时分秒
SELECT MONTH('2022-04-26'); #返回:4   返回日期中的月份值
SELECT MONTH(NOW()); #返回日期中的月份值
SELECT MONTHNAME(NOW()); #返回月份:April
SELECT DAYNAME(NOW());  #返回星期几
SELECT WEEK(NOW());  #返回一年中的第几个星期
SELECT YEAR(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
SELECT DATEDIFF(NOW(),'1992-4-26');  #返回两个日期之间相隔的天数

-- 条件判断函数/系统函数
SELECT id,username,score,IF(score>=80,'优秀','合格') FROM student;
SELECT id,username,score,IFNULL(score,100) FROM student;  #把 NULL 替换为100
SELECT id,username,score, CASE WHEN score>60 THEN '继续努力' WHEN score=60 THEN '刚及格' ELSE '未及格' END FROM student;
SELECT id,username,score, CASE WHEN score>90 THEN '不错' WHEN score<90&&score>60 THEN '及格' ELSE '未及格' END FROM student;
SELECT VERSION();  #当前版本号
SELECT CONNECTION_ID();  #服务器连接数
SELECT DATABASE(),SCHEMA(); #当前数据库名称
SELECT USER(),SYSTEM_USER(); #当前用户
SELECT CURRENT_USER(),CURRENT_USER; #当前用户
SELECT CHARSET('AAA'); #返回:utf8   返回字符串的字符集
SELECT COLLATION('AAA');#返回:utf8_general_ci   返回字符串的校验字符集
SELECT LAST_INSERT_ID();#得到最近生成的插入记录的 auto_increment 自增长值

-- 加密函数及其他函数
-- MD5(str)
SELECT MD5('ADMIN'); #返回:73acd9a5972130b75066c82595a1fae3
SELECT LENGTH(MD5('admin')); #返回:32
SELECT PASSWORD('king'); #加密算法
SELECT FORMAT(3.14567,2);  #返回3.15   将数字格式化,并返回保留2位小数的值
SELECT ASCII('abc'); #返回第一个字母的ascii码
SELECT BIN(5),HEX(5),OCT(5);  #二进制  十六进制   十进制
SELECT CONV(5,10,2);  # 把 5 从 10进制转换为2进制
SELECT INET_ATON('127.0.0.1');  #返回:2130706433    把IP地址转换为数字
SELECT INET_NTOA(2130706433);   #返回:127.0.0.1     把数字转换为IP
SELECT GET_LOCK('king',10);  #定义锁,创建新锁,之前的锁会被删掉
SELECT IS_FREE_LOCK('king'); #判断锁是否存在
SELECT RELEASE_LOCK('king');#解锁


-- 索引的使用
-- 创建普通索引
CREATE TABLE test4(
id TINYINT UNSIGNED,
username VARCHAR(20),
INDEX in_id(id),    #给哪个字段添加索引
KEY in_username(username)  #索引名称
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 删除普通索引
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;
DROP INDEX username ON test5;
-- 添加唯一索引
CREATE UNIQUE 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,
userDesc VARCHAR(20) NOT NULL,
FULLTEXT INDEX full_userDesc(userDesc)
);

-- 删除全文索引
DROP INDEX full_userDesc ON test6;
-- 创建全文索引
CREATE FULLTEXT INDEX full_userDesc ON test6(userDesc);
ALTER TABLE test6 FULLTEXT UNIQUE INDEX full_userDesc(userDesc);


-- 创建单列索引
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,
test5 VARCHAR(20) NOT NULL,
INDEX in_test(test1)
);

-- 创建多列索引
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,
test5 VARCHAR(20) NOT NULL,
INDEX mul_t1_t2_t3(test1,test2,test3)
);

-- 删除多列索引
DROP INDEX mul_t1_t2_t3 ON test8;
ALTER TABLE test8 DROP INDEX mul_t1_t2_t3;
-- 添加多列索引
ALTER TABLE test8 ADD INDEX mul_t1_t2_t3(test1,test2,test3);


-- 创建空间索引
-- 数据类型必须为 MyISAM
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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值