Chinaunix首页 | 论坛 | 博客
  • 博客访问: 598499
  • 博文数量: 66
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1810
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-23 13:53
个人简介

linux

文章分类

全部博文(66)

文章存档

2016年(1)

2015年(14)

2014年(32)

2013年(19)

分类: Mysql/postgreSQL

2013-10-31 21:20:18


  1. 1.mysql 命令行实用程序

  2. 使用何种数据库: USE
  3. 例如:         USE CRASHCORCE;

  4. 了解数据库和表: SHOW

  5. 获得数据库的信息:
  6. 例如:         SHOW DATABASES;
  7. 获得表的信息:
  8.         SHOW TABLES;
  9. 用SHOW来显示表的的表列:
  10.     SHOW COLUMNS FROM customers;

  11. 也可以使用DESCRIBE来显示表的表列:
  12.     DESCRIBE customers;


  13. 2.检索数据

  14. 检索单个列:
  15.     SELECT prod_name FROM prodtors;

  16. 注意:mysql中单条SQL 语句可以不加 ; 号,但多条语句则必须加 ;号,最好的习惯就是加; 号。

  17.      SQL 语句的大小写问题:mysql中不分大小写, 但方便阅读和调试 关键字建议大写;

  18.      空格问题:SQL 中所有的空格都被忽略;
  19. 检索多个列:
  20.     SELECT prod_id, prod_name, prod_price FROM products;

  21. 注意:
  22.        逗号问题:在选择多个列,一定在列名间加逗号,但最后一列不加逗号,否则ERROR;
  23. 检索所有列:
  24.     SELECT * FROM products;
  25. 检索不同的列:
  26.     SELECT DISTINCT vend_id FROM products;
  27. DISTINCT vend_id 告诉MYSQL 只返回不同的(唯一)的vend_id 行。

  28. 限制结果:
  29.     SELECT prod_name FROM products LIMIT 5;
  30. LIMIT 5 指示MYSQL 返回不多于5行。

  31.       SELECT PROD_name FROM products LIMIT 5,5;
  32. LIMIT 5,5 指示mysql返回行5开始的5行。第一个数为其实地址,第二个数为要检索的行行数。
  33. 注意:
  34.     行0 问题:检索出来的第一行为0而不是1.因此,LIMIT 1,1将检索出第二行而不是第一行。
  35.     行数不够问题:LIMIT 10,3 (共13行),则显示余下的3行。
  36.     偏移问题:LIMIT 4 OFFSET 3; 从行3开始取4行,就像LIMIT 3,4

  37. 使用完全限制表名:
  38.     SELECT products.prod_name FROM products;
  39. 表名也可以完全限制:
  40.     SELECT products.prod_name FROM crashcourse.products;

  41.     
  42. 3.排序检索数据

  43. 排序数据:
  44.     ORDER BY 子句取一个或多个列,对数据进行排序。

  45.     SELECT prod_name FROM products ORDER BY prod_name;
  46.     指示MYSQL对prod-name列以字母顺序排序。
  47. 按多个列排序:
  48.     SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;

  49. 指定排序方向:
  50.     ASC:升序,DESC:降序
  51.     select prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC;
  52.     降序排序。
  53.     多个了的排序问题:
  54.     SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;
  55.     prod_price列指定DESC 对Prod_name列不指定,因此,prod_price 列以将序排序,prod_name默认为升序。

  56.     注意:在多个列撒谎那个进行排序时,必须对每一个列指定DESC关键字。
  57.     区分大小写问题:者取决于数据库的设置。

  58. ORDER BY 和 LIMIT 结合:
  59.       SELECT prod_price FROM rpoducts ORDER BY prod_price DESC LIMIT 1;

  60.       注意:ORDER BY 的位置问题:在给出ORDER BY 子句时,应该保证它位于FROM 子句之后。如果使用LIMIT,它必须位于ORDER BY 之后。使用子句的次序不对旧爱那个ERROR。

  61. 4.过滤数据

  62. 使用WHERE 子句:
  63.      SELECT prod_name, prod_price FROM products
  64.      WHERE prod_price = 2.50;
  65.      返回prod_price 为2.5的行。
  66. 之后位于WHERE
  67.      注意:WHERE 子句的位置:在同时使用ORDER BY 和 WHERE 子句时,应该让ORDER BY 位于WHERE 之后,否则ERRor。

  68. WHERE 子句操作符:略.

  69. 检查单个值:
  70.     SELECT prod_name, prod_price FROM products
  71.     WHERE prod_name = 'name';
  72.     
  73.     SELECT prod_name,prod_price FROM produnts
  74.     WHERE prod_price < 10;

  75. 不匹配检查:
  76.     select vend_id, prod_name FROM products
  77.     WHERE vend_id != 1003;

  78.     注意:使用引号问题:如果是字符类型加引号,如果是数字则不加。

  79. 范围检查:
  80.     SELECT prod_name , prod_price FROM products
  81.     WHERE prod_price BETWEEN 5 AND 10;

  82. 空值检查:
  83.     NULL:无值。

  84.     SELECT prod_name FROM products
  85.     WHERE prod_price IS NULL;
  86.     返回没有值的列。

  87. 5.数据过滤:

  88. 5.1 组合WHERE子句:

  89. AND操作符:
  90.     SELECT prod_id, prod_price, prod_name    FROM produnts
  91.     WHERE vend_id = 1002 AND vend_id = 1003;

  92.     AND 用在WHERE子句中的关键字,用来指示检索满足条件的行。

  93. OR 操作符:
  94.     SELECT prod_name, prod_price FROM produnts
  95.     WHERE vend_id = 1002 OR vend_id = 1003;
  96.     
  97.     OR WHERE 子句中使用的关键子, 用来表示检索匹配任一给定条件的行。

  98. 计算次序:
  99.     SELECT prod_name, prod_price FROM produts
  100.     WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;

  101.     比较:
  102.     SELECT prod_name, prod_price FROM products
  103.     WHERE (vend_id = 1002 OR vend_id = 1003 ) AND prod_price >= 10;

  104.     注意:WHERE 子句的使用园括号:最好使用园括号,没有什么坏处,还可以消除歧义。

  105. IN 操作符:
  106.     作用;在WHERE 子句中用来指定条件的使用范围,范围中的每一个条件均可以匹配。
  107.     
  108.     SELECT prod_name, prod_price FROM products
  109.     WHERE vend_id IN (1002,1003) ORDER BY prod_name;
  110.     
  111.     等效:
  112.     SELECT prod_name, prod_price FROM products
  113.     WHERE vend_id = 1002 OR vend_id = 1003
  114.     ORDER BY prod_name;

  115.     IN 操作符的功能和 OR 相同。

  116.     IN 的优点:
  117.     @ 在使用长的合法选项清单时,IN 的语法更清晰且直观。
  118.     @ 在使用IN 时, 计算的次序更容易管理
  119.     @ IN 一般比OR 执行更快。
  120.     @ IN 最大优点是可以包含SELECT 子句。

  121. NOT 操作符:
  122.     
  123.     SELECT prod_name, prod_price FROM products
  124.     WHERE vend_id NIT IN (1002, 1003)
  125.     ORDER BY prod_name;

  126. 6.通配符进行过滤:

  127. 6.1 LIKE 操作符:
  128.          通配符:用来匹配值的一部分的特殊字符。

  129. % 通配符:
  130.     %: 表示任何字符出现任意次数。

  131.     SELECT prod_id, prod_name FROM products
  132.     where prod_name LIKE 'jet%';
  133.     注意:
  134.     区分大小写问题:MYSQL的搜索是区分大小写的,如果区分大小写,‘jet%’ 与 Jet 是不同的。
  135. 位于模式两端:
  136.     SELECT prod_id, prod_name FROM products
  137.     WHERE prod_name LIkE '%anial%'

  138.     注意:似乎%可以匹配任何东西,但有一个例外 ,即NULL。 即使 WHERE prod_name LIKE '%';也不能用匹配用值NULL 作为产品的行。

  139. 正则下划线_ 通配符:
  140.     下划线:    只匹配单个字符。
  141.     
  142.     SELECT prod_id, prod_name FROM products
  143.     WHERE prod_name LIkE ‘_ ton anvil’;

  144. 7.用正则表达式进行搜索;

  145. 使用MYSQL正则表达:
  146.     注意 :MYSQL 仅支持多数正则表达式实现的一个很小的子集。

  147. 基本字符匹配:
  148.     SELECT prod_name FROM products WHERE prod_name REGEXP '1000'
  149.     ORDER BY prod_name;

  150.     REGEXP: 它告诉MYSQL REGEXP后面跟的东西作为正则表达式。
  151.     
  152.     SELECT prod_name FROM products WHERE prod_name REGEXP '.000'
  153.     ORDER BY prod_name;
  154.     
  155.     . 正则表达式中的一个特殊的字符,它表示匹配任意一个字符。

  156.     
  157.     注意:匹配不去分大小写,为区分大小写,可以使用BINARY。WHERE prod_name REGEXP BINARY 'JetPack';

  158. 进行OR 匹配:
  159.        
  160. 使用 |SELECT prod_name FROM producs WHERE prod_name REGEXP '1000 | 1---2' ORDER BY prod_name;

  161. 匹配几个字符之一:

  162.     SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton'
  163.     ORDER BY prod_name;
  164.     [123]指定一组字符。他的意思是匹配 1 or 2 or3.
  165.     [^123]指定匹配除了这些字符以外的任何东西。

  166. 匹配范围:
  167.     [0123456789] == [0-9].
  168.     SELECT prod_name FROM products WHERE prod-name REGEXP '[1-5] Ton'
  169.     ORDER BY prod_name;
  170. 匹配特殊字符:
  171.     为了匹配特殊字符,必须使用\\为前导。\\-表示查找-,\\.表示查找.

  172.     SELECT vend_name from vendors WHERE vend_name REGEXP '\\.'    
  173.     ORDER BY vend_name;

  174. 匹配字符类;
  175.     [:alnum:] 任意字母和任意数字
  176.     [:alpha:] 任意字符
  177.     [:blank:] 空格和制表符
  178.     [:cntrl:] ASCII控制符
  179.     [:digit:] 任意数字
  180.     [:graph:][:print:]相同,但不包含空格。
  181.     [:lower:] 任意小写字母
  182.     [:print:] 任意打印字符
  183.     [:punct:] 即不在alnum 又不在cntrl的字符
  184.     [:upper:] 任意大写字符
  185.     [:xdigit:] 任意16进制数字

  186. 匹配多个实例:

  187. 重复元字符:
  188.     *    0个或多个匹配
  189.     +    1个或多个匹配
  190.     ?     0个或1个匹配
  191.     {n}    指定数目匹配
  192.     {n,}    不少于指定数目的匹配
  193.     {n,m}    匹配数目的范围

  194.     SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
  195.     分析:\\(匹配)【0-9】任意数字staics?匹配?前面的s即s可选。

  196.     SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}' OEDERBY prod_name;
  197.     分析:匹配连在一起的4位数字。

  198. 定位符:

  199. 定位元字符:
  200.     ^    文本的开始
  201.     $     文本的结尾
  202.     [[:<:]] 词的开始
  203.     [[:>:]] 词的结尾

  204.     注意:^有两种用法. 在集合中,用它来 否定该集合,否则,用来指串的开始处。


阅读(1959) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~