mysql for 运营简明教程

大纲

mysql查询是一种入门很简单的技术,最简单的查询长得像这样:select * from user,简单查询用户表(不建议直接使用)。完整一点的查询长这样:select * from user where id=1 order by time desc limit 10。查询主要由4部分组成:

  • select 部分,表明你要查什么,*代表所有,一般不推荐。建议需要查什么字段都写上去,支持嵌套查询语句。
  • from 部分,表明你要从哪里查,可以多表联合查询。
  • where 部分,表明你的筛选条件,也支持嵌套,是查询语句中最重要也最复杂的部分。
  • order 后面的部分,表明你想要怎么展示。语法上这部分不是必须的,但是除了导出,大家在日常使用中必须要加。
    下面按照重要程度进行详细介绍。(注意:示例代码不一定完整,实际使用的这4部分基本都要有!)

where

日常使用中一般会用到下面几个基本语句:

对比判断

  • 如需要查询名字是小明的用户,可以用where name = '小明',注意字符串必须用单引号包裹,不要用双引号。
  • 想要查询年龄是18岁或者是30-40岁的用户,可以用where age=18 or (age>=30 and age <=40)。和数学一样,括号里面的优先计算,所以不熟练的情况下建议多打括号。
  • 上面的语句可以优化成where age=18 or age between 30 and 40,between是一个语句,不需要用括号,包含两端(30和40)。
  • 不等于用!=,如where age!=18就是年龄不为18的。

模糊查询

如果我们只知道一个人名字里面有“明”,那么我们需要用到模糊查询:where name like '%明%'。%是通配符,代表任意字符,这个语句可以查询所有名字里面带“明”字的用户。一般情况下这种查询会很慢,建议少用,或者明确知道“明”在前面还是后面时,去掉一个%来提高效率。

in查询

想要查询年龄是2 4 8岁的用户,可以用in查询:where age in (2,4,6)。选项用逗号分隔,外面用括号包裹。更复杂一点(可选学习),它还可以嵌套查询,比如想查询18岁用户上了哪些课,可以这么写:select name from classChoose where userId in (select id from user where age=18)。这里查的是classChoose表,条件里面通过(select id from user where age=18)来获取所有18岁用户的ID,然后用in来进行匹配筛选。in里面的嵌套查询只能select一个字段,用以匹配筛选,嵌套查询需要用括号包裹。


from

from里面是你想要查询的表,如user。表名建议使用双引号包裹,否则和系统关键字一样会报错(示例里面都没有加,是因为切换输入法麻烦,正常使用建议都加防止出错)。多表查询如下:from user join classChoose where user.id=classChoose.userId,使用join进行连接多个表,然后用where限定连接条件。join理论上可以无限写,但是多写一个占用的空间会多一个数量级,在没有合适限定条件的情况下数据库会爆炸(假设A表有10W数据,B表1000数据,两表简单连接会产生1亿条数据)。所以多表连接必须写好限定条件。

有时候会涉及两个相同的表联查,涉及上下级的时候比较常见。这个时候需要写别名,如select u1.name,u2.age from user u1 join user u2 on u1.id=u2.fatherId where u1.time>10086。表名+空格+别名即可,其他地方使用这个表只能使用别名,原本的名字相当于隐藏了。


select

select里面是你要查什么,一般是表里面的字段,如select name from "user"注意,user在postsql里面是关键字,这里的表名不加双引号就会报错,所以建议表名都要加)就是查询用户的名称。如果是连表查询,字段前面需要加所属表的名称,如"user".name,否则容易出错。

select里面还有一些统计函数,如select count(*) as userCount,sum(age) as age,avg(age) as avgAge,min(age) as minAge,max(age) as maxAge。这里as代表别名,函数一般比较长,所以一般会设置一个别名方便看。userCount是一共有多少数据(如果有where,那么都是筛选后的数据),age是年龄总和,avgAge是平均年龄,minAge maxAge分别是最大最小年龄。这里除了count函数以外,其他的都需要输入字段,告诉数据库你要看哪个字段的统计数据。在使用统计数据函数的时候,无法查询普通字段,因为已经给你聚合统计了。高级用法后续会讲。

(可选学习)select还可以进行嵌套查询,如select name,(select count(*) from classChoose where classChoose.userId=user.id) as classes,这样一句话就可以查到用户的信息以及他选了多少课,在需要连多表查询多个统计信息的时候会很方便。要点是,嵌套的查询只能select 1个字段,然后需要用括号包裹起来,可以引用主表(这里是user表)里面的字段(user.id)。


杂项

where语句后面的内容统称为杂项,常用的有order by age asc limit 10order by是对结果进行排序,asc是升序,desc是降序。limit是限制返回多少条,一般不要太大(一般200足够了,多也不要超过1K),太大了占带宽且慢。

和统计函数一起有个高级用法,group by。它可以和统计函数一起进行分组统计,如select avg(age) as age,level from user group by level,就是按照等级来看用户的平均年龄,在这种情况下select里面可以添加group by中的字段。group by支持多个字段,如select avg(age) as age,level,class from user group by level,class就是按照等级和班级进行分组统计。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容