MYSQL必知必会笔记

SELECT语句

使用select语句,必须至少有两条信息,想选择什么,从哪选择。

单个语句结束必须加上分号,SQL语句不区分大小写。

检索单个列

select pro_name from products

检索多个列

在多个列名并列,使用逗号分隔开来

select pro_id,pro_name,pro_price from products

检索所有列

使用通配符'*'来标识所有的列

select * from products

检索不同的行

使用select检索某一列时,会将该列中所有行的数据都检索出来,如下图所示

Distinct.png

如何检索行值不同的列,使用DISTINCT关键字,只返回行值不同的列

select distinct vend_id from products

DISTINCT关键字默认作用在所有的列上,而不仅仅是前置列。

限制结果

LIMIT关键字可以限制返回的行数

select prod_name from products limit 5,5;

选取从第五行开始的五行。MySQL行计数从0开始 ,从行0开始选择,则省略0

排序检索数据

排序数据

如果希望选择出来的数据根据某个列的值进行排序,可以使用ORDER BY关键字

select prod_name from products order by prod_name;

按多个列排序数据

与select选择多列一样,只需用逗号将列名分隔开来即可

select prod_name from products order by prod_price,prod_name

指定排序方向

order by关键字的默认排序方向时增序,如果想要降序使用DESC关键字

select pro_name from products order by prod_prices desc

DESC关键字默认只作用于关键字前面的那个列,其与DISTINCT关键字不同,如果想要多个列都适用降序,则在每个列之后都增加DESC关键字。

ORDER BY关键字与LIMIT搭配使用,可以选择指定的几行,比如说选择价格最低的商品的名字

select prod_name from products order by prod_price desc limit 1;

LIMIT语句应该位于ORDER BY语句之后

过滤语句

WHERE过滤语句

使用select语句时可以用where设置搜索条件

where.png

用BETWEEN关键字的时候,需要范围的开始值和结束值,比如

select prod_name from products where prod_price between 5 and 10

在表中,当一个列不包含值,称其为空值NULL,与字段包含0、空字符串或仅仅包含空格不同

WHERE语句也可以用来直接判空

select prod_name from products where prod_price is NULL

ORDER BY语句可以与WHERE语句搭配,置于WHERE语句之后

AND和OR操作符可以用来增加WHERE语句的多样性

select prod_name from products where prod_id=1 or prod_id=12
select pro_name from products where vend_id=1003 and prod_price<=10;

在计算的时候,AND的优先级高于OR的优先级,根据实际情况,对AND或者OR并列的子句进行加括号处理

IN关键字

WHERE语句用来指定要匹配值的清单关键字,功能与OR相当

对于IN的合法取值由逗号分隔开全部在圆括号中

select prod_name from products where vend_id in (1002,1003) order by prod_name

为什么要使用IN操作符:

  • IN操作符的比OR的执行速度更快
  • IN的最大优点是可以包含其他的SELECT语句

NOT关键字

WHERE语句中的NOT操作符有且只有一个功能就是否定它之后所跟的任何条件

select prod_name from products where vend_id not in (1002,1003) order by prod_name

LIKE通配符

使用LIKE关键字以及‘%’符号可以对字符串内容进行模糊匹配,‘%’可以匹配多个甚至0个字符,但是不能匹配NULL内容;‘_’只能匹配单个字符

select prod_id from products where prod_name like '%anvil%'
select prod_id from products where prod_name like '_nvil'

正则表达式匹配

正则表达式意义为只要列值中出现我想要匹配的字符,即可进行返回

基本匹配

select prod_id from products where prod_name regexp '1000'

‘.’是正则表达式中的一个特殊字符,可以表示任意内容

OR匹配

可以使用OR关键字进行或的匹配

select prod_id from products where prod_name regexp '1000|2000'

[ ] 匹配多个字符

select prod_id from products where prod_name regexp '[123] ton'

这里的[123]就是上述关键字OR表示的1|2|3的意思,如果是一个范围,可以用[1-5]这样的形式来表示,不仅仅是数字,字母也可以[a-z]

特殊字符匹配

如果想要匹配‘.’这样的特殊字符如何匹配呢,上面也提到‘.’可以匹配任何字符

使用’\\‘进行转义

select prod_id from products where prod_name regexp '\\.'

拼接字段和别名

选择列时可能会希望将几个列的值并列在一起显示,并且指定为一个新的名字。

拼接的关键字是Concat函数,别名的关键字是AS函数

select concat(vend_name,' (',vend_country,' )') as vend_title from products order by vend_name
concat.png

计算字段

MySQL还可以对检索出来的数据进行数学计算,包括+、*、-、/

select prod_id,quantity,item_price,quantity*item_price as expanded_price from products where order_num=20005
计算字段.png

聚集函数

聚集函数.png
select avg(prod_price) as avg_price from products;
select count(*) as row_sum from products;//count(*)对表中所有的行进行计数,不管表中包含的是空值(NULL)还是非空值
select count(prod_id) as id_num from products;//只对列中具有值的行进行计数,忽略NULL值
select max(prod_price) as max_price from products;
select min(prod_price) as min_price from products;
select sum(prod_price) as sum_price from products;

以上五个聚集函数默认都是对所有的行进行计算,如果使用DISTINCT关键字在列名之前,默认只会计算不同的值

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

推荐阅读更多精彩内容