Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4828447
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: LINUX

2009-08-27 16:28:39

1.       关于NULL的问题

   为了测试NULL,你不能使用算术比较 操作符例如=<!=

Select * from per where name is NULL;

Select * from per where name is not NULL;

 

2.随机取数问题(order by birth DESC, order by默认是升序的)

Select * from pet order by rand() limit 3;

 

Order by问题:

 默认排序是升序,最小的值在第一。要想以降序排序,在你正在排序的列名上增加DESC(降序 )关键字:

mysql> SELECT name, birth FROM pet ORDER BY birth DESC;

+----------+------------+

| name     | birth      |

+----------+------------+

| Puffball | 1999-03-30 |

| Chirpy   | 1998-09-11 |

| Whistler | 1997-12-09 |

| Slim     | 1996-04-29 |

| Claws    | 1994-03-17 |

| Fluffy   | 1993-02-04 |

| Fang     | 1990-08-27 |

| Bowser   | 1989-08-31 |

| Buffy    | 1989-05-13 |

+----------+------------+

可以对多个列进行排序,并且可以按不同的方向对不同的列进行排序。例如,按升序对动物的种类进行排序,然后按降序根据生日对各动物种类进行排序(最年轻的动物在最前面),使用下列查询:

mysql> SELECT name, species, birth FROM pet

    -> ORDER BY species, birth DESC;

+----------+---------+------------+

| name     | species | birth      |

+----------+---------+------------+

| Chirpy   | bird    | 1998-09-11 |

| Whistler | bird    | 1997-12-09 |

| Claws    | cat     | 1994-03-17 |

| Fluffy   | cat     | 1993-02-04 |

| Fang     | dog     | 1990-08-27 |

| Bowser   | dog     | 1989-08-31 |

| Buffy    | dog     | 1989-05-13 |

| Puffball | hamster | 1999-03-30 |

| Slim     | snake   | 1996-04-29 |

+----------+---------+------------+

注意DESC关键字仅适用于在它前面的列名(birth);不影响species列的排序顺序。

 

3.取数去重问题

Select distinct owner from pet;

4.日期函数使用

  Select name, birth, CURDATE(), YEAR(CURDATE())-YEAR(birth) AS AGE from pet order by age;

 

5.MySQL模式匹配

 5.1 SQL模式匹配允许你使用_匹配任何单个字符(是下划线而不是中划线),而%匹配任意数目字符(包括零字符)。在 MySQL中,SQL的模式默认是忽略大小写的。下面给出一些例子。注意使用SQL模式时,不能使用=!=;而应使用LIKENOT LIKE比较操作符。

   Select * from pet where owner like ‘B%’;(B开头)

   Select * from pet where owner like ‘%B’;( B结尾)

   Select * from pet where owner like ‘_B’;(任意一个字符+B)

5.2 like not like的正则是俺不熟悉的,下面看看熟悉的, REGEXPNOT REGEXP

   .  单个字符

[…] 括号内的任何字符

* 匹配零个or多个前面的字符

^,$这些都是俺熟悉的,一句话使用REGEXPNOT REGEXP时就和俺平时使用的正则一个意思^_^

6.primary关键字问题

  可以使用两个字段or多个字段结合起来作为关键字,也就是不能重复的

  mysql> CREATE TABLE shop (

    -> article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,

    -> dealer  CHAR(20)                 DEFAULT ''     NOT NULL,

    -> price   DOUBLE(16,2)             DEFAULT '0.00' NOT NULL,

-> PRIMARY KEY(article, dealer));

Insert into shop values(1,’A’,3.45);

Insert into shop values(1,’B’,3.45);这是ok

Insert into shop values(1,’A’,3.45); 1-A就不ok

7.单元素索引的范围访问

     SELECT * FROM t1 WHERE key_col > 1 AND key_col < 10;
      SELECT * FROM t1 WHERE key_col = 1 OR key_col IN (15,18,20);
      SELECT * FROM t1 WHERE key_col LIKE 'ab%' OR key_col BETWEEN 'bar' AND 'foo';

 

 

 

 

 

  

  

 

 

 

 

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