mysql必知必会 - 了解SELECT

   1.理解查询

   我们已经熟悉了mysql、数据库、表、列、那么如何查询我们想要的记录(行)呢?

   类似情景:在xxx科技大学(mysql)电气学院(database)的自动化系(table)中正在学习电路原理课程的同学。

   使用情景:从一个或者多个表中检索特定列(或全部列,或部分列)的信息。

   注意事项:1.查询SELECT关键字进行查询(和检索等意)需要明确从哪里查询(即哪张或者哪几张表中查询数据);

        2.从这些表中查询哪些列的数据; 

        --去哪些表中查询哪些列的数据。

   类比情景:小偷去偷东西有目的性,比如他要确定去沈万三(表名)偷东西,偷黄金、白银(特定的列名)! 

        --去谁家去偷什么东西,类比不算太道德!


   2.SELECT语法

   SQL语法:SELECT columnName FROM tableName

   语法理解:从表tableName中查询列columnName的数据;

   类比理解:从富豪tableName中偷取columnName类型的财富。

   学习要循序渐进,开始一定是1+1=2,然后思考1+1为何等于2,然后再进行其他的运算,学技术同样如此。


   2.1单表单列查询

   使用情景:比如要在商品表里查询所有商品名称。

   类似情景:比如使用excel表格登记商品的信息,那么有一列是显示商品的名称,这一类就是我们需要的数据!

             表和excel的sheet页作用完全相同!

   使用命令:SELECT prod_name FROM Products;

   查询结果:

   mysql必知必会 - 了解SELECT_第1张图片

   从Products表中查询一个名叫prod_name的列,所以呢,从Products表中查询特定列prod_name的值!

   说明结果:

   1.查询出来数据的顺序是不保证谁在前面谁在后面的,比如叫高三一班的所有男生出来,并不能保证身高从高到低或者从低到高的顺序,但是可以保证是符合条件的数据;这问题要如何处理呢?就是按照一定的顺序出来,这个涉及到order by关键字使用。

  

   2.2SQL语句说明

   SQL语句结束标识是英文的分号,';'.这个和其他编程语言一样!分号就是表示这条语句结束,就比如写作文一句话结束使用'。'

   为什么要用';'结束呢?

   类比现实:话说如果作文只有一句话,因为它简单明了没有歧义,所以智商不低的人看明白;如果作文又千字,那么可能就会让绝大部分人毛骨悚然啦,人可以连猜带蒙地猜测,一旦有歧义,计算机只好打滚不干啦!

   技术分析:让计算机干活必须准确无误,比如给我100块钱,那么计算机就给你100块钱;如果说给我100多块,那么计算机就蒙圈啦!这就是语句,一条语句就是一条命令,必须准确无误,让计算机无歧义地执行。

   小结:

   1.多条SQL语句必须以分号隔开;

   2.如果仅仅是一条语句,那么可以不加分号;

   3.语句结束加上分号是个好习惯

   4.计算机的程序中只认识英文的分号,而不执行中文的分号

   5.如果使用mysql命令行,那么必须用分号来结束SQL语句


   2.3SQL大小写

   请注意sql是不区分大小写的,select和SELECT是相同的!

   为何要提出来sql大小写的问题呢?

   1.SQL人员喜欢对SQL关键字使用大写,对所有列和表名使用小写,这样做的目的使SQL语句便于阅读和调试。

   比如:SELECT prod_name FROM products;

   2.关键字是不区分大小写的,但是有些自定义的标识符比如表名、列名、数据库名会区分大小写的。

  mysql必知必会 - 了解SELECT_第2张图片

   3.最佳处理方式是按照大小写惯例,且使用时保持一致的风格。


   2.4使用空格

   在处理sql语句时,其中所有的空格都会被忽略。

   好处在于:将SQL语句分成多行更容易阅读和调试。


   2.5检索多个列

   当学会检索(查询)一个列后,那么就要从一到多.从点到面开始展开学习!

   使用情景:比如要在商品表里查询所有商品名称、商品价格、商品Id。

   类似情景:比如使用excel表格登记商品的信息,那么显示商品名称的列、价格的列、商品Id的列,这几列就是我们需要的数据!表和excel的sheet页作用完全相同!

   使用命令:SELECT prod_id, prod_name,prod_price FROM Products;

  和单个列:SELECT prod_name FROM Products;

   两者比较:查询多个列,将要查询的列放在SELECT后面,同时列和列之间使用逗号分开,这就是查询单个列和查询多个列的区别


   2.6查询全部列  

   从单个列开始学习,然后从单个列到多个列,从多个列到全部列的查询。

   使用情景:比如要查询商品表的全部字段的数据。

   类似情景:比如使用excel登记的商品信息,老板已经不仅仅想看商品名称(单字段)了,也不想仅仅看商品名称、价格、Id(多字段)了,现在想看的是商标的全部信息(全部字段)!

   思考问题:全部字段和多个字段本质上都是多个字段,那么就可以把全部字段放在SELECT后面,字段之间使用逗号分割开来就可以!我们可以将每个列逐个列出来

   使用命令:SELECT prod_id, prod_name, prod_price, prod_desc, vend_id FROM Products;

   查询结果:

  mysql必知必会 - 了解SELECT_第3张图片

   总结:上面的查询SQL是将所有的字段放在SELECT后面,并且列和列之间添加逗号分割开来。

  

   思考问题2:每种方式都会有特殊处理方式,那么如果查询很麻烦,就会存在不必将每个列都罗列出来的可能。

  使用命令:SELECT * FROM Products;

   查询结果:

  mysql必知必会 - 了解SELECT_第4张图片

   分析对比:

   SELECT prod_id, prod_name, prod_price, prod_desc, vend_id FROM Products;  

   SELECT * FROM Products;

   1.在实际列名的位置使用星号(*)通配符代替表的全部字段,所以*就是查询全部字段的特色。

   2.使用全部字段可以控制列的位置,而使用通配符*是列在表定义中出现的位置。因此如果依赖列的位置,那么使用全部字段;如果对列的位置不依赖,那么就可以使用*来代替全部的列。

   注意说明:除非你确实需要表中的每个列,否则最好不要使用通配符*。为什么不要这么做呢?你是省事了,但是检索出来不需要的列通常会降低检索和应用程序的性能。

   类比说明:为何我们的很多有用的信息总是被泄露呢?这就是因为很多时候我们的信息过多且不必要地被收集了。比如只需要你姓名、手机号就可以,非要让你把家庭电话、家庭住址也填写上,就造成了你的很多重要信息被窃取,导致你家庭被骚扰。如果仅仅是你的电话和你的当前住址,那么就不会造成不必要的麻烦。从数据库中获取数据也是,只拿你需要的数据即可,其他的数据不要获取,否则会给计算机造成很多不必要的麻烦!

你可能感兴趣的:(MySQL)