mysql必知必会永利皇宫登录网址:,mysql幼功打理

第六章《过滤数据》

(大器晚成卡塔尔国多少个数据库相关的定义

P35

1.数据库

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

数据库: 保存有集体数据的容器。

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

数量的有所存款和储蓄、检索、管理和管理实际上是有数据库软件DBMS达成的。

#五个语句获得的结果生机勃勃律,因为钦赐的是数值。

大家通过数据库软件DBMS来成立和操纵容器。

永利皇宫登录网址 1

2.表

P36

某种特定类型数据的构造化项目清单。表名是唯生机勃勃的,用来标志自身。

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

表具备局地表征,定义了数量在表中如何的囤积,存款和储蓄什么样的数额,数据怎么着分解,各部分消息如何命名等。描述那组音信叫做方式(schema),它是有关数据库和表的布局及特色消息。

永利皇宫登录网址 2

3.列和数据类型

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

列:表中的三个字段

永利皇宫登录网址 3

数据类型:每一种列都有对应的数据类型

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

4.行

永利皇宫登录网址 4

表中的一条记下

P37 不相称检查(不等于有些值卡塔尔国

5.主键

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

一列可能大器晚成组列,能够唯生机勃勃区分表中的每种行。

2.1. select vend_id,prod_name from products where vend_id !=1003;
#vend_id不等于1003# 1和2的抒发的情趣是平等的# 

习于旧贯上:不更新主键列中的值,不录取主键列的值,不在主键列中使用可能改动的值。

永利皇宫登录网址 5

6.外键

P38

外键为有个别表的一列,它包涵另三个表的主键值。

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

(二卡塔 尔(英语:State of Qatar)mysql使用格局

永利皇宫登录网址 6

1.mysql是什么?

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

mysql是后生可畏种DBMS,正是意气风发种数据库软件。它是风华正茂种基于顾客机-服务器的数据库。

永利皇宫登录网址 7

2.mysql的优点:

P39

(1卡塔 尔(英语:State of Qatar)因为开源,费用低

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

(2卡塔 尔(阿拉伯语:قطر‎实践进程快,品质好

永利皇宫登录网址 8

(3)可信赖

 

(4卡塔尔国易于安装和动用

3.连连好数据库后,就能够访谈数据库并做操作,个中use是用来采摘数据库的,show是用来查看mysql数据库、表、每部信息的。

(1)use + database name;

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

      用use展开数据库,才干读取个中的多寡。

(2)show database;

      再次回到数据库的列表

(3)show tables;

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

(4)show columns from customers;

      显示每列的消息,后边用的很多的是 desc customers;

(三卡塔 尔(英语:State of Qatar)用select检索数据

1.select:

用处:从表中检索一个要么八个数据列。

select语句中供给反映二种消息:选怎么,从哪个地区选。

2.查找单列

例如:select prod_name from products;

解说:从products表中搜索出来prod_name列

留意:重回结果是未排序的。

3.搜寻多列

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

4.物色全体列

select * from product;

可取:不分明列名的时候利用。

5.distinct关键字

作用:提示mysql只回去区别的值的行

例如:select distinct vend_id from products;

动用:它必得放在列名前面

6.limit

功能:重回结果的前几行

例如:select prod_name from products limit 5;

如果是 select prod_name from products limit
5,5;则意味从行5开首,检索5行.

只顾:检索出来第风度翩翩行是行0。借使行数非常不足,能重回多少就回到多少。

7.截然限制的表名

select products.prod_name from product;

(四卡塔尔国用where进行数量过滤

1、where子句

职能:内定搜索条件,因为相像数据库表都富含大量的多寡,比超级少大家须求具有的行,平时会依照特定必要来领取数额的子集。where语句便是来钦命寻找条件(过滤条件卡塔 尔(阿拉伯语:قطر‎

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

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

分解:这里运用了非凡测验,只回去prod_price为2.5的行,还是能有等于、不等于、小于、小于等、大于、大于等、between操作符。

增添:根据那个操作符,能够做单个值分外(=卡塔尔国、不包容检查(!=只怕<>卡塔尔、范围值检查(between卡塔 尔(阿拉伯语:قطر‎、空值检查(is
null卡塔尔国

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

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

事例2:空值检查

select cust_id from customers where cust_email is null;

2.组合where子句

目的:为了扩充越来越强的过滤调节,mysql允许给出七个where自居,以逻辑操作符and也许or的秘籍选拔。

and例子:

select prod_id,prod_price,prod_name

from products

where vend_id =1003 and prod_price <=10;

解说:必得同期满意七个原则

or例子:

select prod_id,prod_price,prod_name

from products

where vend_id =1003 or vend_id =1002;

解释:满意放肆三个准则就可以

只顾:总括次序用圆括号节制,要不轻便张冠李戴。

3、in操作

功能:钦定条件约束

例子:select prod_name,prod_price

from products

where vend_id in (1002,1003);

表明:检索承包商1002和1003制作的装有产品。in操作符后边随着的是官方值得项目清单。

另生龙活虎种写法:

select prod_name,prod_price

from products

where vend_id = 1002 or vend_id = 1003;

那么为何采用in操作符呢,优点是什么样呢?

(1卡塔 尔(阿拉伯语:قطر‎清楚只管

(2卡塔尔国总结次序轻便了解

(3卡塔 尔(阿拉伯语:قطر‎in实行比or实行的快

(4卡塔 尔(英语:State of Qatar)在in中得以富含其余的select语句

4、not操作符:

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

例如:select prod_name,prod_price

from products

where vend_id not in (1002,1003);

表明:检索除了1002和1003之外的装有。

(五卡塔尔通配符过滤

1、应用处景

 
在此以前说的数额过滤都以对已知值举办过滤的,比如说相称二个值可能四个值,大于某些值恐怕是自轻自贱有些值,只怕是检查有些范围的值。

 
然则假如本身要探索付加物名中隐含anvil的全数产物吗,那时候通配符就足以大展宏图了,大家得以接纳通配符搜索情势,寻找产物名中任何岗位现身anvil的出品。

2、什么是通配符

概念:用来协作值得风度翩翩部分的特殊字符

怎么选取:为了在寻觅子句中利用通配符,必须使用like操作符。

3、有哪些通配符以至哪些行使啊?

(意气风发卡塔 尔(英语:State of Qatar)百分号通配符%

代表:任何字符现身任性次数,也足以是0次

例子:

(1卡塔 尔(阿拉伯语:قطر‎找到以jet初叶的产品,接收jet前边为随机多少个字符

select prod_id,prod_name

from products

where prod_name like ‘jet%’;

(2卡塔尔相称任何任务包括anvil,无论在事情未发生前还是现在现身哪些字符。

select prod_id,prod_name

from products

where prod_name like ‘%anvil%’;

(3卡塔尔国找到以s起头、以e结尾的装有产品:

select prod_name

from products

where prod_name like ‘s%e’;

注意:

(1)可以用‘**%’的款式开展尾空格处理,也得以用trim函数进行拍卖

(2卡塔 尔(阿拉伯语:قطر‎%通配符不可能相配null

(二卡塔尔下划线通配符_

表示:下划线只匹配单个字符并非多个字符

这也是与%的区分,这里就不比如赘述了。

4、小结:

通配符是大器晚成种非常管用的探索工具,可是无法过度施用,不然寻觅时间会不短。

(六卡塔尔正则表明式相称

1、啥是正则表明式

正则表明式的功用是特别文本,将叁个正则表明式与叁个文本串举行相比较,mysql用where子句对正则表明式提供了起先的支撑,允许钦赐正则表明式,过滤select检索出的多少。

2、like与regexp的区别

比方来看双方的反差:

(一)like统配符

select prod_name

from products

where prod_name like ‘1000’

order by prod_name;

结果:不回来数据

(二卡塔尔正则表达式

select prod_name

from products

where prod_name regexp ‘1000’

order by prod_name;

结果:重回黄金年代行

由来:like相配的是整个列,唯有利用通配符的时候才会回到。而regexp是在列值中相称,假如被相称的文件在列值中冒出regexp将会找到他,相应的就要被重临。

3、有哪二种相配吗?

(生龙活虎卡塔 尔(英语:State of Qatar)基本字符相称

例1:检索列prod_name包含文本1000的富有行

select prod_name

from products

where prod_name regexp ‘1000’

order by  prod_name;

只顾:regexp后所跟的事物作为正则表明式管理。

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

select prod_name

from products

where prod_name regexp ‘.000’

order by  prod_name;

瞩目:.是正则表明式语言中的二个破例的字符,它代表的相称任性贰个字符,所以1000和二〇〇二都契合条件。

(二)or匹配

利用:当自己想搜寻八个串之有时,使用|

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

select prod_name

from products

where prod_name regexp ‘1000|2000’

order by prod_name;

(三卡塔 尔(阿拉伯语:قطر‎相配多少个字符之风流倜傥

表示:相称任何一个单一字符,当想相配特定字符的时候,可经过制订豆蔻梢头组用[]括起来的字符来成功。

例1:

select prod_name

from products

where prod_name regexp ‘[123] Ton’

order by prod_name;

解释:正则表明式是[123]
Ton,[123]概念了生机勃勃组字符,即相配1或然2如故3,这么看,其实[
]是另一种样式or语句,也得以看做是[1|2|3]的缩写。

例2:

select prod_name

from products

where prod_name regexp ‘[^123] Ton’

order by prod_name;

表达:匹配的是除那些字符意外的其它交事务物。

(三卡塔尔国匹配范围

集合能够用来定义要同盟的八个依然几个字符,如若想相配0到9,能够用[0123456789],也得以用[0-9],并且约束不必然是数值,也得以同盟字符,[a-z]相配任性的字母字符。

例1:

select prod_name

from products

where prod_name regexp ‘[1-5] Ton’

order by prod_name;

表明:那个表达式的意趣是相配1到5,比方.5 Ton也会回去。

(四卡塔 尔(英语:State of Qatar)相称特殊字符

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

例如:

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

(2) 匹配\用\\\

(五卡塔尔国相配字符类

(1)[:alnum:]  —  任性字符和数字

(2)[:alpha:]  —  狂妄字符

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

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

(5)[:digit:]  —  大肆数字

(6)[:graph:]  —  与[:print:]如出黄金时代辙,不过不包含空格

(7)[:print:]  —  大肆可打字与印刷字符

(8)[:lower:]  —  率性小写字母

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

(10)[:space:]  —  包含空格在内的放肆空白字符

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

(12)[:xdigit:]  —  大肆十九进制数字

(六卡塔尔国相配多少个实例

意义:在此以前的正则表达式师傅和入室弟子相称单词现身。可是一些时候要求对神工鬼斧书目进行越来越强的决定

例1:

select prod_name

from products

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

order by prod_name;

解释:其中\\是用来相称括号的,[0-9]用来协作自便数字,sticks?相配stick和sticks,因为?相配他前方任何字符的0次照旧1次面世。

例2:

select prod_name

from products

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

order by prod_name;

解释:[:digit:]协作放肆数字,{4}确切的渴求它前边的数字现身4次,全体正则表明式相配连在一齐的妄动4位数字。

同理,能够写成:

select prod_name

from products

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

order by prod_name;

扩展:

*意味着0个要么过个格外

+表示1个只怕三个相当

?表示0个或者1个匹配

{n}表示内定书指标十二分

{n,}表示不菲于钦定数量的十分

{n,m}表示至极数目标限定

(七)定位符

目标:为了协作特定岗位的公文。

事例:找寻以八个数要么小数点伊始的兼具成品,这里须求固定符^,表示文本的发端。

select prod_name

from products

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

order by prod_name;

注意:在集合^[123]深爱味否定该集结,在此边表示的是文件的启幕。

扩展:

(1卡塔 尔(英语:State of Qatar)^ 文本的始发

(2卡塔尔国$ 文本的最后

(七卡塔尔国总结字段

–为何须求总括字段?

因为存储在数据库表中的多寡貌似不是应用程序所须要的格式,不经常大家必要对原本数据做一些更改等要求。那便是计算字段发挥作用的时候了。

注意:

(1卡塔 尔(英语:State of Qatar)咱们必要一贯从数据库中找找寻调换、总计依旧格式化过的数目,并不是搜索出多少,然后再在顾客机应用程序恐怕报告前后相继中再度格式化。

(2卡塔 尔(英语:State of Qatar)总计字段并不实际存在于数据库表中,总计字段是运作时在select语句内成立的。

正文主要介绍八个知识点,四个是拼接字段,多少个是实施算数总括。

1、拼接字段

东挪西借:将值联结到风流浪漫道构成三个单个值。在select语句中,使用concat()函数来拼接三个列,待拼接的顺序串用逗号分隔。

例子:

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

from vendors

order by vend_name;

2、实行算数计算

例子:

select prod_id,

          quantity,

          item_price,

          quantity*item_price as expanded_price

from orderitems

where order_name = 20005;

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

举一反三:删除左边的保有空格,可以用rtrim()函数,假设是去除左边的全数空格,可用ltrim(),去掉两侧的空格是trim(),在拼接字段一时候会用到。比如:

网站地图xml地图