图片 8

mysql必知必会,mysql基础整理

图片 1

(五)相称字符类

2.1. select vend_id,prod_name from products where vend_id !=1003;
#vend_id不等于1003# 1和2的表述的情致是同等的# 

order by prod_name;

图片 2

(三)相配范围

P36

例如:select prod_name from products;

图片 3

搜寻的步子:

 select prod_name,prod_price from products where prod_price <10;
#检索prod_price小于10的,读取prod_name,prod_price列。

where prod_name regexp ‘^[0-9\\.]’

 

(1)在用来文书数据的时候,借使数据是按相应的列排序,则max()重回的是最终一行。

图片 4

select count(※) as orders

P37 不协作检查(不对等有个别值)

select count(cust_emial) as num_cust

  1. select prod_name,prod_price from products where prod_price=2.5;

3、日期和岁月管理函数

图片 5

4、count

select prod_name from products where prod_price is null ;
#代表检索prod_price是空值的#重返未有结果,因为prod_price未有空值#

7、sum

2.select prod_name,prod_price from products where prod_price=’2.5′;

(2)试行进程快,质量好

#五个语句得到的结果同样,因为内定的是数值。

select vend_id, count(※) as num_prods

图片 6

(1)先过滤有个别特定客户的订单数量,再推广到种种客户。

P39

where date(order_date) = ‘2015-09-01’;

第六章《过滤数据》

例子:

 select prod_name,prod_price from products where prod_price between 5
and 10;
#检索prod_price在限定5到10之内的。注意:数值加上引号与否并不会影响结果#

(3)max:重返某列的最大值

select prod_name,prod_price from products where prod_name=’fuses’;
#当钦定的是文字时候,则要用引号(‘ ’)。

where order_num in (20005,20007);

P35

select cust_id

图片 7

释疑:sum(quantity)用来回到订单中颇有货物的多寡之和,where子句值计算有个别物品订单中的物品。

图片 8

职能:内定找出条件,因为平时数据库表都包罗多量的多少,少之甚少咱们供给全部的行,常常会依附特定必要来领取数额的子集。where语句正是来内定寻找条件(过滤条件)

P38

from orders

  1. select vend_id,prod_name from products where vend_id <>1003;
    #vend_id不等于1003# 

注意:

select prod_name,prod_price from products where prod_price <10;
#检索prod_price小于或等于10(<=不是=<)的,读取prod_name,prod_price列。

select prod_name

select cust_id from customers where cust_email is null
;#检索cust_email是空值#

having count(※)>2;

(一)基本字符相配

select prod_name

order by prod_name;

(3)在group by中列出的列不能够是汇聚函数

表明:检索代理商1002和1003制作的享有成品。in操作符前边随着的是合法值得清单。

from vendors

(9)minute():重临一个日子的分钟部分

?表示0个或者1个匹配

事例:依照价格降序,最贵的在前边。

select vend_id, count(※) as num_prods

–为什么必要总括字段?

select prod_id,

意味着:相配任何一个单一字符,当想相称特定字符的时候,可透过制订一组用[]括起来的字符来完结。

1、应用场景

(5)[:digit:]  —  任性数字

扩展:依据这个操作符,能够做单个值相当(=)、不相称检查(!=只怕<>)、范围值检查(between)、空值检查(is
null)

(2)利用count()鲜明表中央银行的数码,以及适合特定条件的行的数码

abs、cos、exp、mod、pi、rand、sin、sqrt、tan

where prod_name regexp ‘1000’

获得的结果是:cust_id:10001和10004

比方来看双方的距离:

(1)adddate() :扩大三个日子(天、周)

          cust_state,

from orderitems

(8)[:lower:]  —  放肆小写字母

1、在此处举贰个事例,就知道子查询是哪些,以及子查询如何使用了。

select prod_name

9、组合聚焦函数,看见那几个事例就能够秒懂~

where prod_id = ‘TNT2’;

(4)再次回到DBMS正选取的特别规新闻的系统函数。例如重回客商登陆音信、检查版本细节。

貌似在行使group by子句的时候,应该给出order
by子句,那是保障数据正确排序的独一格局。千万不要借助group by的排序数据。

select prod_id,prod_price,prod_name

例子:

from products

from products

解释:[:digit:]相称自便数字,{4}确切的渴求它眼前的数字出现4次,全部正则表明式相配连在一同的即兴4位数字。

2、什么是通配符

where vend_id in (1002,1003);

{n,m}表示卓越数指标界定

举例:

order by prod_name;

(1) \\-匹配-,\\.匹配.

(一)like统配符

表明:重临products表中最贵的物品。

同理,能够写成:

即猎取了最终的结果

(1)清楚只管

(2)count:重回某列的行数

(7)soundex():重返串的soundex值,发音相似

order by vend_name;

(二)下划线通配符_

(1)distinct只可以用于count()

(1)富含子查询的select语句难以阅读和调节和测量检验。

例子:

会面能够用来定义要同盟的一个要么多个字符,假设想相称0到9,能够用[0123456789],也足以用[0-9],並且限定不肯定是数值,也足以兼容字符,[a-z]合作猖狂的假名字符。

from orders

(八)数据管理函数

{n,}表示不菲于钦命数量的相配

from

select prod_name,prod_price from products where prod_price between 5
and 10;

通配符是一种极其平价的探寻工具,不过不可能过度施用,不然寻找时间会很短。

动用:当作者想搜寻多个串之不通常,使用|

参考:mysql必知必会样例表

(一)多少个数据库相关的定义

4.搜索全数列

(1)找到以jet起先的出品,接受jet后边为专擅多少个字符

(3)in实行比or实践的快

1.select:

3.总是好数据库后,就可以访问数据库并做操作,其中use是用来选拔数据库的,show是用来查阅mysql数据库、表、每部消息的。

(四)相配特殊字符

where year(order_date) =2005 and month(order_date)=9;

from customers

(一)百分号通配符%

在意:再次来到结果是未排序的。

(三)用select检索数据

(四)用where举行数量过滤

分解:再次回到products表中具有产品的平均价格

依照单个列排序的例证:

where vend_id =1003 and prod_price <=10;

例2:

概念:用来回到内定列值的和(总括)

(2)max()函数忽略列值为null的行

那就是说为啥选用in操作符呢,优点是何许吗?

having count(※)>2;

7.截然限定的表名

select cust_id,order_num

2、再举三个事例:以往须要展现customers表中每一种顾客的订单总额。

事例:加了distinct参数之后,平均值只思量各类差别的标价

(五)通配符过滤

from products

order by prod_name;

(3)用于拍卖日期和时间值,并且从那些值中领取一定的成份的日子和岁月函数,比方说重回那多个值的日期之差,检查日期的管事。

          avg(prod_price) as price_avg

(2)用来填充总括列

方法二:

获得的结果是:order_num:20005和20007

group by钦定要被分组的目的(vend_id),并做总计。

(5)datediff():总计五个日子之差

from products

释疑:满意大肆贰个原则就能够

select prod_name

1.mysql是什么?

where date(order_date) between ‘2005-09-01’ and ‘2015-09-30’;

select prod_name

      展现每列的新闻,后边用的可比多的是 desc customers;

from products

      重返数据库的列表

例如:select prod_name,prod_price

select

(十)排序检索数据

(3)检索顾客id为10001和一千4的客户消息

(8)substring():重返子串的字符

where prod_name regexp ‘[1-5] Ton’

表达:只对有火爆邮件的顾客实行计数。

where vend_id = 1002 or vend_id = 1003;

      获取两个数据库内的表的列表

在乎:regexp后所跟的东西作为正则表明式管理。

(2)show database;

(1)通过对表中的行数计数病总结特定列值之和。求得该列的平均值。

另一种写法:

(2)借使在group
by子句中嵌套了分组,数据将会在最后鲜明的分组上进展聚焦。

例如:select distinct vend_id from products;

where prod_name regexp ‘[[:digit:]]{4}’

select prod_name,prod_price

比方:列出订购货色TNT2的富有客商。

(2) 匹配\用\\\

(6)[:graph:]  —  与[:print:]一模一样,不过不分包空格

疏解:同期用了where和having,表示全数2个以上,价格10上述的制品的代理商。

3、有哪些通配符以及如何选择啊?

from products

例2:

select prod_price

(2)[:alpha:]  —  放肆字符

(4)min:重返某列的最小值

order by prod_name;

(2)对每一种客户举行count计算

order by

select prod_name

order by prod_price desc;

例子:select prod_name,prod_price from products where prod_price =
2.50

from customers

对vend_id分组,何况总结个数。

from vendors

where prod_name regexp ‘[^123] Ton’

亮点:不明白列名的时候利用。

释疑:正则表达式是[123]
Ton,[123]概念了一组字符,即相称1可能2要么3,这么看,其实[
]是另一种样式or语句,也足以视作是[1|2|3]的缩写。

一列照旧一组列,能够独一区分表中的每一种行。

where prod_name regexp ‘.000’

例1:

from customers

from products;

where cust_id in (10001,10004);

(1)where子句的in操作符中

(6)假设分组列中持有null,则它们将会作为一个分组再次来到。

(2)upper():将文件转换大写

(5)除了集合总结语句之外,select语句中的没个列都不可能不在group
by子句中付出。

from products

1、啥是正则表明式

缘由:like相称的是整套列,独有利用通配符的时候才会回去。而regexp是在列值中相当,假设被相称的公文在列值中冒出regexp将会找到她,相应的就要被再次来到。

指标:为了同盟特定岗位的文件。

order by  prod_name;

6.limit

select cust_name,cust_contact

(11)now():重返当今日期的日子

(2)过滤分组 –having

2、mysql主要的联谊函数有怎么样?

(1)rtrim():去除列值侧边的空格

(2)addtime() :扩展叁个时日(时、分)

(9)[:punct:]  —  既不在[:alpha:]也不在[:cntrl:]中的任性字符

          quantity,

(二)mysql使用方法

3、有哪二种相称吗?

(5)locate():搜索串的叁个子串

如果是 select prod_name from products limit
5,5;则象征从行5初阶,检索5行.

扩展:

位置:放在from之后,order by之前

(六)相称多个实例

3.列和数据类型

(2)%通配符不能够相称null

3.寻觅多列

2、钦点排序方向

(十一)分组数据

(4)在in中能够包蕴别的的select语句

1、聚焦函数的定义:运营在行组上,总计和重回单个值的函数。

select prod_id,prod_price,prod_name

select prod_name

例1:

举例2:

(6)lower():转换为题写

group by vend_id

(1)^ 文本的初叶

注意:在集合^[123]中象征否认该集结,在此间表示的是文件的始发。

select products.prod_name from product;

留意:sum()会忽略列值为null的行。

(3)show tables;

目标:为了拓展更加强的过滤调整,mysql允许给出五个where自居,以逻辑操作符and可能or的点子选择。

(1)avg:重回有个别列的平均值

where prod_name like ‘jet%’;

扩展:

select子句的相继:

多少的装有存款和储蓄、检索、管理和处理实际上是有数据库软件DBMS完毕的。

from products

(4)[:cntrl:]  —  ascii调控字符

where vend_id not in (1002,1003);

from products

group by

小心:总计次序用圆括号限制,要不轻松混淆视听。

order by prod_name;

from products

(3)可信赖

(7)group by必需在where语句之后,order语句在此以前。

(2)$ 文本的结尾

select prod_id,prod_price,prod_name

where soundex(cust_contact) = soundex(‘Y Lie’);

分组正是汇总表内容的子集,分组允许把多少分为多个逻辑组,以便能对各类组实行联谊总计。

事例1:between用法,它需求八个值。

order by cust_name;

用途:从表中检索一个可能多个数据列。

where order_num = 20005;

缺点:

概念:

select avg(prod_price) as avg_price

同理,sum也能够用来交涉计算值。比如下边包车型客车例子,可以获得总的订单金额,where子句同样保证只计算有些物品订单中的货色。

例子:

where prod_name regexp ‘\\([0-9] sticks?\\)’

from products

4、not操作符:

from products

解释:钦点特定行只怕特定列求平均值,它回到的是一定中间商1003所提供产品的平均价格。

3、in操作

from orderitems

正文首要介绍mysql帮助什么的函数,以及怎么着运用那么些函数。

(2)查询所有订单两千5和两千7的顾客

2、文本管理函数

事例:寻觅以一个数要么小数点起首的有所成品,这里需求固定符^,表示文本的发端。

结果:重返一行

order by  prod_name;

(九)汇总量据

(1)检索满含货色TNT2的富有订单号

升序:asc,默认的

select prod_name

举例1:

1、拼接字段

select prod_name

东拼西凑:将值联结到一块构成二个单个值。在select语句中,使用concat()函数来拼接三个列,待拼接的逐条串用逗号分隔。

(十二)子查询

推而广之:删除左侧的富有空格,能够用rtrim()函数,要是是删除侧边的具备空格,可用ltrim(),去掉两侧的空格是trim(),在拼接字段有时候会用到。比如:

order by vend_name;

概念:

from products

from products;

正文主要介绍多少个知识点,二个是拼接字段,一个是进行算数总括。

(5)sum:重临某列值之和

(4)date():再次来到日期时间的日子部分

概念:max()重临钦点列的微乎其微值,但是max()须要拟定列名,使用办法与max同理

where vend_id = 1003;

(2)计算字段并不实际存在于数据库表中,总括字段是运作时在select语句内创设的。

例如:

效果:where子句中用来否认后跟条件的重大字。

from products

select max(prod_price) as max_price

(3)curdate():重临领后天期

(14)year():重回多少个日子的年度部分

留意:where过滤钦点的是行并非分组。where没有分组的概念。

例子:匹配prod_name为1000或者2000的情况

select cust_id,order_num

方法一:

(七)总括字段

select cust_name,cust_contact

8、在聚合函数中用distinct

                                                              where
prod_id = ‘TNT2’));

咱俩通过数据库软件DBMS来创设和操纵容器。

from products

where vend_id = 1003;

事例2:空值检查

select prod_id,prod_name

1、如何用order by

引进:having进行过滤分组,事实上,全数品种的where子句都能够用having来代替。

where prod_name like ‘1000’

            from orders

where prod_name regexp ‘1000’

+表示1个或然多个门户极度

select cust_id,order_num

from products

释疑:重临customers表中型大巴户的总量,这里运用count(*)对具有的行开展计数,不管各行中有怎么着值,计数值将要num_cust中返回。

备注:该子查询对搜索出的每一个顾客实践三次

where vend_id =1003 or vend_id =1002;

select prod_name

2、like与regexp的区别

例子:

6、min()

where prod_name regexp ‘1000|2000’

总结:

讲授:检索除了1002和1003之外的兼具。

                            from orders

5.主键

(二)过滤分组

例如:select prod_name from products limit 5;

功效:钦点条件限制

留意:不管是插入表依然更新表依旧用where子句举行过滤,日期必得为yyyy-mm-dd的格式,尽管其余的日期格式恐怕使得,不过那是首选的日子格式,它化解了多意义性。

select order_num

(2)就算对嵌套的子查询的多少未有范围,可是在实质上选择中出于质量的界定,不能够嵌套太多的子查询。

(1)因为开源,花费低

(2)不能用count(distinct)

意义:提示mysql只回去分歧的值的行

from products

                            where order_num in (select order_num

末段注意:

order by prod_name;

(13)time():重回多个日期时间的年华部分

          (select count(※)

where prod_name like ‘s%e’;

例子:

where prod_name regexp ‘[0-9][0-9][0-9][0-9]’

2、试行算数总计

利用:它必得放在列名前边

order by prod_name;

vend_title

3、上面从七个部分介绍分组:

列:表中的一个字段

例1:

where prod_name regexp ‘[123] Ton’

(1)[:alnum:]  —  自便字符和数字

何以选拔:为了在找寻子句中动用通配符,必须使用like操作符。

1、什么是分组?

(4)要是在select中运用表明式,则必需在group
by子句中钦点一样的表明式,不能够运用别称。

(1)大家必要一直从数据库中寻觅出调换、总结依旧格式化过的数码,并不是寻找寻多少,然后再在顾客机应用程序也许报告前后相继中另行格式化。

from products

from products

{n}表示内定书目标特出

from products

例子:select prod_name,prod_price

from orderitems

*代表0个照旧过个优良

from customers;

某种特定类型数据的结构化清单。表名是独一无二的,用来标志本身。

            where orders.cust_id = customers.cust_id) as orders

习贯上:不更新主键列中的值,不录取主键列的值,不在主键列中使用只怕改换的值。

降序:desc

解说:相配的是除那么些字符意外的另外事物。

mysql是一种DBMS,就是一种数据库软件。它是一种基于客商机-服务器的数据库。

4.行

2.查找单列

(六)正则表明式相配

1、使用函数,那么首要有何类型的函数呢?

order by prod_name;

select cust_name,

表达:从products表中搜寻出来prod_name列

from products

注意:

from orders

(2)总结次序轻巧通晓

select concat(vend_name,’ (‘,vend_country,’) ‘)

(1)创造分组 –group by

要是遵照三个列进行排序的话,只要列出列名,列名之间用逗号分隔。比如下面包车型客车例子,首先根据价钱排序,再根据物品名字排序。

          min(prod_price) as price_min,

select prod_name

select cust_id, count(※)  as orders

(1)group by子句能够蕴含自由数指标列

(12)second():重返贰个时光的秒部分

表中的一条记下

5、max()

group by vend_id;

(1)可以用‘**%’的情势开展尾空格管理,也得以用trim函数进行管理

select prod_id,prod_price,prod_name

from orders

select cust_id from customers where cust_email is null;

例如:

因为存款和储蓄在数据库表中的多寡貌似不是应用程序所须求的格式,偶尔我们须要对原有数据做一些转移等须要。那即是总括字段发挥功效的时候了。

 
此前说的数据过滤都以对已知值举行过滤的,例如说相配多少个值或许几个值,大于有些值或许是自愧不及有个别值,只怕是反省有个别范围的值。

(7)dayofweek():对应贰个日子重临对应星期几

          item_price,

正则表明式的功力是十一分文本,将几个正则表明式与三个文本串进行比较,mysql用where子句对正则表明式提供了始于的支撑,允许钦定正则表明式,过滤select检索出的多寡。

(4)易于安装和行使

5.distinct关键字

这一部分注重介绍集中函数以及哪些行使它们来汇总表的多少。

from customers

(12)[:xdigit:]  —  任性十六进制数字

select prod_id,prod_name

为了同盟特殊字符,必得运用\\为前导

子查询日常出现的情形:

(1)use + database name;

limit

select count(*) as num_cust

概念:用来合营值得一部分的特殊字符

2.表

涉嫌的表:orderitems、orders、customers

(一)创造分组

(1)使用count(*)对表中央银行的数量进行总计,不管是表列中含有的是null和非null

select prod_name

                                                              from
orderitems

(6)day():重返二个日子的天数部分

(11)[:upper:]  —  大肆大写字母

      用use打开数据库,工夫读取其中的数码。

(2)用于在数值数据上开展算数总计,比方说:再次回到绝对值以及代数运算

疏解:订单数大于2的客商

解说:必需同偶然候知足五个规范化

(七)定位符

          quantity*item_price as expanded_price

(3)不能用distinct count(*)

limit 1;

例如:

where order_num = 20005;

数据库: 保存有组织数量的容器。

那也是与%的差异,这里就不例如赘述了。

功效:重回结果的前几行

表示:任何字符出现任性次数,也得以是0次

select sum(item_price*quantity) as total_price

4、数值管理函数:

order by prod_price desc

扩大:使用order by和limit的组成,能够寻觅一个列的参天和最低的值。

2.mysql的优点:

注意:检索出来第一行是行0。假如行数非常不足,能回来多少就回来多少。

(2)相配任何地方包括anvil,不论在前头还是之后出现哪些字符。

外键为某个表的一列,它饱含另三个表的主键值。

例2:检索列prod_name包罗000的享有行

假设日期的款型是‘二零一五-09-01
00:00:00’,那么就招来不出去,所以越发可信的方式为:

举个例子:怎么样寻找最昂贵货色的值

表示:下划线只相配单个字符实际不是七个字符

2、涉及的子句

select prod_name

(7)[:print:]  —  跋扈可打字与印刷字符

from products

在where子句中使用子查询能够编写出功效很强並且很利索的SQL语句

order by prod_name;

select语句中要求反映两种音讯:选什么样,从什么地方选。

概念:max()再次回到钦赐列的最大值,不过max()要求制订列名

from orders

(二)正则表明式

group by cust_id

1、where子句

例如:笔者想列出起码有三个订单的保有花费者,此时,必需依照完整的分组举办过滤,并不是依照各自的行开展过滤。

 
然则借使自个儿要物色产品名中包涵anvil的有着成品呢,那时候通配符就足以大显身手了,我们能够动用通配符寻觅形式,寻找产品名中任何职责出现anvil的制品。

(1)avg只可以鲜明特定数值列的平均值,况且列名必得作为函数的参数给出。借使说大家想获得越多列的平均值,要利用多个avg()函数。

表具备部分特征,定义了数额在表中怎样的囤积,存款和储蓄什么样的数额,数据如何讲解,各部分新闻如何命名等。描述那组新闻叫做形式(schema),它是关于数据库和表的布局及特点音讯。

select cust_name,cust_contact

from customers;

目标:为了明显的排序用select语句检索出来的多寡,能够用order
by子句,order by往往取八个依旧多个列的名字,依照此对出口举行排序。

order by prod_price desc,prod_name;

分解:那么些表明式的意趣是相称1到5,比如.5 Ton也会重回。

4、小结:

(3)left():重回串侧边的字符

select cust_id,order_num

order by prod_price,prod_name;

意思:规定了富含哪些分组,排除哪些分组

它常常用于代数、三角或几何运算。

(10)month():重临八个光阴的月份部分

设若本身想搜寻出2007年1月下的持有订单:

数据类型:每种列皆有照料的数据类型

select * from product;

order by prod_name;

解释:这里运用了杰出测量试验,只回去prod_price为2.5的行,仍可以有等于、不等于、小于、小于等、大于、大于等、between操作符。

from products

where cust_id in (select cust_id

(8)hour():重回多少个日子的钟点有个别

(二)or匹配

from products

例子:

select concat(rtrim(vend_name),’ (‘,rtrim(vend_country),’)’) as

(1)用于拍卖文件串的文书函数。比方说:删除或然填充钱,转化大小写

假若根据五个列进行排序呢?举个例子:

from products

selelct avg(prod_price) as avg_price

注意:

解释:其中expanded_price是二个划算字段,总计为quantity*item_price。在实践算数总括的时候,加减乘除都足以甲酸,何况用圆括号来明确总计顺序。

select prod_id,prod_price,prod_name

where

from products

select avg(distinct prod_price) as avg_price

关系的表:customers,orders(存款和储蓄订单与相应的顾客id)

(1)count()首若是用来计数

3、avg

select count(*) as num_items

注意:

分解:以降序排序产品,然后再对成品名排序。

结果:不回去数据

from products

解释:

having

from products

(2)avg()函数忽略列值为NULL的行

from product;

注意:对于上述例子,仅仅在五个行有所同等的prod_price值时才对prod_name举办排序。要是prod_price列中全数的值都以独一的,那么就不会根据prod_name排序。

(2)avg可以用来回到全部列的平均值,也足以用来范数特定列或行的平均值。

注意:

(3)找到以s起初、以e结尾的有着成品:

留意:这里只对prod_price降序了,假使想在多少个列上实行姜旭排序,必须对种种列钦赐desc关键字。

group by子句和having子句

and例子:

例子:

意义:从前的正则表达式师傅和徒弟相称单词出现。可是一些时候须要对一双两好书目举行更加强的决定

6.外键

例如:select prod_id,prod_name,prod_price from products;

select prod_name

(3)[:blank:]  —  空格和制表

(三)相称多少个字符之一

(2)使用count(column)对特定的具备值的行进行计数,忽略null

from products

优点:

where cust_id = 10001;

(4)length():再次回到串的尺寸

where prod_price >10

注意:

1.数据库

          max(prod_price) as price_max,

(10)[:space:]  —  满含空格在内的任性空白字符

from orderitems

where prod_name like ‘%anvil%’;

2.组合where子句

where order_date = ‘2015-09-01’;

or例子:

from orders

(4)show columns from customers;

where和having的界别:where过滤行,having过滤分组

from orders

select sum(quantity) as items_ordered

注意:

只顾:.是正则表明式语言中的三个极度的字符,它表示的合作自便二个字符,所以1000和三千都切合条件。

解释:其中\\是用来相配括号的,[0-9]用来同盟放肆数字,sticks?相配stick和sticks,因为?相称他日前任何字符的0次或然1次出现。

      表示切换使用哪个数据库。

例1:检索列prod_name满含文本一千的富有行

where order_name = 20005;

将这多少个查询合併为一个:

子查询的得失: