MySQL-常用命令

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MySQLLIKE子句SQLLIKE子句中使用百分号%字符来表示任意字符,类似于UNIX或正则表达式中的星号*。语法以下是SQLSELECT语句使用LIKE子句从数据表中读取数据的通用语法:SELECTfield1,field2,...fieldNFROMtable_nameWHEREfield1LIKEcondition1[AND[OR]]filed2='somevalue'你可以在WHERE子句中指定任何条件。你可以在WHERE子句中使用LIKE子句。你可以使用LIKE子句代替等号=。LIKE通常与%一同使用,类似于一个元字符的搜索。你可以使用AND或者OR指定一个或多个条件。你可以在DELETE或UPDATE命令中使用WHERE...LIKE子句来指定条件。在命令提示符中使用LIKE子句以下是我们将runoob_tbl表中获取runoob_author字段中以COM为结尾的记录:SELECT*fromrunoob_tblWHERErunoob_authorLIKE'%COM';MySQLUNION操作符本教程为大家介绍MySQLUNION操作符的语法和实例。描述MySQLUNION操作符用于连接两个以上的SELECT语句的结果组合到一个结果集合中。多个SELECT语句会删除重复的数据。语法MySQLUNION操作符语法格式:SELECTexpression1,expression2,...expression_nFROMtables[WHEREconditions]UNION[ALL|DISTINCT]SELECTexpression1,expression2,...expression_nFROMtables[WHEREconditions];参数expression1,expression2,...expression_n:要检索的列。tables:要检索的数据表。WHEREconditions:可选,检索条件。DISTINCT:可选,删除结果集中重复的数据。默认情况下UNION操作符已经删除了重复数据,所以DISTINCT修饰符对结果没啥影响。ALL:可选,返回所有结果集,包含重复数据。演示数据库在本教程中,我们将使用RUNOOB样本数据库。下面是选自Websites表的数据:mysqlSELECT*FROMWebsites;+----+--------------+---------------------------+-------+---------+|id|name|url|alexa|country|+----+--------------+---------------------------+-------+---------+|1|Google||1|USA||2|淘宝||13|CN||3|菜鸟教程||4689|CN||4|微博||20|CN||5|Facebook||3|USA||7|stackoverflow||0|IND|+----+---------------+---------------------------+-------+---------+下面是appsAPP的数据:mysqlSELECT*FROMapps;+----+------------+-------------------------+---------+|id|app_name|url|country|+----+------------+-------------------------+---------+|1|QQAPP||CN||2|微博APP||CN||3|淘宝APP||CN|+----+------------+-------------------------+---------+3rowsinset(0.00sec)SQLUNION实例下面的SQL语句从Websites和apps表中选取所有不同的country(只有不同的值):实例SELECTcountryFROMWebsitesUNIONSELECTcountryFROMappsORDERBYcountry;执行以上SQL输出结果如下:注释:UNION不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。UNION只会选取不同的值。请使用UNIONALL来选取重复的值!SQLUNIONALL实例下面的SQL语句使用UNIONALL从Websites和apps表中选取所有的country(也有重复的值):实例SELECTcountryFROMWebsitesUNIONALLSELECTcountryFROMappsORDERBYcountry;执行以上SQL输出结果如下:带有WHERE的SQLUNIONALL下面的SQL语句使用UNIONALL从Websites和apps表中选取所有的中国(CN)的数据(也有重复的值):实例SELECTcountry,nameFROMWebsitesWHEREcountry='CN'UNIONALLSELECTcountry,app_nameFROMappsWHEREcountry='CN'ORDERBYcountry;执行以上SQL输出结果如下:MySQL排序语法以下是SQLSELECT语句使用ORDERBY子句将查询数据排序后再返回数据:SELECTfield1,field2,...fieldNtable_name1,table_name2...ORDERBYfield1,[field2...][ASC[DESC]]你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。你可以设定多个字段来排序。你可以使用ASC或DESC关键字来设置查询结果是按升序或降序排列。默认情况下,它是按升序排列。你可以添加WHERE...LIKE子句来设置条件。在命令提示符中使用ORDERBY子句以下将在SQLSELECT语句中使用ORDERBY子句来读取MySQL数据表runoob_tbl中的数据:实例尝试以下实例,结果将按升序及降序排列。SQL排序SELECT*fromrunoob_tblORDERBYsubmission_dateASC;SELECT*fromrunoob_tblORDERBYsubmission_dateDESC;读取runoob_tbl表中所有数据并按submission_date字段的升序降序排列。MySQLGROUPBY语句GROUPBY语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用COUNT,SUM,AVG,等函数。GROUPBY语法SELECTcolumn_name,function(column_name)FROMtable_nameWHEREcolumn_nameoperatorvalueGROUPBYcolumn_name;执行以下SQL语句:mysqlsetnamesutf8;mysqlSELECT*FROMemployee_tbl;+----+--------+---------------------+--------+|id|name|date|singin|+----+--------+---------------------+--------+|1|小明|2016-04-2215:25:33|1||2|小王|2016-04-2015:25:47|3||3|小丽|2016-04-1915:26:02|2||4|小王|2016-04-0715:26:14|4||5|小明|2016-04-1115:26:40|4||6|小明|2016-04-0415:26:54|2|+----+--------+---------------------+--------+6rowsinset(0.00sec)接下来我们使用GROUPBY语句将数据表按名字进行分组,并统计每个人有多少条记录:mysqlSELECTname,COUNT(*)FROMemployee_tblGROUPBYname;+--------+----------+|name|COUNT(*)|+--------+----------+|小丽|1||小明|3||小王|2|+--------+----------+3rowsinset(0.01sec)使用WITHROLLUPWITHROLLUP可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:mysqlSELECTname,SUM(singin)assingin_countFROMemployee_tblGROUPBYnameWITHROLLUP;+--------+--------------+|name|singin_count|+--------+--------------+|小丽|2||小明|7||小王|7||NULL|16|+--------+--------------+4rowsinset(0.00sec)其中记录NULL表示所有人的登录次数。我们可以使用coalesce来设置一个可以取代NUll的名称,coalesce语法:selectcoalesce(a,b,c);参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果abc都为null,则返回为null(没意义)。以下实例中如果名字为空我们使用总数代替:mysqlSELECTcoalesce(name,'总数'),SUM(singin)assingin_countFROMemployee_tblGROUPBYnameWITHROLLUP;+--------------------------+--------------+|coalesce(name,'总数')|singin_count|+--------------------------+--------------+|小丽|2||小明|7||小王|7||总数|16|+--------------------------+--------------+4rowsinset(0.01sec)Mysql连接的使用在前几章节中,我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。本章节我们将向大家介绍如何使用MySQL的JOIN在两个或多个表中查询数据。你可以在SELECT,UPDATE和DELETE语句中使用Mysql的JOIN来联合多表查询。JOIN按照功能大致分为如下三类:INNERJOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。LEFTJOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。RIGHTJOIN(右连接):与LEFTJOIN相反,用于获取右表所有记录,即使左表没有对应匹配的记录。在命令提示符中使用INNERJOIN我们在RUNOOB数据库中有两张表tcount_tbl和runoob_tbl。两张数据表数据如下:接下来我们就使用MySQL的INNERJOIN(也可以省略INNER使用JOIN,效果一样)来连接以上两张表来读取runoob_tbl表中所有runoob_author字段在tcount_tbl表对应的runoob_count字段值:SELECTa.runoob_id,a.runoob_author,b.runoo

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功