数据库基本语法使用

SELECT语句

  • SELECT 列名 FROM 表明; 单行检索,多行检索
  • SELECT DATABASE(); 显示当前使用数据库
  • 检索不同的行:SELECT DISTINCT 列名 FROM 表明; 只返回不同的值
  • 限制结果:SELECT 列名 FROM 表明 LIMIT 限制的行数;
    • 指定开始行数和行数:`SELECT 列名 FROM 表明 LIMIT 5,5;
      • LIMIT 5 OFFSET 5;`
  • 使用完全限定的表明:SELECT products.pro_name FROM 表明;

排序检索数据:使用ORDER BY语句

  • 排序数据:SELECT prod_name FROM products ORDER BY prod_name;
  • 按多个列排序:SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price,prod_name;
    • 注意:在多行排序中,是按照指定的行书顺序进行排序的,如上,先是以价格排序,然后在价格相同的数据中再以姓名排序。如果价格都不相同则就不会以姓名排序。
  • 指定排序方向(DESC关键字):SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC; 按照价格以降序的方式排序产品
  • ASC是默认升序的关键字
  • ORDER BY子句位置:要保证ORDER BY位于FROM子句之后。如果使用LIMIT,它必须位于ORDER BY之后。

过滤数据:使用WHERE语句

  • 数据根据WHERE子句中指定搜索条件进行过滤,WHERE子句在表明(FROM子句)之后给出:SELECT prod_name,prod_price FROM products WHERE prod_price=2.50;
  • WHERE子句操作符:=,<>,!=,<,<=,>,>=,BETWEEN
    • BETWEEN匹配范围中所有的值,包括指定开始值和结束值
      -SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
  • 空值检查:
    • NULL 无值(no value):SELECT prod_name FROM products WHERE prod_price IS NULL;
  • WHERE子句的位置:在同时只用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则就会产生错误

数据过滤

组合WHERE语句

  • AND操作符
  • OR操作符
    • 注意:当使用AND和OR的联合查询时,要考虑到操作符优先级问题,使用圆括号明确的分组相应操作符
  • IN操作符:IN在WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当
  • NOT操作符:一般情况下与IN,BETWEEN,EXISTS子句配合使用,相当于否定跟在它后面的条件。
    • SELECT prod_name,prod_price FROM products WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name;

通配符进行过滤

  • LIKE操作符:模糊查询
    • 百分号(%)通配符:搜索模式中给定位置的0个,1个或多个字符
      • 注意:‘%’不能匹配用值NULL作为产品名的行,在匹配时是默认不区分大小写的
    • 下划线(_)通配符:只匹配单个字符
  • 注意:不要过度的使用通配符,在确定要使用通配符的时候,除非绝对必要,否则不要将它们用在搜索模式的开始处,将通配符置于搜索模式的开始处,搜索的效率是很慢的

使用正则表达式进行搜索、

  • REGEXP :regesxp
    • 进行OR匹配:搜索两个串之一,使用 ‘ | ’
      -SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;
    • 匹配几个字符之一:可以指定一组用[ 和 ]括起来的字符来完成。
      • SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name
        • 正则表达式[123] Ton。[123]定义一组字符,其含义是匹配1或2或3。可以理解成[1|2|3] Ton
        • 字腹肌和也可以被否定,即,它们将匹配除指定字符外的任何东西。否定一个字符集只需哟在集合开始的地方放置一个 ^ 即可。就比如:[^123] 匹配出这些字符外的任何东西
    • 范围匹配:[0-9],[a-z] 匹配任意数字和字符串,定义一个范围
      • SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;
    • 匹配特殊字符:要匹配特殊字符,必须使用\转义字符作为前导。\- 表示查找 -,\.表示查找 .
      • SELECT prod_name FROM products WHERE prod_name REGEXP '\\.' ORDER BY prod_name;
    • 匹配字符类
      字符集
说明
[:alnum:]任意字母和数字(同[a-zA-Z0-9]
[:alpha:]任意字母(同[a-zA-Z]
[:blank:]空格和制表(同[\\t])
[:cntrl:]ASCⅡ控制符(ASCⅡ 0到31和127)
[:digit:]任意数字(同[0-9]
[:graph:]与[:print:]相同,但不包括空格
[:lower:]任意小写字母(同[a-z]
[:print:]任意可打印字符
[:punct:]既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:]包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v]
[:upper:]任意大写字母(同[A-Z]
[:xdigit:]任意十六进制数字(同[a-fA-F0-9]
  • 匹配多个实例
    重复元字符
元字符说明
*0个或多个匹配
+1个或多个匹配(等于{1,})
0个或1个匹配(等于{0,1})
{n}指定数目匹配
{n,}不少于指定数目匹配
{n,m}匹配数目的范围(m不超过255)

范例

  • SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name
    • 注意:sticks? 会匹配到stick与sticks(s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现)。
  • SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}' ORDER BY prod_name;
    • [:digit:] 匹配任意数字,所以会查找到一个数字的集合。{4}表示要求它前面的字符(任意数字)出现4次,所以就会查找到存在4个数字字符的集合,如1000,8563,7354。也可以用[0-9][0-9][0-9][0-9]来替代上边的查询语句,其效果是一样的。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值