我是一个MySQL小白

  第一回早起装扮

  “mysql,Oracle,SQL-SERVER你们三个 起床没?”,清晨七点多师父喊道。

  “师父,我(mysql)哪敢睡觉呀,我还在查询表呢,有客户的密码忘记了,要我查一下回复他”,我自顾不暇地回答着师父。

  “那你赶紧快一点,一会收拾一下,我要领你们几个去一个神秘的地方”,师父说道,

  “神秘地方?好呀”,我疑惑着答道。

  在数据界混这么多年还有我不知道的地方?师父今天好奇怪,不想了,我赶紧收拾着面前的数据表,已经半年没出山了,马上就要出去了,我要把自己收拾得利索点。

  拿着镜子,我眼看着身上那么多的“子查询语句”,我狠狠拍了一下自己的脑袋,心里暗暗觉得服务器主人太不通情达理了,天天催我加班加点干活赶工期,难怪我把自己弄的这么糟糕,好久没看到这样的自己了,真是难看极了。今天我一定好好捯饬捯饬,我把身上的“子查询语句”换成了“连接JOIN”语句,使用“联合(UNION)”来代替手动创建的“临时表”,优化完毕,终于忙完了,看着数据查询传输极快,嘿嘿,瞬间感觉自己长得相当哇塞。

 收拾完,我往客厅走着,没注意地往Oracle大师兄房间里看了一眼,一瞬间我呆住了。

  二师兄SQL-SERVER也收拾完了,看我傻傻的样子忍不住问道,“看什么呢三弟,看你那呆若木鸡的样子”,然后他也顺着我的目光望去,二师兄看完也傻眼了。我惊讶地问着二师兄:“大哥这数据传输也太厉害了吧,天呐,多么巨大的访问量啊,多么巨大的并发量啊”。二师兄低声说道:“厉害吗?能有我厉害?”。我扭头看着二师兄认真的模样,送给他一副不屑的表情。

“都收拾好了吗?”师父喊道。

“好啦”。我们三个应声答道,我们三个陆陆续续来到了客厅。

  第二回华山论剑

  吃完早饭。

  师父从车库把车开了出来,一打开车门,我们三个就哄抢着坐下。师父开着车子经过了三座大山,终于停在了一家旅馆面前。旁边立着一个牌子写着:“华山数据库排名争霸赛”,难道这就是师父所指的神秘地方,十年磨一剑,大师兄二师兄早就想在数据库大赛上面一展身手,他们做梦就等着这一刻呢,我并没有什么特别的想法。

  休息半日,师父把我们领进入主赛场地。

大师兄纵身一跃首先登场,大声喝到:

  “在下oracle 是大型的数据库,体积大。可以支持多个实例同时运行,功能异常强大”。

  “哪里来的毛贼,居然敢来这里叫嚣,你有我处理速度快吗?哈哈哈”,只看到一个挂着redis牌子的家伙叫嚣到。

  Redis?我的天,这不是非关系型数据库吗?它可以自由自在地在内存里运行,号称数据库界的飞毛腿,这下完了,大师兄一定不是对手,希望大师兄不要和他在这方面一比高下。

  “就凭你?不服来干”,大师兄轻蔑笑道.然后他们开始同时查询数据,Redis 用了30s 的时间就处理2000次请求,100W个ID的查询,大哥那边忙的手忙脚乱,还迟迟没有出来结果。

  大师兄中计了,为什么不扬长避短呢,也难怪,他压根不记得师父教导我们的事情了,我们数据库大致分为两类,一个是关系型数据库在磁盘上面运行,一个是非关系型数据库是在内存上面运行,我们师兄弟三个都是关系型数据库。

  大师兄被拖下去了,二师兄登台。二师兄胸有成竹地问Redis:“你一个非关系型数据库拿速度和我们比算什么本事,有能耐你比一下并发量”。

  Redis看着二师兄,哈哈大笑道:“就凭你那磁盘速度和我比并发量?回家问你师父你有几斤几两再说吧”;

眼看着二师兄要出糗,我觉得有必要登台了。

“大家好,我是mysql,今天来了很多的数据库大师,我一个后辈按理说不应该有说话的余地,但是在此心有不平,就放肆在此一吐为快吧”。

听完我说完,Redis叫嚣到,”你一个小辈滚下去”.

我一时气不过喊道,“你有我存储空间大?”,Redis一时语塞。

我继续说道:“天下比赛,无非都是拿自己的长处来和对手的短处来比,这样的想法早已经过时,既然大家都是数据仓库,传承一脉,理应互帮互助,这场大赛本就是一场友谊赛,大家求同存异互相学习,为什么要斗得脸红脖子粗,试问哪个数据库处理数据不是增删改查,在此我愿意分享我的数据接口,与大家共同来分享学习对方的存储方式,

我首先说的是我的多表查询:

1、链接查询:

a、交叉链接

SELECT * FROM customers,orders;返回的是两张表记录的笛卡尔积。(隐式查询:不使用关键字)

或者

SELECT * FROM customers CROSS JOIN orders;

b、内连接:(根据where取交集)

SELECT * FROM customers c,orders o WHERE c.id=o.customer_id;

或者

SELECT * FROM customers c INNER JOIN orders o ON c.id=o.customer_id;

c、外连接:

查询所有的客户信息,同时把对应的订单查询出来。

左外:(左边为主)返回符合链接条件的记录,同时返回左表中不满足链接条件的剩余记录

SELECT * FROM customers c LEFT OUTER JOIN orders o ON c.id=o.customer_id;

右外:(右边为主)

SELECT * FROM customers c RIGHT JOIN orders o ON c.id=o.customer_id;

外连接 = 内连接+其中一个表的剩余部分

2、几个简单的子查询

嵌套查询,子查询的语句放到小括号之内。

ID=1的这个老师教过哪些学员(语句的查询形式:多条SQL语句)

SELECT s_id FROM teacher_student WHERE t_id=1;

SELECT * FROM students WHERE id IN (1,2);

子查询:

  SELECT * FROM students WHERE id IN (SELECT s_id FROM teacher_student WHERE t_id=1);

  听我说完之后,大家觉得再比下去反倒让一些后生看不上,这位后生说的也不无道理,也就从摩拳擦掌到故意掌声雷动,大家都开始各显身手互相学习,友谊赛变成了开开心心的大团聚。

  大师兄二师兄下台之后显得更加谦逊了。师父责怪我斗志不够,但是看着大家团结互助,我的心中还是很开心的。

欢迎您的阅读,本人微信公众号  "欢乐的马小纪"欢迎关注

我是一个MySQL小白的更多相关文章

  1. 从偶然的机会发现一个mysql特性到wooyun waf绕过题

    从偶然的机会发现一个mysql特性到wooyun waf绕过题 MayIKissYou | 2015-06-19 12:00 最近在测试的时候,偶然的机会发现了一个mysql的特性, 为啥是偶然的机会 ...

  2. 分享一个MySQL分库分表备份脚本(原)

    分享一个MySQL分库备份脚本(原) 开发思路: 1.路径:规定备份到什么位置,把路径(先判断是否存在,不存在创建一个目录)先定义好,我的路径:/mysql/backup,每个备份用压缩提升效率,带上 ...

  3. 如何通过命令行创建和设置一个MySQL用户

    我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制.如何通过命令行的方式来创建并且设置一个MySQL用户呢? 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可 ...

  4. 记录一个mysql连接慢的问题

    问题现象是这样的: 我在一台机器上(61.183.23.23)启动了一个mysql,然后开通一个账号可以从127.0.0.1或者从61.183.23.23访问.但是遇到一个问题就是使用下面两个命令行访 ...

  5. 一个编程小白,如何入门APP软件开发领域?

    近些年,互联网创业火得不得了!一时间,满世界都在招做App软件开发的专业人员.从大众角度来看,学编程,写代码,是一件非常困难的事情.但是,App开发人员的工资那么诱人,让很多小白也跃跃欲试想学一下.那 ...

  6. 第一个MySQL 存储过程

    昨天写了人生第一个mysql存储过程:遗憾的是,这个存储过程最后还是没用上,用php代码替代 话说mysql的存储过程真是反人类,不查reference,基本不能看懂那些语句:语言中能和它相比的,只有 ...

  7. 【JMeter】JMeter完成一个MySql压力测试

    jmeter也可以用来做数据库的压力测试,并且兼容各种数据库类型,只需要更改对应的数据库驱动类和url.以下为整理到的数据库驱动类对应url.并且给出一个mysql数据库select的简单应用.如下: ...

  8. 一个php小白找工作的历程

    一个php小白找工作的历程其实对新工作还是有点忐忑的,对于我这样一个有着特殊工作经历的来说更是如此.为了更好的迎接未来,不得不总结下过去.在经历一段时间的职业生涯探索期后,还是觉得自己更适合做程序员这 ...

  9. Linux 下一个 Mysql error 2002 错误解决

    Linux 下一个 Mysql error 2002 错误解决     首先查看 /etc/rc.d/init.d/mysqld status 查看mysql它已开始.     假设启动的的话,先将数 ...

随机推荐

  1. Twitter Typeahead plugin Example

    原文网址: http://dhtmlexamples.com/2012/02/27/using-the-typeahead-plugin-with-twitter-bootstrap-2-and-jq ...

  2. scrum 第四次冲刺

    一.项目目的 为生活在长大的学生提供方快捷的生活服务,通过帖子发现自己志同道合的朋友,记录自己在长大点滴.本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目采用的技术方向:本项目整 ...

  3. 数据库-identifying 与non-identifying realtionship 区别

    MySQL Workbench 或者是 E-RWin等进行数据库建模时,通常会对数据表进行关联操作,即设置表与表之间的关系 1:1 1:n m:n,而它们具有 identifying realtion ...

  4. typescript import需要注意的地方以及一点疑问

    在使用 import {XXX} from './xxx'的时候,到浏览器上会报错,提示找不到xxx文件,原因在于没有加入后缀,这时候要写成import {XXX} from './xxx.js'注意 ...

  5. GPU使用

    GPU .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1p ...

  6. 可持久化线段树(主席树)快速简洁教程 图文并茂 保证学会。kth number例题

    如果学不会也不要打我. 假设你会线段树 开始! --- 主席树也叫可持久化线段树 顾名思义,它能够保存线段树在每个时刻的版本. 什么叫每个时刻的版本?你可能对一棵普通线段树进行各种修改,这每种样子就是 ...

  7. 牛客国庆集训派对Day2 F、平衡二叉树 【构造+记忆化搜索】

    任意门:https://www.nowcoder.com/acm/contest/202/F 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 1048576K,其他语言2097152K6 ...

  8. PHP设计模式——适配器模式

    <?php /** * 适配器模式 * 适配器模式是将某个对象的接口适配为另一个对象所期望的接口 * * 在需要转化一个对象的接口用于另一个对象时,最好实现适配器模式对象 */ class We ...

  9. 2018.12.21 如何在现有的Eclipse(4.9.0版本)中安装STS (Spring Tool Suite ) Mac环境下

    在Eclipse中安装STS正确步骤实现方式 1.简介说明       spring Tool Suite(sts)就是一个基于Eclipse的开发环境, 用于开发Spring应用程序.它提供了一个现 ...

  10. 教你用SingalR实现后台开发程序运行时时检测

    在调试js的时候都喜欢用console.log输出相应的运行结果或者查看变量值,以便于调试程序bug,可是程序后台代码运行的时候,本地没有问题,线上代码有问题怎么办呢,写日志是一个办法,可是有没有更直 ...