mysql 索引+函数查询

1.建立索引

create table t1(

tname varchar(30),

key (tname) -- 建立索引的第一种方式

key tt(tname asc)  tt为索引的名字

);

(2)增加主键约束会自带索引

(3)-- 为tname 字段 建立索引名字为tn

create index tn on t1(tname desc);

(4)create unique index tn on t4(tname desc);-- 建立唯一索引

(5)alter table t add index (tname asc);

(5.1)alter table t4 add index (a);

2.项目一开始不适合建立索引,索引的优点:提高检索速度快,但是数据量不大规模小的不适合建立索引,

缺点:降低数据插入,数据插入修改的速度比较慢,一般的项目刚开始不需要加索引,如果是查找一群的数据也不适合索引

4.--  删除索引

drop index tname on t1;

drop index a on t4;--a 为索引的名字

5.length 返回字段字节数

-- utf 一个字是3个字节, gbk 一个字2个字节,高端的项目建议用gbk  length 获得字节数

select tid,tname,length(tname) from teacher;

6.char_length 返回字段的字的个数(支持多字节)

7.-- 查询有几个字 char_length

select tname ,char_length(tname) from teacher;

utf8 一个汉字为3个字节,gbk一个汉字为2个字节

select tname,length (tname)from teacher;

char varchar是边长的

create table t4(

a  char(6),

b varchar(6)

);

select * from t4;

insert into t4 values (‘李d‘,‘李d‘);

truncate t4; -- 清空t4

select a,b ,length(a),length(b) from t4;

8.-- 五天后

select date_add(curdate(),interval +5 day);当前日期为4/29

-- 五天前  curdate()=now()

select date_add(curdate(),interval -5 day);

9.-- 永远是7天内的会员注册信息个数  date_add(时间,增量)返回一个新的日期

select count(*) from member where regdate between date_add(curdate(),interval -7 day)and curdate();

10.查询系统日期

select curdate(); -- 当前系统日期

select now();-- 当前系统日期

select uuid(); -- 全球唯一字符串

11.  rund 随机

-- 返回0-1直接的随机小数

select rand();

select rand () from dual;

-- round()四舍五入取整数

select round (rand()*5)+0; -- 0-5

-- 随机查询两个记录,不建议使用,查询缓存不能用效率低

select *from student order by rand() limit 2;

-- 查出来的信息随机排列

select *from student order by rand() ;

-- datediff 两个日期之间的差值,大的日期写在前面

select datediff(‘2015-8-1‘,‘2015-3-5‘);

--  timestampdiff()距离今天有几天时间今天的时间为4-29

select timestampdiff(day,‘2015-4-28‘,curdate());

-- timestamp diff()距离现在时间有多少小时

select timestampdiff(hour,‘2015-4-28 19:12:00‘,now());

-- date-format 日期格式化

select date_format(now(),‘%Y年%m月%d日 %h:%i:%s‘);

-- inet_aton将ip转换为整型数字

select inet_aton(‘192.168.1.2‘);

-- inet_ntoa将数字转换成ip

select inet_ntoa(3232235778);

-- unix-timestamp将系统的日期转为数字

select unix_timestamp(now());

-- from_unixtime将系统的日期从数字转换为正常的日期

select from_unixtime(1430308974);

-- date_format使用日期格式化让日期整数改成正常的日期

select date_format(from_unixtime(1430308974),‘%Y年%m月%d日‘);

-- concat-ws 字符串连接  用-将hello和china连接起来

select concat_ws(‘-‘,‘hello‘,‘china‘);

-- concat()在学生名字前面添加姓名:

select concat(‘姓名:‘,sname)from student;

-- 全部改为小写lower

select lower(‘HEEllo‘);

-- 全部改为大写  upper

select upper(‘heellow‘);

-- 从左边截取2个字 left

select left(‘中国人‘,2);

-- 从右边截取2个字right

select right(‘中国人‘,2);

-- concat()把张三丰左边的张字提取出来,把数据修改成张老师

select concat(left(‘张三丰‘,1),‘老师‘);

-- mid()截取从2开始截取一个,此处为从1开始

select mid(‘hello‘,2,1);

-- mid从3开始截取2个

select mid(‘hello‘,3,2);

-- ifnull  判断是否为空,如果第一个值为空,就显示后面的值,如果不为空就显示前面的值

select ifnull(null,‘ok‘);

select ifnull(‘abc‘,‘ok‘);

-- 格式化数字增加2位00的小数位

select  format(100,2);

-- passwored返回41位密文字符串

select password(‘连少蕊‘);

-- md5返回32位密文字符串

select md5(‘张三‘);

-- sha1返回40位密文字符串

select sha1(‘连少蕊‘);

--   if()判断,一般后面有三个值,一个为条件2个值a默认为假,null,‘‘也是假

select if(‘a‘,‘b‘,‘c‘),if(‘‘,‘r‘,‘u‘),if(null,‘a‘,‘f‘);

-- ifnull 如果第一个值为空的就显示缺考,如果不为空就显示前面的

select sname,ifnull(sscore, ‘缺考‘) 缺考 from student;

select sid,sname,sgender,sdept,ifnull(stid,‘无代课老师‘) 无代课老师 from student;

-- 删除stid=1 的学生

delete from student where stid=1;

来自为知笔记(Wiz)

时间: 2024-10-14 01:00:08

mysql 索引+函数查询的相关文章

MySql 利用函数 查询所有子节点

前提:mysql  函数  find_in_set(str,strlist), cast(value as type)   一.find_in_set(str,strlist):如果字符串str是在的strlist组成的N子串的字符串列表,返回值的范围为1到N.  如果str不在strlist或strlist为空字符串,则返回值为 0 .如任意一个参数为NULL,则返回值为 NULL. 这个函数在第一个参数包含一个逗号(',')时将无法正常运行.   ①find_in_set(str,strli

MySQL多表查询之外键、表连接、子查询、索引

一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两张表:部门表(dept).员工表(emp).Id=Dept_id,而Dept_id就是员工表中的外键:因为员工表中的员工需要知道自己属于哪个部门,就可以通过外键Dep

MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引

注:本文转自:http://www.cnblogs.com/smyhvae/p/4042303.html 本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的.所以说,如果谈到了外键,一定是至少涉及到两张表.例如下面这两张表: 上面有两

MySQL索引和优化查询

来自:http://blog.chinaunix.net/uid-29532375-id-4144615.html 索引和优化查询 恰当的索引可以加快查询速度,可以分为四种类型:主键.唯一索引.全文索引.普通索引.主键:唯一且没有null值.create table pk_test(f1 int not null,primary key(f1));alter table customer modify id int not null, add primary key(id);普通索引:允许重复的

mysql索引原理与查询快慢

=========索引原理与慢查询======= 阅读目录 -     一.介绍 -     二.索引的原理 -     三.索引的数据结构 -     四.聚集索引与辅助索引 -     五.MySQL索引管理 -     六.测试索引 -     七.正确使用索引 -     八.联合索引与覆盖索引 -     九.查询优化神器-explain -     十.慢查询优化的步骤 -     十一.慢日志管理 一.介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般

MySQL自定义函数、视图、索引

MySQL视图 创建视图:(虚拟表)create or replace view 名称 as select ...(查询语句) MySQL自定义函数只有一个返回值,不能返回结果集,可以在SQL语句中调用自定义函数functiondelimiter // drop function if exists getname;create function getname(studentid int)-- 定义返回类型returns varchar(20)begin -- 声明变量    declare

视图 触发器 存储过程 函数 流程过程 索引 慢查询

视图 触发器 存储过程 函数 流程过程 索引 慢查询 视图 触发器 事务 存储过程 内置函数 流程控制 索引 视图 1.什么是视图 ? 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 ? 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 强调

mysql中条件查询加排序和索引的关系

跟一个朋友,不错公司的主管交流时,对于mysql中条件查询和排序时 与索引的关系 mysql> explain select * from article where title='希望光伏企业挺过2个月' o rder by id desc\\\\\\\\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: article type: index pos

mysql使用索引优化查询效率

索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度.在没有索引的情况下,数据库会遍历全部数据后选择符合条件的:而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项.如果我们把SQL语句换成"SELECT * FROM 表名 WHERE id=2000000",那么你是希望数据库按照顺序读取完200万行数据以后给你结果还是直接在索引中定位