您的位置:首页 > 数据库 > MySQL

跟我一起学习MySQL技术内幕(第五版):(第一章学习日记5)

2016-03-31 22:48 465 查看
1.4.9检索信息

首先指定默认数据库

use database_name;

select * from table_name;

select column1 ,column2,.....from table_name;

select * from table_name
where condition;

select 2+2,'hello,world',version();


第一组表示显示某个表的全部列

第二组表示显示某个表的指定列

第三组表示显示在指定条件下的全部列(或者指定列)

condition 表示检索条件 例如 where age>15;

第四组表示 如果我的检索并没有涉及到某个表(如表达式)的时候 就不需要from 语句选择某个表了

下边具体介绍检索

1.

指定检索条件 (condition )

这个检索条件还是比较灵活的

下边举几个例子

where  score>95;
where  last_name='ASD';
where  last_name='asd';
where  birth<'1760-1-1';
where  birth<'1700-1-1' and (state='VA' or state='MA');
where state in('NA','NB');


这里需要注意的是win下的默认mysql配置是不区分大小写的,关键字的大小写也是不区分,数据内容的大小写也是不区分大小写的,所以第二个第三个条件下 将会查询到相同的结果。

第二点是算术运算符和比较运算符跟我们接触的其他语言相差不多,逻辑运算符这里比较不同但是都是直接的英文单词作为关键字 and or xor not这里还需要注意的是 and、和or 分别代表且和或,勿混。

第三点in()有在这里提到,它表示查找多个独立值,满足in内部的任何一个选项即可返回目标查询列的值

2.

NULL值

NULl值很特殊。不能将其与值进行比较。所以这里进行检索时,主要运用了两个表达式

where death is null;
where death is not null;


is not null

is null

即判断这一目标元素是否为空

书上还介绍了<==>运算符

where death<==>null;
where not (death<==>null);


3.

对查询结果进行排序

select last_name,first_name from president
order by last_name;


order by 语句就会使将要显示出来的数据表按照 列的类型进行相应的排序,对于本例,将会对last_name按照字母顺序进行排序,原理和我们C语言中字符串的比较cmp()函数是一样的。但是值得注意的是默认排序方式是生序排序,如果我们想让结果降序排序的话,在last_name后加一个desc 然后分号结尾就好了。

(升序的话 我们也同样可以使用关键字asc)

select last_name,first_name,death from  president,
order by state desc,last_name asc;


注意了,这里的两个排序,第二个排序是建立在第一个排序之上的(第二个列起的是辅助的作用)。即如果第一列相邻两个字符串相等的话,第二个再排序,否则如果第一列相邻两个先后明确了,第二列是不需要排序的,否则有可能两个人的first_name就交换啦!那就大错特错了。

select last_name,first_name,death from president
order by if (death is null,0,1),death desc,last_name;


这时候就是在考虑NUll值的影响了。

if()的作用是根据计算第一个参数的值,根据结果决定返回第二个还是第三个参数,对于这条语句,当遇到null ,if()值为零,非null,if()值为1,最终所有null值将会在非null的前边,然后辅助排序的是last_name。

4.

限制查询结果

主要是通过limit与order by的结合来限制查询到的结果,我们可以理解为在进行一次筛选

select birth from president,
order by birth limit 5;


这样就会显示生日在前五名的总统生日 如果加入desc 就是生日最晚的那五位。

select birth from president,
order by birth desc limit 10,5;


这样使用limit的结果就是返回的值是跳过排序结果前十名的十一名到十五名的生日。

order by rand() limit 3;


rand()我们都知道是有关随机数的函数,这样用我们就可以做到随机的从表里抽取若干行。

5.‘

对输出列进行计算和命名

select 17,format(sqrt(25+13),3);
select concat(first_name,' ',last_name) from president;


这就是一些简单的计算,针对于表中的值,可以引用表中的数据,也可以不用。

select concat(first_name,' ',last_name) as new_name
from president;


两个小的注意事项,赋予别名时,如果别名中有空格,这个名字要用 引号包围起来,as关键字可以省略

对于as可以省略 这里经常会有一个错误,书上已经标出 就是调用多列的时候,中间丢失逗号,这样系统默认为第二个字符串为第一个字符串的别名,就会导致错误,应当提起注意,注意代码规范性。

一个半小时,看了十页书,复习了下以前的知识,也熟悉了很多基本的操作。因为1.4.9有十小节。所以我分了两部分。清明节假期要来了。就不祝节日快乐了,哈哈 ,愚人节啦,大家小心啊 ,233333 48小时后

咱们不见不散!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: