day5:函数与索引

1 索引

经常进行排序、分类的字段添加索引。
创建表时添加索引

CREATE TABLE tbl_name(
字段名称 字段类型 [完整性约束条件],,
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [索引名称](字段名称[(长度)] [ASC|DESC])
);

唯一性索引可以在字段时,在末尾通过关键字添加,其他索引不行
在这里插入图片描述

(1)普通索引

创建普通索引

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

查看表格的详细定义
在这里插入图片描述
可以看到两个普通索引

再查看表的结构,普通索引会显示MUL
在这里插入图片描述

(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)
);

在这里插入图片描述
创建了两个唯一性索引。

另外,主键也可以认为是特殊的唯一性索引,只有唯一性索引可以在定义字段的时候,在末尾说明,其他索引都需要另起一行说明哪个字段为索引。

(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)
);

在这里插入图片描述

(4)添加空间索引(用的少,不用掌握)

-- 创建空间索引,字段必须是空间数据类型
-- 存储引擎一定要为MyISAM
CREATE TABLE test10(
id TINYINT UNSIGNED AUTO_INCREMENT KEY,
test GEOMETRY NOT NULL,
SPATIAL INDEX spa_test(test)
)ENGINE=MyISAM;

(5)单列索引与多列索引

单列索引就是在一个字段上添加索引,多列索引就是联合索引

-- 创建单列索引
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)
);

-- 创建多列索引
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)
);
DESC test8;
ALTER TABLE test8 DROP INDEX mul_t1_t2_t3;
ALTER TABLE test8 ADD INDEX mul_ti_t2_t3(test1,test2,test3);

-- 创建多列唯一索引
CREATE TABLE test9(
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,
UNIQUE KEY mul_t1_t2_t3(test1,test2,test3)
);

创建之后可以查看表结构
在这里插入图片描述

(6)删除索引

DROP INDEX 索引名称 ON tbl_name

也可以

ALTER TABLE tbl_name DROP INDEX 索引名称;

(7)为已经存在的表添加索引

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称 ON 表名 {字段名称[(长度)] [ASC|DESC]}

-- 没有指定索引名字时,系统会默认字段名就是索引名字
ALTER TABLE tbl_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX [索引名称](字段名称[(长度)] [ASC|DESC]);

2 运算符

(1)算术运算符

在这里插入图片描述

在这里插入图片描述
MySQL也支持数据类型转换
在这里插入图片描述
在这里插入图片描述
取余
在这里插入图片描述
NULL参与的运算,结果仍为NULL
在这里插入图片描述

(2)比较运算符

比较运算符只能为真或假
在这里插入图片描述
在这里插入图片描述
结果为1代表真,0代表假
在这里插入图片描述

是否为空,不能用=,要用<=>
在这里插入图片描述
正确的应该是0或1才对
在这里插入图片描述
在这里插入图片描述
也可以单独使用
在这里插入图片描述
查询用户名长度是4的用户
在这里插入图片描述
在这里插入图片描述

(3) 逻辑运算符

在这里插入图片描述
在这里插入图片描述
XOR表异或
在这里插入图片描述

(4)运算符的优先级

在这里插入图片描述

2 MySQL的函数

之前像得到MySQL的版本号,就是一个系统函数
在这里插入图片描述

(1)数学函数库

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
TRUNCATE是截断,不是四舍五入

(2)字符串函数库

在这里插入图片描述
中文算一个字符,但在utf8中长度为3
在这里插入图片描述
在这里插入图片描述
字符分割
在这里插入图片描述
如果分隔符为NULL,整个结果为NULL
在这里插入图片描述
连接的内容有NULL,结果不会NULL
在这里插入图片描述
填充到长度为5的位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
替换的时候区分大小写,比较的时候不区分
在这里插入图片描述
返回第二个字符串
在这里插入图片描述

(3)时间日期函数

在这里插入图片描述

(4)条件判断函数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(5)系统信息函数

在这里插入图片描述
在这里插入图片描述
SELECT LAST_INSERT_ID()返回的一定是最近插入的那张表的自增长值

(6)加密函数

在这里插入图片描述
MD5
在这里插入图片描述
返回一个32位长度的字符串

PASSWORD(str)
给用户信息加密用PASSWORD(str)

(7)其他常用函数

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值