想成为高手必须精通一门db并精通SQL(原创,更新in..
时间:2006-09-23 来源:liuxingyuyuni
数据库都不精通还玩P网络编程?我也是菜鸟慢慢来,一点点积累,高手是练出来的.一起进步.
运算符###########################################
=,!=(<>),>,>=,<,<= 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'查询缓存'是什么东东 接着砍砍? 优点?对于执行大量相同SELECT的操作来说这个东西可以提高查询效率(传说是百分之一秒,现在用的MYSQL是5.0,也许5.0.24会不同了呢?),MYSQL执行查询的时候他会在内存中留下以往查询的语句,这样如果下次有相同的查询时就直接调用这个(前提条件这些查询语句必须完全相同!差一点都不行严格到按字节匹配,MYSQL还不支持模糊,并且有过期时间是动态更新的),其实同个SELECT不是这么简单的,他也要经过许多的步骤--》对MYSQL服务器而言,所以下一个脚本里加上这个功能吧.
------------------------------------------------------------
如何查看环境变量查询缓存是否开始?其他状态查询方相同的 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;
---------------------------------------------------------------