MYSQL的必备知识:运算符、字符串操作、时间函数、全文检索

运算符
=,!=(<>),>,>=,<,<= is null , is not null, isnull(expr) expr between min and max expr in(v1,v2,…)

流程
mysql> select ifnull(1,0); #如果第一个参数为NULL,则返回第二个参数值,否则返回原值.
————————————————
mysql>select case 1 when then ‘one’ when 2 when ‘two’ else ‘more’ end;
————————————————
mysql>select if(1>0,’ok’,’no’) #如果条件为真则返回OK,否则返回NO.
————————————————
mysql>select nullif(1,2) #如果exp1 = exp2则返回NULL,否则返回exp1
————————————————
字符串
mysql>select ASCII(‘a’); #返回字符串最左边那个字符的ASCII码值
mysql>select oct(12); #返回字符串表示的八进制形式.
mysql>select hex(255); #返回字符串的十六进制形式.
mysql>select char(3333342); #返回ASSCII码值对应的字符串
mysql>select char_length(‘text’) #返回字符串的个数
mysql>select length(text) #返回字符串的字节数
mysql>select concat(‘str1′,’str2′,’str3′,’str4′,’strn’,) #将参数连接成字符串返回
mysql>select locate(‘字串’,’母串’) #返回字串在母串中第一次出现的位置,如果不存在则返回0
mysql>select lpad(‘str’,11,’.’);
mysql>select rpad(‘str’,11,’.’); #用字符串对str进行左边或右边填充直到他的长度达到11.
mysql> select left(‘strstrstr’,5); #返回字符串最左边的N个字符. mysql>select right(‘strstrstr’,5); #返回字符串最右边的N个字符.
mysql> select substring(‘xxxxxx’,3,3); #从字符串的第三个字个位置起截取三个字符.
mysql> select ltrim(str);
mysql>select rtrim();
mysql> select trim(‘ str ‘);
mysql> select trim(both ‘x’ from ‘xxx..xxx’); #去空格
mysql> select space(6); #返回门个空格
mysql> select repeat(‘str’,3); #返回重复三次的字符串
mysql>select replace(‘www.tom.com’,’tom’,’sina’); #字符串替换
mysql>select reverse(‘abc’); #字符串颠倒
mysql>select lower(‘UPPER’);
mysql>select upper(‘lower’); #转换大小写
mysql> update table set filed = load_file(‘/tmp/file’); where id=1; #读入文件
————————————————–

数字
mysql> select abs(-1); #返回绝对值
mysql> select 4 div 2; #除
mysql> select 5 mod 2; #余
mysql> select floor(x) #返回不大于X的最大整数值
mysql> select ceiling(x) #返回大于X的最小整数
mysql> select round(2.23) #四舍五入
__________________________________________________
时间
mysql>select now(); select now() + 0; #返回时间
mysql>select curdate(); select curdate() + 0; #返回年月日
mysql>select curtime(); select curtime() + 0 #返回小时分秒
—————————————————————
mysql>select database() #返回当前数据库的名子
————————————————–
mysql>select user();
select system_user();
select session_user(); #返回当前MYSQL用户名子
—————————————————
mysql>select password(‘abc’); #口令加密
—————————————————
删除所有表记录 #truncate table 表名; 也叫清空表
#速度快于delete from table
—————————————————
加载数据 load data infile /PATH/文件 into table || mysqlimport dbname /PATH/file.txt 相关命令参数如下:
Usage: mysqlimport [OPTIONS] database textfile… –print-defaults 输出程序参数并退出,该选项为缺省值
–no-defaults 不读入缺省参数,该选项为缺省值
–defaults-file=# 从给定的文件中读入参数
-d, –delete 删除表中元素
–fields-terminated-by=name 每个元素之间的分隔符
–fields-enclosed-by=name 将每个元素括起来的符号
-f, –force 如果有sql错误也继续执行 -?,
–help 显示帮组并退出 -h,
–host=name host的名字 -i,
–ignore 如果有重复的行,保持原行
–ignore-lines=# 忽略开始n行
–lines-terminated-by=name 每行元素分隔符
-p, –password[=name] 连接host时使用的密码 -r,
–replace 如果key重复,使用新行代替原行 -u,
–user=name 用户名
———————————————————-
如何导出数据?
方法一: mysql> select * from 表名 outfile ‘/PATH/file.sql’
mysql> load data infile ‘/PATH/file.sql’ into table fields terminated by ‘,’;
—————————————————————
全文搜索怎么建立?
例如: create table mytable ( name varchar(10), address text, fulltext(name,address) );//OK搞定了
—————————————————————
MYSQL全文搜索(FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建)
例: mysql>select * from table where match(字段一,字段二,字段三) against(‘要搜索的关键字’);
—————————————————————
MYSQL逻辑全文检索?
呵呵 是像这样地: mysql> select * from table where match(字段一,字段二…) against(‘+要找的数据-不要找的数据’);
—————————————————————
补充逻辑全文检索: against里边还可以有什么东东?(1)数据1 数据2: 表示要找到资料当中至少包含数据1或数据2(两数据有一个即可) (2)+ 数据1 +数据2:表示两个数据都要包含在内 (两数据必须同时存在)

如何查看环境变量查询缓存是否开始?其他状态查询方相同的 mysql>show variables like ‘have_query_cache’; mysql>show variables ; //显示所有状态 mysql> show variables like ‘%关键字%’ ==>模糊查找。。。。

mysql>select sql_cache 字段一,字段二 from table; 指定此语句缓存
””’sql_no_cache””””””””””’;。。。。。不缓存

缓存查询结果的最大值也可自己设置
mysql> set @@global.query_cache_limit=1024; mysql> select @@query_cache_limit;
—————————————————————
整理缓存 相当于硬盘的磁盘清理,不过不要担心,这个不会清掉缓存中的查询
mysql> flush query cache;
—————————————————————
清空cache 这个是会清掉缓存中的所有查询!
mysql> reset query cache ; ==== mysql> flush tables;
—————————————————————
查看缓存状态,
show status like ‘qcache%’
—————————————————————
禁止查询缓存
set session query_cache_type = off;
—————————————————————
改用户密码:
1. mysqladmin -uuser password mima;
2.mysql> set password for root=password(‘abcdefg’);
3.mysql> update user set password=password(‘abcdef’)
where user=’user1′
—————————————————————
优化表:
mysql>optimize table;
—————————————————————
数据导入:
mysql> load data infile ‘/path/file’ into table mytable;
or mysqlimport dbname /path/file.txt
—————————————————————
数据库备份
mysqldump –opt dbname > db.sql
mysqldump –opt dbname table1 table2 > 导出库中的两张表
mysqldump –databases db1 db2 > 多个数据库备份
—————————————————————
消除数据表中的重复数据:
select distinct 字段 from 表名;
—————————————————————
查出服务器支持哪个存储引擎
mysql> SHOW ENGINES;