相关文章推荐
近视的剪刀  ·  PostgreSQL和Oracle的sql差 ...·  2 小时前    · 
谦逊的面包  ·  oracle查询重复数据方法 - ...·  19 分钟前    · 
帅气的生姜  ·  ASP.NET Core ...·  12 月前    · 
空虚的香烟  ·  Python ...·  1 年前    · 
憨厚的鼠标  ·  C++ File文件处理 ...·  1 年前    · 


一般约定:

虽然SQL不区分大小写,但是对于我们会对SQL关键字使用大写,对表名和列名使用小写。

一条SQL语句可以不使用;对于多条SQL语句必须用分号隔开。

一、简单查询

1、检索单个列:

SELECT prod_name FROM products

2、检索多个列:

SELECT prod_id,prod_name  FROM products

3、检索所有列:

SELECT * FROM products

4、检索不同的行:

SELECT DISTINCT vend_id FROM products :DISTINCT 关键字返回的id都是不同的。

5、限制结果:

返回的结果不多于5行:SELECT prod_name FROM products LIMIT 5

从第五行开始查后面的5行:SELECT prod_name FROM products LIMIT 5,5

6、排序数据:默认是升序排ASC, 也可以指定降序DESC

(1)单列排序:

SELECT prod_name FROM products ORDER BY prod_name

(2)多列排序:首先按名字排,再按价格排;

SELECT prod_name,prod_price,prod_id FROM products ORDER BY prod_name,prod_price

(3)单列降序:

SELECT prod_name FROM products ORDER BY prod_name DESC

(4)多列降序:价格最贵的在前面,然后再按名字排序

SELECT prod_id,prod_name,prod_price FROM products ORDER BY prod_price DESC,prod_name

二、条件查询Where语句

1、 相等、大于小于、不等于
(1)SELECT prod_name,prod_price FROM products  WHERE prod_price = 2.50

(2)SELECT prod_name,prod_price FROM products  WHERE prod_price <= 10

(3)SELECT prod_name,prod_price FROM products  WHERE prod_price <> 10

(4)范围查询:BETWEE x AND Y [x,y]

SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10

(5)空值检查:IS NULL 和 IS NOT NULL

SELECT prod_name,prod_price FROM products WHERE prod_price IS NULL

SELECT prod_name,prod_price FROM products WHERE prod_price IS NOT NULL

2、组合where字句

(1)AND 和 OR

SELECT prod_id,prod_name,prod_price FROM products WHERE vend_id = 1003 AND prod_price <=10

SELECT prod_id,prod_name,prod_price FROM products WHERE vend_id = 1003 OR prod_price <=10

(2) AND 和 OR 结合:注意AND优先级比较高,会优先处理AND

SELECT prod_id,prod_name,prod_price FROM products WHERE vend_id = 1003 or vend_id = 1002 and prod_price >=10

解决方法:加()

SELECT prod_id,prod_name,prod_price FROM products WHERE (vend_id = 1003 or vend_id = 1002) and prod_price >=10

(3) IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。

SELECT prod_name,prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_price

相当于 vend_id=1002 OR vend_id=1003

(4) 不在范围内:NOT IN

  • 使用IN 一般比OR快,IN 中可以包含select语句

3、通配符进行过滤

(1)like : 模糊查询。%表示任何字符出现任意次数:%x%, x%t,  x%

查询名字以jet开头的产品名列表:区分大小写---- jet Jet

SELECT prod_name FROM products WHERE prod_name like 'jet%'

(2)下划线 _ 也可以做匹配,但是只能匹配一个字符

  • 效率比较低,不要过度使用,特别是放在开头!

4、正则表达式

随着查询条件的复杂性增加,where 字句本身的复杂性也增加,这时候我们就应该考虑正则表达式。

正则表达式的作用是匹配文本,将一个正则表达式与一个文本串进行比较。

语法:REGEXP + 表达式(其实很类似like语句), 不过有区别:

like匹配整个列,全匹配(不使用通配符)

regexp : 包含就可以

(1)查询name中包含文本1000 的所有行

SELECT prod_name FROM products where prod_name REGEXP '1000'

(2) . 表示匹配任意字符 : 查询name中包含文本 x000 的所有行

SELECT prod_name FROM products where prod_name REGEXP ' . 000'

(3)其他例子

regexp 1000|2000 : 或

regexp [123] Ton : 匹配特定字符,另一种形式的或语句

regexp  [1-5] Ton : 匹配范围

特殊字符要\\转义

^ :文本开始

$ :  文本结束

*[0,x]、+[1,x]、?[0,1]

.....

java 最小docker java 最小内存

0.1.1 java基础入门知识11 计算机存储的最小单位是字节 8位是1字节2 命令行窗口cmd 命令行窗口 cd 打开文件 / 为正斜杠 dir 为文件夹 cls 清屏 cd… 返回上一级 cd \ 返回根目录 dir 查看当前内容 exit 退出3 jvm jre jdkjava虚拟机 jvm ,是java程序的运行环境,我们编写的程序运行在jvm之上,而jvm运行在操作系统之上。