ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql-2选择子句基础

2022-01-25 15:05:08  阅读:189  来源: 互联网

标签:last name 子句 选择 field Mysql REGEXP WHERE


选择语句

选择数据库

可以双击数据库或者输入指令USE(可以大写也可以小写,但是最好是大写sql中的关键字,小写其他内容)

USE sql_store

选中后对应的数据库名称会加粗显示

查询语句SELECT

select 后面写要获取的列项或者使用*表示获取所有列项

然后下面使用from子句表明要查询的表,这里查询customers表

USE sql_store;
SELECT customer_id,first_name
FROM customers

当你有几个语句时,要用;隔开

select可以写在一行,但是如果数据库太过庞大,会使得语句看起来复杂所以我们写成两行

SELECT后面写列的名称,如果这个列存放的是数字,那么你也可以进行计算再显示1出来

image-20211208145734735

当我们想要自定义列的名字可以在后面加关键字AS+自定义名字

image-20211208145918274

如果你的名字想要有空格或者_以外的字符可以把名字用''或""框起来

image-20211208150145228

选择子句

当我们查询时想要得到一份数据的唯一列表(没有重复项)时,我们可以在select后面加上distinct关键字

image-20220114095713600

可以看到有两个vm

image-20220114095801973

WHERE子句

就是筛选语句,后面写出要满足的条件,对数据进行筛选

比如如下例子在所有顾客中找出积分大于3000的顾客

image-20220114100644869

可以用的符号:

(> >= < <= = !=不等于也可以用<>)

当我们要找的日期在某日期之前或者之后时也可以用> <但是要注意我们用引号表述日期值 即使日期不算是字符串

AND OR NOT运算符

AND一般用于多条件

WHERE birth_data >'1990-01-01' AND points > 1000

这种要同时满足两个条件的

而OR就是满足其中一个就可以的意思(当条语句既有OR和AND时AND的优先级更高但是最好还是将AND两边的语句括起来这样方便使用者查看)

WHERE birth_data >'1990-01-01' OR (points > 1000 AND state=VA)

NOT用于否定一个条件

当WHERE后面使用了NOT后条件中的比较运算符都要反过来,且and和or互换

IN 运算符

当我们的选择条件是同属性的不同值时我们用and就显得很麻烦,

所以我们要用IN

WHERE quantity_in_stock IN (49,38,72)

当然如果值是字符串要加''

BETWEEN运算符

用于简写我们取值的范围

比如我们要筛选积分在1000到3000

WHERE points BETWEEN 1000 AND 3000
//或者
WHERE points >=1000 AND points<=3000 

(注意日期要用''括起来)

LIKE运算符

这里先举一个例子

WHERE last_name LIKE 'b%'

这是找姓以b开头的人

%表示省略多个字符

找名字中含有b的可以用%b%

_ 表示省略一个字符

REGEXP运算符

正则表达式的缩写用于搜索字符串

比如我们要搜索姓含有'field'的人我们用like是可以完成的

WHERE last_name LIKE '%field%'

这样就可以找到姓里面无论哪里含有filed的人但是我们用REGEXP就可以不用百分号了

WHERE last_name REGEXP 'field'

效果是完全一样的

当然用法也有不同

WHERE last_name REGEXP '^field'

表示last name必须以field开头

WHERE last_name REGEXP 'field$'

表示必须以field结尾

WHERE last_name REGEXP 'field|mac|rose'

可以同时找多个关键词关键词之间用竖线隔开

WHERE last_name REGEXP '^field|mac|rose'

当然也可以和上面的一起结合使用

假如你想搜索姓氏里面有e且e的前面有一些规定字母的人

WHERE last_name REGEXP '[gim]e'

就比如这样可以找到姓氏里有e且e前面是这三个其中一个的符合条件的所有数据

同样可以把括号写在后面找后面字母

当要求是一个范围时可以再[]里写a-h类似

IS NULL运算符

用于查找缺失某信息的数据

SELECT *
FROM orders
WHERE shipped_date IS NULL

比如查找那些没有发货的订单数据

如果要找所有发货了的我们可以加上NOT

SELECT *
FROM orders
WHERE shipped_date IS NOT NULL

ORDER BY子句

使数据进行排序显示

一般一个表都有属于它自己的主键,主键是唯一的,排序会默认按照主键排序,当我们要自定义某方式排序显示时就可以用到这个子句

image-20220125142157764

点可击这个可以对表进行设置

image-20220125142324105

当我们指定要以姓的首字母进行排序时

image-20220125142512207

当然默认的就是升序排序,如果你想改为降序在后面加上DESC就行了

image-20220125142631832

LIMIT子句

限定查询返回的记录

SELECT *
FROM customers
LIMIT 3

这样就限制只显示前三条,如果限制的数大于了所有的数据,则就显示所有数据

SELECT *
FROM customers
LIMIT 6,3

这里第一个数表示跳过前几个数据,后一个数表示显示几条数据,执行结果如下

image-20220125144257243

这里要注意下各子句的顺序

标签:last,name,子句,选择,field,Mysql,REGEXP,WHERE
来源: https://www.cnblogs.com/qwerty-wy/p/15842970.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有