日期:2014-05-16  浏览次数:20717 次

mysql技巧杂烩 (一)
1. mysql控制台
  a. "select * from t \c  " 里的 "\c" 告诉mysql忽略当前的语句
  b. 也可以通过Tab键来补全表名、列名
  c. 可以不进入mysql控制台,直接在shell状态下执行mysql语句, 如 mysql -e "select * from person" cookbook -u root -p ("cookbook"是数据库名)
  d. 让查询结果分页:先执行\P /usr/bin/less, 再执行你的查询如 select * from person
  e. “垂直”地输出结果(每列独占一行):select * from person \G

2. SQL 方言
  a. 拼接函数: concat(c1, c2)
  b. 空字符串 不等于  NULL, 这一点跟oracle不同
  c. 用limit关键字选取若干行
     i. select * from person order by id limit 5 --取前5行
    ii. select * from person order by id limit 0,5  -- 取 第[0,1,2,3,4]行, 共5行
  d. 大小写转换: UPPER(), LOWER()函数
  e. mysql支持基于正则表达式的查询,如 select * from person where name regexp '^[0-9]+'
  f. mysql支持通过fulltext进行全文搜索,默认情况下fulltext索引只收录4个字母以上的单词
  g. 可以按临时指定的顺序排序:select * from person order by field(name, 'larry', 'abel', 'zynga')
  h. 可以使用inner join, left join,right join等关键字进行表连接,不支持使用a.id=b.id(+)这种方式实现外连接
 i. 支持union关键字
  j. 支持使用"--"作为注释符号,但MySql的正牌注释符是"#"


3. 字符集
  a. 查看表的字符集、Collation(决定排序标准:show table status like 'person' 或 show create table person; 
  c. 默认字符集是 latin1
  d. Collation gbk_chinese_ci的意思是:按gbk规定的方式来排序,ci代表排序时大小写不敏感
  e. charset和collation都可以在建表时指定;另外,每个charset都有一个默认的collation,如果你在建表时没有指定collation,系统将使用该charset默认的collation
  f. 如要通过mysql客户端查看utf8编码的数据库,可以在连接后执行 set names 'utf8';
  g. 查看服务器支持的所有charset: SHOW CHARACTER SET;
  h. 查看某charset下所有的collation: SHOW COLLATION LIKE 'latin1%';
  i. Collation是否大小写敏感会影响排序.
    i. "ci" => A a b B
   ii. "cs" => A a B b
  iii. "bin" => A B a b
  j. Collation是否大小写敏感也会影响查找。"ci"时 where name = 'a' 可以查出'a'和'A', "cs"和"bin"时则只能查出'a'

4.数据库对象名的大小写问题
  a. 操作系统的文件名大小写敏感性决定了数据库名和表名的大小写敏感性。在大多数Unix中数据库名和表名对大小写敏感,而在Windows中对大小写不敏感
  b.同一条语句里,表的别名对大小写敏感
  c. 列、索引、存储子程序和触发器名在任何平台上对大小写不敏感,列的别名也不敏感。