查询:select
排序:order by升序:asc
降序:desc
case when end
count:统计。null不统计。
sum:求和。null不参与运算
where:条件。
from :
group by :分组查询
having:
where和having的比较:
where:
记录过滤器,只针对每条记录,不针分组记录。
通常出现在from子句后面,可有可无。
where不能独立存在,(没有from,不能单独使用)
having:
分组过滤器,只针对分组,不针对每条单独记录
通常出现在group by子句后面,可有可无。
having不能独立存在,(没有group by,不能单独使用)
mysql的查询:对于数据库来说,最重要的就是查询,查询中最重要的就是条件查询,对于mysql来说.相对Oracle较简单,但不是绝对的,如果应用得利,mysql也许更适合你..
1,从问题出发,
我们学习数据库的查询,我认为最重要的一点是从问题出发..再一点一点的深入.并理解,因为所有的查询语句格式都是固定的.
变化的是需要我们解决的问题,因此我就是从问题出发,来学习这个查询语句.
2,需求1,查询所有表中的数据,
这个是最简单的需求,我们只需要两个关键字,一个通配符就可以实现 .如下
select * from TableName;
通过这句简单的语句,其实我们就已经基本学会了查询的SQL;
3,需求2,查询表的姓名为"zhangsan"的信息.,
通过需求2,我们可以查询所有的,信息,这个只是多了一个条件而已,其实我们的所有的查询都是条件查询,
只是条件不同而已.因此我们需要就是怎样去分解问题,把复杂的问题简单化.简单的事情简单做.,
这里啰嗦了一点,后面的话,对于问题+SQL了.
mysql> select * from TableName where name="zhangsan";
4,需求3.
A,查询只显示姓名和出生年月的信息
mysql>select name as 姓名,brithday ad 出生年月 from TableName;
B.查询姓名为"lisi"并显示出姓名和出生年月的信息
mysql>select name as 姓名,brithday ad 出生年月 from TableName; where name="lisi";
5,需求4:查询出生为"1988年"出生的人.
mysql>select * from TableName where birthday="1988"这句是有问题的,我们常常会遇到其它类型时,需要进行转换;
mysql>select * from mysql_test where trim(date(brithday))='1986-01-01';
注意:以上条件不能填为"1986-1-1",这样可能查找不出来,这个知识原理的东西,再看一下..
6,需求5,分页.关键字:limit
A,mysql中的分页较为简单,关键的是记住limit关键字,后面跟着两个参数,如下:
select * from TableName limit 3,4;
注意事项:数字的话(其它需要测试一下),不需要用括号,引号,这个往往容易养成一个习惯.用空格格开即可.
第一个参数代表的是从第几行开始查找,第二个参数为查找几条数据.
B,,数据库分页的一些扩展知识.
, mysql,oracle的索引都是从1开始的,与Java是不一样的,而在Java的数组,集合等都是从0开始
7,需求,按工资的由高到低进行排序:
select * from TableName order by salary desc;
mysql默认由低到高,asc关键字可以不写
8.需求:查询工资的总和,按降序显示
select sum(salary) as 工资总和 from TableName where group by gender having count(*)>2 order by sum(salary) desc;
9,需求:把工资为分为三组
select
name as 姓名,
case salary
when 7000 then '高薪'
when 6000 then '中薪'
when 5000 then ‘起薪’
else '试用期'
end as 薪水情况
from TableName;
建议多练,看懂不动手的话,很难发现问题的..
表结构如下:
mysql> desc mysql_test;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| brithday | date | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.06 sec)