Mysql入门到入土之Mysql介绍和Sql基本语法(基础讲解篇)

声明:这套系列旨在帮助我记录和分享Mysql的能力提升,任何人不得用于删改,抄袭,我已申请原创保护,如想交流与转载,请联系作者,认准本人,天宇不看海,生活不易,且行且珍惜.

    文章内容我会分成两个部分来概括,第一部分的知识梳理和第二部分的实战操作,学习实际用法.文章会分两篇更新.(第一,理论,第二实际使用)

本文是Mysql入门到入土系列的第一篇,旨在于帮助我回顾和总结Mysql的基础知识和Sql的入门语法,帮助我们在后来的学习过程中打下基础.如下为文章内容概括:

Mysql的用途,简单介绍
Sql基础语法
Sql简单查询,限定查询,最后的查询排序
以及一些重点的知识总结.

一.基本概念:

  • 数据库:存放信息的仓库,构造简单,遵守规则.
  • 关系型数据库: 关系型数据库的专长就是把分别放在两个数据表中的数据联系(相互匹配)起来,这种联系是通过查找两个数据表的共同元素来实现的
注意其中的数据联系
     衍生命题 关系数据库和非关系型数据库的对比。
  • 表:数据库里的数据都放在数据表(table)中. 由 行(row)和列(column)构成.

      注意:一个数据行就是数据库表中的一条记录,平时所接触的40万数据,过百万数据都是以此为算的.
    
  • Mysql不是数据库,它是关系型数据库管理系统(RDBMS)

  • Sql是结构化查询语言,是用来进行数据库管理的语言,也就是说,我们用sql操纵数据库.

二.sql基础语法

SQL语句语法没有这么复杂,只要掌握好关键字的使用方法就好(阅读即可,重点是掌握实际用法):

SELECT 、 FROM 、WHERE 、 GROUP BY、HAVING 、ORDER BY、INSERT 、UPDATE 、DELETE、CREATE、DROP、ALTER、GRANT、REVOKE

严格来讲,sql会分成三种类型:

 DML(数据操作语言,开发中使用的部分):主要指的是数据库的查询与更新操作. 查询操作是整个sql语法中最麻烦的部分,也是笔试中最为常用的操作部分. CURD

 DDL(数据定义语言,开发前的设计):主要指的是数据对象的创建(表,用户),例如:CREATE、DROP,这一部分的操作需要到相关的设计范式。

 DCL(数据库控制语言,系统人员工作):主要是进行 权限的管理操作,(需要结合用户来观察),此部分由DBA负责.

 TPL 事务处理语言,它的语句能确保被DML语句影响的表的所有行及时得以更新。这个模块会在之后的内容中讲到,此处留个印象就好.

约定俗成的概念

1.在sql语句中,SQL关键字和函数名都要用大写英文字母,而数据库,数据表,数据列的名称全部用小写字母。
2.在语法描述时,【】方括号表示语法可选,可选内容以| 分隔 {}花括号表示必须出现,必须从其中选择一个数据项.
【】方括号表示里面参数可选. | 竖线分割参数
{} 花括号内的内容是指必不可少的,
3.【①】是指执行顺序.

三.sql简单查询

整个SQL结构就是由若干个关键字所组成,所以掌握简单查询,也是关键字的使用.

所谓的简单查询就是指查询一张数据表中所有数据行的内容.

【②】 SELECT [DISTINCT] * 列名称 [别名],列名称[别名],...
【①】FROM 表名称 [别名];
在以上的结构之中,首先执行的是FROM子句,因为必须通过FROM子句确定数据的来源.而后要针对对于数据的筛选操作,那么就通过SELECT 子句完成.(很重要,数据来源)

  • 如果是全部记录指的就是所有的行和列的数据,简单查询是不能控制数据行的,只能够在SELECT子句里面控制列,如果是全部的查询咧,那么就使用通配符(星号)”*” 完成;

     SELECT * FROM EMP(表名);   查询emp表中的全部记录.
    
    大概数据样子是这种的
  • 只想查询几个固定的列,所以在SELECT 子句之后要写上具体的列名称

     SELECT empno,job,ename,sal FROM emp;  查询每个雇员的编号,姓名,职位,工资
    

四.去重(重复)关键字 DISTINCT - distinct

如果要想要去除掉所有的重复信息,那么可以使用’DISTINCT’,此选项只能够出现在SELECT 子句的后面(重点1).

如果查询的数据是多个列,那么只有在这多个列的数据都相同的时候才可以消除.(重点2)

     select  distinct job from emp; 去除掉重复的内容(job列)

五.别名

通过使用 SQL,可以为表名称或列名称指定别名。

基本上,创建别名是为了让列名称的可读性更强(长名变短名,或者有意义的)。

或者是为了为通过查询出来的复杂数据命名,使之可操作性更强

  • 表和列都可以起别名

      SELECT column_name AS alias_name FROM table_name;  as关键字之后的就是列的别名(是单列,不是所有列)
    
      SELECT column_name(s) FROM table_name AS alias_name  表别名-此用法开发中很少看到;
    

六.限定查询(条件查询)

很多时候并不需要查询所有数据行内容,此时就可以通过WHERE子句来针对于要显示的数据行进行筛选,而此时我们可以使用SQL语法结构变为如下使用格式:

【③控制要显示的数据列】SELECT [DISTINCT] * | 列名称 [别名],列名称 [别名]...
【① 确定数据来源】FROM 表名称 [别名]
【② 确定满足条件的数据行】[WHERE 过滤条件(s);]
如果要想实现限定查询,那么需要掌握一系列的限定查询的符号,有如下几种:
 关系运算符: >、 <、 >=、 <=、 <>(!=) ;
 逻辑运算符:AND 、OR、NOT;
 范围运算符:BETWEEN...AND;
 谓词范围: IN 、 NOT IN:
 空判断: IS NULL、IS NOT NULL
 模糊查询:LIKE.

6.1 关系运算符

关系运算符主要进行大小关系比较操作使用的。

    select *
    FROM EMP
    WHERE SAL>1500;
    要求查询出所有基本工资高于1500的雇员信息

所有的过滤都是采用条件的形式进行过滤.

6.2 逻辑运算符

如果说现在有多个条件要进行连接,那么就需要根据要求选择是与连接还是或连接;
与连接:所有的判断条件都要满足 AND 关键字
或连接:若干个条件有一个满足即可 OR 关键字

查询出工资范围在1500-3000之间的雇员信息
 条件一: sal>=1500;
 条件二:sal<=3000;
 关系:两个条件必须同时满足才可以显示内容,所以使用 AND 连接.

    SELECT *
    FROM emp 
    WHERE sal>=1500 AND sal<=3000;

在逻辑运算之中除了与和或的逻辑之外还会存在有非的逻辑,
非的逻辑是,如果条件的结果为真,那么非之后就是假,
反之,如果原始条件判断的结果为假,那么结果就是真.

6.3 范围查询

在进行查询条件过滤的时候可以针对与某一个范围的数据进行过滤,使用的是BETWEEN...AND,语法:

BETWEEN 最小值(数字,日期) AND 最大值

在此处最小值(包含最小值)与最大值(包含最大值)之间的内容都满足条件.

查询工资在1500-2000之间的雇员,包含(1500,2000)

    SELECT *FROM emp WHERE sal>=1500 AND sal<=2000;
    
    SELECT *FROM emp WHERE sal BETWEEN 1500 AND 2000;

第一个查询需要匹配两个条件,而第二个查询只需要匹配一个条件.

注意:在进行日期判断时,我们不用BETWEEN .. AND 而用 > < 大与小于符号加 00:00:00 23:59:59秒判断.(之后实例查询演示)

6.4 空判断

空在数据库上解释为不确定的内容,但是需要注意的是:如果在数字列上使用null,那么绝对不表示0. 对于null的判断不能够使用关系运算符完成.
空的操作只能够使用IS NULL 或者是IS NOT NULL(NOT IS NULL)表示.

查询所有领取佣金的雇员(佣金存在,不为空)

    SELECT * FROM emp WHERE     comm IS NOT NULL;

    SELECT * FROM emp WHERE     NOT comm IS NULL;

任何的数据库,空的操作只能够使用以上的两个标记来判断.

6.5 IN 操作符 和 NOT IN操作符

IN 操作符类似于BETWEEN....AND,

但是BETWEEN...AND是给了一个大的范围,而IN给出的是一个指定的可选范围.

要求查询出雇员编号是7369,7566,7788,,9999的雇员信息.
 如果不使用IN操作可以使用或操作:

    SELECT * FROM EMP
    WHERE   EMPNO=7369 OR EMPNO=7566 OR EMPNO=7788 
    OR EMPNO=9999;

 使用IN操作实现:

    SELECT * FROM EMP
    WHERE   EMPNO in(7369,7566,7788,9999);

在指定值查询的过程之中,IN的操作是最简短的.

既然在指定的范围里面使用IN,,那么如果不在指定的范围之中,可以使用NOT IN 操作.

查询出雇员编号不是7369,7566,7788,,9999的雇员信息.

    SELECT * FROM EMP

    WHERE EMPNO NOT in(7369,7566,7788,9999);

注意:关于NOT IN和NULL的问题

正在使用NOT IN 进行范围判断的时候,如果范围里面包含有NULL,那么不会有任何的结果返回.(好好研究以下逻辑)

使用IN操作中包含有NULL.

    SELECT * FROM EMP
  
    WHERE   EMPNO in(7369,7566,7788,null);

---含有null对结果没有任何影响

实际上使用where最大的用处在于控制显示的数据行,

再简单一点:别显示全部数据行(因为如果要显示全部的数据行,几乎是宣判了一个程序的死刑).

使用NOT IN的目的是为了查询部分数据行

但是如果有了NULL(某些数据永远不可能为空),就变成了查询全部了.

6.6 模糊查询:LIKE

用两个通配符.
 “_” : 匹配任意的一位字符;
 “%” : 匹配任意的零位,一位或多位字符.

    SELECT * FROM EMP WHERE   ENAME LIKE 'A%'; 查询姓名是以字母A开头的雇员信息
  • 注意:关于LIKE的两点说明:
    • 说明一:LIKE可以应用在各种数据类型上,不一定非要是字符串;

    • 说明二:在使用LIKE模糊查询的时候,如果不设置查询关键字,那么表示查询全部.

      SELECT * FROM EMP WHERE   sal LIKE '%%';
      

虽然以上的代码可以查询全部数据,但是与不使用where子句相比,不使用where子句的查询性能一定更好.

七.查询排序

之前的查询里面只使用了SELECT、FROM、WHERE,

但是如果需要针对于查询后的结果按照指定的数据列进行排序操作,就必须使用ORDER BY 子句.

当使用查询操作的时候,默认情况下他会按照数据的插入顺序进行数据排序显示.

如果要针对于指定的列内容实现排序,就必须使用 ORDER BY子句完成.

【③控制要显示的数据列】SELECT [DISTINCT] * | 列名称 [别名],列名称 [别名]...
【①确定数据来源】FROM 表名称 [别名]
【②确定满足条件的数据行】[WHERE 过滤条件(s);]
【④针对查询结果进行排序】[ORDER BY 字段 [ASC | DESC], 字段 [ASC | DESC], ... ]

ORDER BY 子句是在SELECT 子句之后执行,而ORDER BY子句可以使用SELECT 子句定义的别名,

  • ASC (默认,不写也是ASC):按照升序的方式排列

  • DESC:按照降序的方式排列

  • 查询所有的雇员信息,要求按照工资由高到低排序.

      SELECT * FROM emp ORDER BY sal DESC;
    
  • 以上只是针对于一个字段的排序,那么也可以同时设置多个字段.

  • ORDER BY 子句既然在SELECT子句之后执行,那么就可以使用SELECT 子句里面定义的别名.

  • 此时的程序就可以正常的调用SELECT定义的别名.在整个SQL查询结构之中,只有ORDER BY子句可以调用SELECT子句里面定义的别名. (一定要注意sql的执行顺序)

1、 使用ORDER BY查询的时候,排序是在最后完成的;
2、 ORDER BY子句是最后一个执行的子句;
3、 在ORDER BY之中可以设置多个排序的字段.
4、 ORDER BY 有两种排序模式:ASC、DESC;
5、 ORDER BY 是唯一一个可以使用SELECT子句定义别名的子句.

.八.总结

  1. 简单查询是将一张表中所有数据行的内容都显示出来;
  2. 在查询语句之中先执行FROM 子句确定数据来源(此时实际上是所有的行和列的数据), 而后利用SELECT子句可以控制要显示的数据列;
  3. 如果出现数据的重复,可以使用DISTINCT 来消除重复的数据行显示.

1 where子句一般都写在from子句之后,但是是紧跟着from子句之后执行的
2 where 子句控制显示的数据行的操作,select子句控制着显示数据列的操作.
 select子要落后于where 子句执行,所以在select子句之中定义的别名,无法在where子句里面使用;
3 要求完整的掌握给出的各个限定查询符号.
 关系运算符: >、 <、 >=、 <=、 <>(!=) ;
 逻辑运算符:AND 、OR、NOT;
 范围运算符:BETWEEN...AND;
 谓词范围: IN 、 NOT IN:
 空判断: IS NULL、IS NOT NULL
 模糊查询:LIKE.

4 使用LIKE实现模糊查询的时候,如果不设置关键字(%%)表示查询全部.

5使用NOT IN 查询时,查询范围里面不允许出现NULL,否则不会有任何查询结果.


小结:

  1. 清楚学习过的每一个子句的作用: SELECT,FROM ,WHERE,ORDER BY ;
  2. 多个条件判断的时候一定要使用逻辑连接,而且尽量使用”()”,做一个区分
  3. 遇到问题慢慢分析,别着急;

9.结尾

这是本人关于sql基础的一些总结和概括,当然还缺一些内容,
比如mysql的一些使用方法
Mysql的常用功能
Mysql有别于其他数据库系统的特色功能

如果你有任何意见或建议,请与本人联系,我会非常感谢你指出的不足,

最后,希望我们都好好学习.
author:天宇不看海,2018/12/9/ 17.30 于深圳

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

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,780评论 5 116
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 9,698评论 0 44
  • 宽敞的劳斯莱斯车内。 韩少坐姿笔挺,双手搁在膝盖上,一副生人勿近的模样。光是身上散发出来的强大气场就可以压死人。瞟...
    幽兰馨雨阅读 370评论 0 0
  • 做寿司 豆沫汤圆 炒年糕
    鹿阿潞阅读 343评论 0 0
  • 如果头上没有头发, 长着糖果会怎样呢? 一下就能看见, 大家的秘密信息。 头上有咖啡糖的人, 应该是个小偷。 头上...
    汤圆小侠阅读 407评论 2 4