世界头条:mysql中select是什么意思?如何用各种操作符来设定select语句?
数据表都已经创建起来了,假设我们已经插入了许多的数据,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,比如说:可以象下面这样把整个数据表内的内容都显示出来
select * from president;
也可以只选取某一个数据行里的某一个数据列
(相关资料图)
select birth from president where last_name=’Eisenhower’;
select语句的通用形式如下:
select 你要的信息
from 数据表(一个或多个)
where 满足的条件
select语句有几个子句,他们的各种搭配能帮你查出最感兴趣的信息,这些子句可以很简单,也可以很复杂,看看作者是如何详细讲解的
1,用各种操作符来设定检索条件
要想让select语句只把满足特定条件的记录检索出来,就必须给它加上where字句来设置数据行的检索条件。只有这样,才能有选择地把数据列的取值满足特定要求的那些数据行挑选出来。可以针对任何类型的值进行查找,比如说,对数值进行搜索
select * from score where score>95; //显示所有分数在95分以上的信息
也可以针对字符串值进行查找
select last_name,first_name from president where last_name=’Tom’; //找出所有姓tom的总统
还可以对不同类型的值进行组合查找
select last_name,first_name,birth,state from president
where birth
//找出1950年前出生于VA州或BA州的总统
可见 where子句中可以使用的是算术操作符(+-*/%),比较操作符(<>=)以及逻辑运算符,我们应该熟练理解这些操作符的含义(都很简单)
2,NULL 值的特别处理
这是一种不属于任何类型的值。它通常用来表示“没有数据”“数据未知”“数据缺失”“数据超出取值范围”“与本数据列无关”“与本数据列的其它值不同”等多种含义。在许多情况下,NULL 值是非常有用的。
我们的各种操作符是不能对NULL 值进行处理的,如果相对NULL 值进行查找,用的是 is null 或 is not null 来进行判断,举例如下:
select last_name,first_name,birth,state from president
where death is null; //找出所有没死的总统
在某些情况下,NULL 值是很有用的类型,大家慢慢就会理解的。
3,查询结果进行排序
一般说来,如果创建了一个数据表并向里面插入了一些记录,当发出一条select * from name命令的时候,数据记录在查询结果中的先后顺序通常与它们被插入时的先后顺序一样.这当然符合我们的思维习惯.但这只是一种"想当然"的假设而已,事实上,但记录被删除时,数据库中会产生一些空的区域,MYSQL会用新的记录来填补这些区域,也就是说,这个时候本假设就不正确了.因此我们必须记住一点,从服务器返回的记录行的先后顺序是没有任何保证的!如果想要按照一定的顺序,就必须使用order by 子句来设置这个顺序.
select last_name,first_name,birth,state from president
order by last_name; //让总统们的名字按字母顺序排列
还可以设置排列的升序降序
select last_name,first_name from president
order by state DESC,last_name ASC;
//先按照出生地的降序排列,同出生地的按照姓氏的升序排列
注意:如果结果中含有NULL 值,默认情况下他们总是出现在查询结果的开头。
4,限制查询结果中数据行个数
这个简单,只要用limit 子句就可以了,看两个例子:
select last_name,first_name,birth,state from president
order by birth limit 5;//只想看前5个
order by birth limit 10,5; //返回从第11个记录开始的5个记录(跳过了10个)
小技巧:从president表中随机找出一个总统来玩:
select last_name,first_name,birth,state from president
order by rand() limit 1; //这是用了表达式求值的方法,在哪里都管用
5,对输出列进行求值和命名
为了提高效率,MYSQL还可以把表达式的计算结果当作输出列的值。表达式可以很简单,也可以很复杂。例如:下面这个查询有两个输出列,前一个输出列对应一个非常简单的表达式(一个常数),而后一个输出列则对应着一个使用了多个算术运算符和两个函数调用的复杂表达式。
Select 17,format(sqrt(3*3+4*4),0))
输出:17 5
再看这个命令:把两个输出列合并成一个
select concat(first_namem,’ ‘,last_name),concat(city,’,’,state) from president;
如果合并之后输出列的标题过长,则可以给其一个别名,如:
select concat(first_namem,’ ‘,last_name) as name,
concat(city,’,’,state) as birth place
from president;这样就比较美观了。
6,和日期有关的问题
首先记住:在MYSQL中,年份是放到最前面的!我们通常对日期进行下列操作:
按日期进行排序
查找某个日期或日期范围
提取日期中的年,元,日各个部分
计算两个日期的间隔
用一个日期求出另外一个日期
看例子:
select * from event where date=’2002-10-01’ //看看这天有何考试信息?
select last_name,first_name,birth,state from president
where death>’1900-01-01’ and death
三个函数year,month,dayofmonth可以分别分离出日期中的年月日来。
select last_name,first_name,birth from president
where month(birth)=3; //谁生在3月 ?
where month(birth)=7 and dayofmonth(birth) =6; //谁生在7月6日?(汤姆克鲁斯?)
函数to_days可以把日期转换为天数。
select last_name,first_name,birth to_days(death)-to_days(birth) as age from president
可以看看这帮家伙都活了多少天!你自己把它改为年吧。
日期值的减法运算还能帮我们计算出现在距离某个特定日期还有多长的时间,这正是我们用来找到需要在近期内缴纳会费的会员的办法:
select last_name,first_name,expiration from member
where (to_days(expiration)-to_days(curdate())<60; //有些人60天内需要花钱了!
7,模式匹配
有些情况下,模糊查询是很必要的,我们使用like和not like加上一个带通配符的字符串就可以了。共有两个通配符”_”(单个字符)和”&”(多个字符)
select concat(first_namem,’ ‘,last_name) as name,
where last_name like ‘W%’; //找到以W或w开头的人
where last_name like ‘%W%’; //找到名字里面W或w开头的人
8,设置和使用SQL变量
MYSQL 3.23.6以上的版本可以使用查询结果来设置变量,我们就能够方面的把一些结果保存起来以供他用。变量的命名规格是:@name, 赋值语法是 @name:=value ( pascal?) 使用起来也简单:
select @birth:=birth from president
where last_name =’adsltiger’;//执行完成后我们就就会有一个@birth变量可用
用一下试试:
select concat(first_namem,’ ‘,last_name) as name from president
where birth
*9,生成统计信息
单纯依靠手工来生成统计信息是一项既艰苦又耗时还容易出错的工作,如果我们能熟练掌握用数据库来生成各种统计信息的技巧,他就会成为很有威力的信息处理工具。作者在这里用了许多篇幅讲这个主题,为了便于大家理解,我分解开来论述:
9.1 找出一组数据中到底有多少种不同的值是一项比较常见的统计工作,而关键字distinct就可以把查询结果中的重复数据清除掉。如
select distinct state from president//看看美国总统们都来自那些州?(重复的不计)
9.2用count()函数来统计相关记录的个数,注意其使用方法:count(*)计算所有的,NULL也要;count(数据列名称) NULL值不计算在内。
select count(*) from president;
9.3如果我们想知道班级内的男女生数目?该如何查询呢?最简单的方法是
select count(*) from student where sex=’f’;
select count(*) from student where sex=’m
但是如果使用count函数结合group by关键字,一行命令就搞定了
select sex,count(*) f rom student group by sex;
我们可以看到,与反复使用彼此类似的查询来分别统计某数据列不同取值出现次数的做法相比,把count(*)和group by字句相结合使用有许多优点,主要表现在:
在开始统计自前,不必知道被统计的数据列里面有多少种不同的取值
因为只用了一个查询命令,我们可以对输出做排序的处理
select state,count(*) as count from president
group by state order by count desc limt4; //看看出生总统最多的前四个州是哪几个?
9.4除了count(),我们还用其他一些统计函数,如求出最小值的min(),求最大值的max(),求和的sum(),求平均值的avg(),在实际工作中,这些函数时经常用到的!
*10,从多个表提取信息
我们目前的例子都是从一个表里面提取信息,但数据库的真正威力还在于用“关系”来综合多个数据表里面的记录,这种操作称之为“关联”或“结合”我们可以看到,select需要给出多个数据表里面的信息(不可重复);from需要知道从哪几个表里面做事;where则对几个表之间的关联信息作出详细的描述。
首先我们要学习最可靠的数据列引用方式:数据表名.数据列名。这样在查询中就一定不会混淆这个数据列到底在哪一个表里。
例子1:查询某一天内的学生们的考试成绩,用学号列出。
select scroe.student_id,event_date,score.score.event.type
from event,score
where event.date=’2003-09-12’
and event.event_id=score.event_id
首先,利用event数据表把日期映射到一个考试事件编号,在利用这个编号把score表内相匹配的考试分数找出来。关联两个表,一个查询搞定。
例子2:查询某一天内的学生们的考试成绩,用姓名列出。
select student.name event.name,score.score,event.type
form event,score,student
where event.date=’2003-09-12’
and event.event_id= score.event_id
and scroe.student_id=student.student_id;
关联三个表,一个查询搞定。
例子3:查询一下缺席学生的名字,学号,缺席次数
select student.student_id,student_name
count(absence.date) as absences
from student,absence
where student.student_id=absence.student_id//关联条件
group by student.student_id;
简单的关联操作就介绍到这里。事实上,对于关联的知识我们需要学的很多很多,比如说,我们怀疑某一个数据表内不存在和我们相关的数据,把么在关联查询的时候如何处理这个表呢?这就涉及到内联接,外联接,左联接,右联接的许多新概念了。不知道大家还有没有信心向下看我的笔记?在本书第四章里面,对关联进行了十分详细的论述,看来“在SQL里面,干粗活的是select”的说法再对不过了。
我们了解了select命令的如此之多的用法,感到了它的灵活性,许多字句的组合能够形成一个非常“精妙”的SQL语句,在基础没有打好之前,我等初学者目前还没有必要去钻研那些技巧性很高的东西,“一定程度的创造性是必要的,但太专业或充满技巧的代码则是各种 bug的发源地,同时也是若干个不眠之夜的前奏”
标签:
相关推荐:
最新新闻:
- 世界头条:mysql中select是什么意思?如何用各种操作符来设定select语句?
- LAMP架构介绍及配置 编译安装Apache httpd服务_焦点观察
- 《原子之心》总监讨论超长延期 暂无多人模式计划 焦点快播
- 全球即时看!漫改动画《放学后失眠的你》PV2公布 今年4月播出
- 《最后的生还者》剧集主演写真 乔尔和艾莉深情合影
- 【全球聚看点】《黑暗之魂3》大型Mod远古王座新演示 大战怪物Boss
- 《釜山行》导演科幻新作《静_E》正式预告 1月20上线网飞 关注
- PS VR2首发将有超30款游戏 《GT7》可免费升级VR版 每日热点
- 环球速讯:消息透露宝可梦新作动向 10代宝可梦面向任天堂下代主机开发启动
- 什么是edi许可证?edi许可证介绍
- 尼尔谈《最后的生还者3》:有更多的故事要讲述
- 什么是IaaS?IaaS应用程序
- 主板BIOS怎么设置?主板BIOS常用设置教程
- 什么是MySQL插入意向锁?为什么需要插入意向锁?
- 什么是VPN?使用VPN违法吗?
- 如何禁止数据写入移动存储设备(U盘)?
- 如何修复DNS服务器无响应问题?DNS服务器无响应修复方法
- 天天动态:确定了!漫威新片《黑豹2:瓦坎达万岁》2月1号正式上线流媒体
- DNS服务器怎么配置?DNS服务器配置方法
- 天天信息:《吸血鬼幸存者》开发者:没有良心手游公司只能亲自开发
- 一行JAVA代码如何运行起来?JAVA代码运行方法
- 传闻:卡普空团队动作游戏《原始袭变》或将登陆XGP
- SQL Server使用脚本实现自动备份
- 北交所单月逾八成破发,打新热情下滑,市场怎么了?
- NodeJS堆溢出的原因 NodeJS堆溢出解决办法
- 什么是PMI指数?PMI如何影响股市?
- 华硕电脑键盘驱动怎么重新安装?电脑键盘驱动安装方法
- SecureCRT安装及破解 SecureCRT简介
- SecureCRT知识介绍 SecureCRT怎么修改会话缓存大小?
- 热议:全面开放两个多月后,日本旅游恢复得如何?
- 怎么修改hosts文件?系统Hosts文件原理和应用
- 如何修改hosts文件?hosts文件修改方法
- Netflix出品韩国科幻《Jung_E》1月20日发布 克隆英雄之战-当前简讯
- 环球时讯:剧版《最后生还者》主演拍写真:乔尔艾莉温情合影
- 什么是Minio?如何搭建Minio集群?
- 中国版《魔兽》?MMO《塔瑞斯世界》首曝预告
- 谷歌GMS是什么?谷歌GMS概述
- 去中心化是什么意思?去中心化理由有哪些?
- 新能源汽车成为焦点!CES 2023展前新品盘点
- 环球时讯:微信红包升级:红包封面动起来了
- 砍单传闻后,媒体称立讯赢得苹果iPhone高端机大单,打破富士康垄断-观速讯
- 环球热文:外媒曝亚马逊将大裁17000人 或是大型科技公司最大规模裁员
- 天天微资讯!国产屏崛起!郭明錤:京东方或超三星成iPhone最大的显示器供应商
- 超高刷新率!外星人推出500Hz电竞显示器|世界观天下
- 《吸血鬼:幸存者》2023年将推出更多DLC
- 毁灭者男星:《银河护卫队3》将是我最后一次饰演该角色:今日报
- 国产饮料霸主被外资「杀死」:曾年销20万吨-焦点报道
- 许鞍华回顾与汤唯合作:彼此都不满意 很遗憾
- 首发499元 限量2000套 仙剑官方竟然推出复刻版Windows 98电脑
- 观天下!LG新款Gram Ulstraslim 笔记本发布 轻至998克
- 首发499元 限量2000套 仙剑官方竟然推出复刻版Windows 98电脑
- 观天下!LG新款Gram Ulstraslim 笔记本发布 轻至998克
- 四大系列 一分钟带来你全方位了解移动版13代酷睿|即时焦点
- 权游二丫本是电影版《最后的生还者》艾莉人选
- 【世界报资讯】Meta在欧洲再遇挫!“定向广告”被罚款超4亿美元,勒令业务模式整改
- 外星人推出M18笔记本:高配24核心i9 可塞9TB硬盘|动态焦点
- 《原子之心》导演称游戏优化好 三核设备也能玩
- CES 2023:雷蛇预告灵刃系列推出16/18英寸游戏本_当前热议
- 环球今日讯!苹果被爆新一代Apple Watch Ultra将配备micro-LED显示屏,或2024年推出
- CES 2023:外星人推出24.5寸500Hz IPS电竞显示器
- 微软对Win7、Win8.1停止安全更新 你受影响了吗? 天天播报
- Win11 22H2又出新Bug:文件管理器随机“突然出现”-全球热门
- CES:ROG发布全系新品笔记本 i9处理器+4090显卡旗舰配置问鼎性能巅峰
- 分析师:任天堂新款主机将于2024年发布:环球观焦点
- 【环球新视野】第三人称卡通风冒险《WHALIEN》1月24日登陆PC 新预告发布
- 《潜行者:切尔诺贝利阴影》虚幻5自制测试版推出 环球今头条
- 天天速读:最高正收益5%,银行权益理财去年业绩比肩百亿私募?方法出人意料
- 为了多赚几个点,这批百亿私募“开年”忙出海 简讯
- 郭明錤:京东方将成为iPhone 15屏幕最大供应商
- 快看:商务部:每人每年仅可出售两辆二手车
- 猛男紫?戴尔新G15配色非常吸睛_世界观热点
- 今日上午10:00首销 摩托罗拉moto G53官网正式开售
- 6K超高分!戴尔CES展出32寸全新显示器 每日讯息
- 《守望》商城DJ皮肤引争议 玩家称其本该在通行证中_天天快消息
- 《浩劫前夕》PC配置公开 推荐GTX 1060
- 清华团队重磅发布,发现抗体对新冠变异株XBB有效!如何防范XBB?疾控中心发声!
- 押注通胀见顶!全球债市喜迎新年_世界最资讯
- 【聚看点】引领世界的看法 海信8K激光电视、ULEDX新品将亮相美国CES
- 豪华散热颜值在线!映众RTX4070TI冰龙超级版首发_全球微资讯
- 贝尔金畅销充电器产品的材料将向再生塑料过渡
- 美媒“全球最强国家”排行榜 韩国全球实力超越日本
- 世界热文:迪士尼连续7年蝉联全球票房最高的电影公司
- 新动态:分析师称NS继任机型将于2024年推出 NS不会有Pro款
- 真的这么费电?Xbox玩家收到的圣诞礼物是一箱电池
- 全球快讯:《寂静岭2:重制版》将忠实地坚持传统故事规范