`
k_lb
  • 浏览: 795729 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

常用SQL 操作 以及MYSQL的运算符、字符串操作、时间函数、全文检索

 
阅读更多

常用sql 、 数据库导入导出优化更改用户密码全文搜索

===语句===

DISTINCT用于返回唯一不同的值

对指定列进行返回组合的唯一

SELECT DISTINCT `userRole`, `userChannel`,`userInviteUid` FROM `t_user`

LIKE 操作符 _,%

SELECT * FROM Persons WHERE City LIKE 'N%'

注:在用索引时,支持用 '字符%/_'

IN 操作符允许我们在 WHERE 子句中规定多个值

SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)

BETWEEN 操作符 值可以是数值、文本或者日期;包括两头

SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'

SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'

JOIN

LEFT JOIN

SELECT * FROM `A` LEFT JOIN `B` ON `A`.aID = `B`.bID

是以A表的记录为基础的,left join是以左表为准的.

左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).

B表记录不足的地方均为NULL.

RIGHT JOIN

SELECT * FROM `A` LEFT JOIN `B` ON `A`.aID = `B`.bID

以右表(B)为基础的,A表不足的地方用NULL填充

INNER JOIN

SELECT * FROM `A` INNER JOIN `B` ON `A`.`A`ID = `B`.bID

只显示符合条件的记录,即列出A、B都有的。(INNER JOIN 与 JOIN 相同)

FULL JOIN

SELECT * FROM `A` FULL JOIN `B` ON `A`.`A`ID = `B`.bID

只要其中某个表存在匹配(返回所有的行),FULL JOIN 关键字就会返回行


UNION 操作符用于合并两个或多个 SELECT 语句的结果集 UNION ALL

SELECT column_name(s) FROM table_name1

UNION

SELECT column_name(s) FROM table_name2

SELECT COUNT(column_name) FROM table_name

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)

SELECT MIN(column_name) FROM table_name

AVG(),MAX(), MIN(),SUM()函数


SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY CustomerHAVING SUM(OrderPrice)<2000

HAVING 子句

GROUP BY 语句合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句

======

日期时间

NOW() 返回当前的日期和时间

CURDATE() 返回当前的日期

CURTIME() 返回当前的时间

UNIX_TIMESTAMP(date) 获取unix时间截

SELECT DATE('2008-12-29 16:25:46.635')

DATE(date) 提取日期或日期/时间表达式的日期部分

SELECT EXTRACT(YEAR FROM '2008-12-29 16:25:46.635')

EXTRACT(unit FROM date) 返回日期/时间按的单独部分

SELECT DATE_ADD('2008-12-29 16:25:46.635',INTERVAL 2 DAY)

DATE_ADD(date,INTERVAL expr type) 给日期添加指定的时间间隔

DATE_SUB(date,INTERVAL expr type) 从日期减去指定的时间间隔

SELECT DATEDIFF('2009-12-30','2008-12-29') AS DiffDate

DATEDIFF(date1,date2) 返回两个日期之间的天数

SELECT DATE_FORMAT(NOW(),'%Y %m %d %h:%i %s')

DATE_FORMAT(date,format) 用不同的格式显示日期/时间

字符串味道

SELECT LCASE(column_name) FROM table_name

UCASE 函数把字段的值转换为大写

LCASE 函数把字段的值转换为小写

SELECT MID(`login`, 1, 3) from `user`

MID(c,start[,end]) 函数用于从文本字段中提取字符,MID(column_name,start[,length]),start从1开始

SUBSTRING(c,start[,end]), substring(),同MID

LEFT(c,number_of_char)

RIGHT(c,number_of_char)

SELECT ROUND(column_name,decimals) FROM table_name

ROUND(c,decimals) 函数用于把数值字段舍入为指定的小数位数。decimals小数位数

FORMAT(c,format)

===================================================================

运算符###########################################
=,!=(<>),>,>=,<,<= 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 用户名
----------------------------------------------------------

全文搜索怎么建立?
例如: 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> 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 > 多个数据库备份

1.导出整个数据库
  mysqldump -u 用户名 -p 数据库名 > 导出的文件名
  mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

2.导出一个表
  mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
  mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql

3.导出一个数据库结构
  mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
  -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库
  常用source 命令
  进入mysql数据库控制台,
  如mysql -u root -p
  mysql>use 数据库
  然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
  mysql>source d:wcnc_db.sql (注:如果写成source d:\wcnc_db.sql,就会报语法错误)

--------------------------------------------------

优化表:
mysql>optimize table;
------------------------------------------------
消除数据表中的重复数据:
select distinct 字段 from 表名;
---------------------------------------------------------------
查出服务器支持哪个存储引擎
mysql> SHOW ENGINES;


分享到:
评论

相关推荐

    程序员的SQL金典.rar

     5.2 字符串函数  5.2.1 计算字符串长度  5.2.2 字符串转换为小写  5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 ...

    程序员的SQL金典4-8

     5.2 字符串函数  5.2.1 计算字符串长度  5.2.2 字符串转换为小写  5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 ...

    程序员的SQL金典6-8

     5.2 字符串函数  5.2.1 计算字符串长度  5.2.2 字符串转换为小写  5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 ...

    程序员的SQL金典7-8

     5.2 字符串函数  5.2.1 计算字符串长度  5.2.2 字符串转换为小写  5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 ...

    程序员的SQL金典3-8

     5.2 字符串函数  5.2.1 计算字符串长度  5.2.2 字符串转换为小写  5.2.3 字符串转换为大写  5.2.4 截去字符串左侧空格  5.2.5 截去字符串右侧空格  5.2.6 截去字符串两侧的空格  5.2.7 取子字符串  5.2.8 ...

    MYSQL常用命令大全

    MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列 4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度 5.BLOB TEXT类型,最大长度为65535(2^16-1)个字符...

    MySQL中文参考手册

    o 7.1 文字:怎样写字符串和数字 + 7.1.1 字符串 + 7.1.2 数字 + 7.1.3 十六进制值 + 7.1.4 NULL值 + 7.1.5 数据库,表,索引,列和别名的命名 # 7.1.5.1 名字的大小写敏感性 o 7.2 用户变量 o 7.3 列类型 ...

    MYSQL

    7.4.7 类型转换运算符 7.4.8 控制流函数 7.4.9 数学函数 7.4.10 字符串函数 7.4.11 日期和时间函数 7.4.12 其他函数 7.4.13 与GROUP BY子句一起使用的函数 7.5 CREATE DATABASE ...

    MySQL中文参考手册.chm

    7.4.4 逻辑运算 7.4.5 比较运算符 7.4.6 字符串比较函数 7.4.7 类型转换运算符 7.4.8 控制流函数 7.4.9 数学函数 7.4.10 字符串函数 7.4.11 日期和时间函数 7.4.12 ...

    mysql数据库的基本操作语法

    空字符串“”是不等于null,0也不等于null create table temp( id int not null, name varchar(255) not null default ‘abc’, sex char null ) 上面的table加上了非空约束,也可以用alter来修改或增加非空约束 ...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是数据库操作中最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL中是使用SELECT语句来查询数据的。在这一章中将讲解的内容...

    MYSQL培训经典教程(共两部分) 1/2

    MYSQL高级特性 81 4.1 集合函数 82 4.1.1 行列计数 82 4.1.2统计字段值的数目 82 4.1.3 计算字段的平均值 83 4.1.4 计算字段值的和 84 4.1.5 计算字段值的极值 84 4.1.6 总结 86 4.2 操作...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    MySQL命令大全

    MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列 4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度 5.BLOB TEXT类型,最大长度为(2^16-1)个字符。 6...

    2009达内SQL学习笔记

    大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。 Null:空值 空值当成无穷大处理,所有空值参与的运算皆为空。 空值与空值并不相等,因为空值不能直接运算。 如:prod_price...

    MYSQL培训经典教程(共两部分) 2/2

    MYSQL高级特性 81 4.1 集合函数 82 4.1.1 行列计数 82 4.1.2统计字段值的数目 82 4.1.3 计算字段的平均值 83 4.1.4 计算字段值的和 84 4.1.5 计算字段值的极值 84 4.1.6 总结 86 4.2 操作...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    SQL培训第一期

    拼接字符串,结果为:‘党工委副书记,总支副书记,党支部书记,党委书记,党委副书记,党总支书记,党工委书记,党总支副书记,党支部副书记’ 1.8.9 相似度 1.8.9.1 语法 select utl_match.edit_distance_similarity('...

Global site tag (gtag.js) - Google Analytics