MYSQL CHAPTER2

本文详细介绍了SQL中的关键部分,如SELECT语句、WHERE子句、运算符(AND,OR,NOT,IN,BETWEEN,LIKE,REGEXP,ISNULL)、ORDERBY和LIMIT子句,帮助读者理解和使用这些基本结构进行数据库查询。
摘要由CSDN通过智能技术生成

1-选择语句|The SELECT Statement

  • USE sql_store;
  • SELECT *
  • FROM customers
  • WHERE customer_id=1
  • ORDER BY first_name
  1. “USE sql_store”表示选择当前数据库;或者双击选中
  2. Ctrl+Shift+Enter 执行快捷键
  3. “--WHERE customer_id=1”代表注释,SQL不会执行

2-选择子句|The SELECT Clause

  • SELECT
    • last_name,
    • first_name,
    • points+10 AS discount_factor
  • FROM customers
  1. +、-、*、/、%(除法的余数)
  2. discount_factor等同于’discount factor’
  3. 改动表格时,Click Apply twice.
  4. 当想得到唯一值时,SELECT DISTANT state FROM customers

3-WHERE子句|The WHERE Clause

  • SELECT *
  • FROM customers
  • WHERE state=’VA’
  1. 注意这里给VA加了引号,因为这是字符串,即文本数据;VA无谓大小写
  2. WHERE birth_date>’1990-01-01’——此时也要用引号,即使日期不算字符串
  3. 比较运算符包括>、 < 、>= 、<= 、=、!=、<>(后两者都是不等)

4-AND,OR,NOT运算符|The AND,OR and NOT Operators

  • SELECT *
  • FROM customers
  • WHERE (NOT) (birth_date>’1990-01-01’ OR points>1000 AND state=’VA’)
  1. 以上同义于WHERE birth_date<=’1990-01-01’ AND (points<=1000 OR state!=’VA’)
  2. AND:两个条件均满足;OR:两个条件满足其一。AND相比于OR有更高优先级,必要时加括号

5-IN运算符|The IN Operator

  • SELECT *
  • FROM customers
  • WHERE state IN (’VA’ ,’GA’ ,’LA’)
  1. 以上同义于WHERE state =’VA’ OR ’GA’ OR ’LA’吗?

        否,SQL中不能将字符串同Boolean表达式结合。

        正确表达为WHERE state=’VA’ OR state=’GA’ OR state=’LA’

6-BETWEEN运算符|The BETWEEN Operator

  • SELECT *
  • FROM customers
  • WHERE points BETWEEN 1000 AND 3000
  1. 以上同义于WHERE points>=1000 AND Points <=3000

7-LIKE运算符|The LIKE Operator

  • SELECT *
  • FROM customers
  • WHERE last_name LIKE ‘b%’
  1. 以上得到所有姓氏以B打头的顾客,B无谓大小写

  • SELECT *
  • FROM customers
  • WHERE last_name LIKE ‘%b%’
  1. 以上得到所有姓氏含B的顾客,B无谓大小写

  • SELECT *
  • FROM customers
  • WHERE last_name LIKE ‘_ _ _b’
  1. 以上“_”代表单字符

8-REGEXP运算符|The REGEXP Operator(正则表达式,regular expression)

  • SELECT *
  • FROM customers
  • WHERE last_name REGEXP ‘field’
  1. 以上同义于WHERE last_name Like ‘%field%’

  • SELECT *
  • FROM customers
  • WHERE last_name REGEXP ‘^field’
  1. 用^表示字符串的开头,表示姓氏必须以field打头

  • WHERE last_name REGEXP ‘field$’
  1. 用$表示字符串的开头,表示姓氏必须以field结尾

  • WHERE last_name REGEXP ‘field|mac|^rose’
  1. 以上“|”代表OR

  • WHERE last_name REGEXP ‘[gim]e’
  1. 以上代表在e前要有g或者i或者m

  • WHERE last_name REGEXP ‘[a-h]e’
  1. 以上代表在e之前可以有从a到h的任意字母

9-IS NULL运算符|The IS NULL Operator(如何搜索缺失了属性的记录)

  • SELECT *
  • FROM customers
  • WHERE phone IS (NOT) NULL
  1. 以上表示查找缺失phone number的customer

10-ORDER BY子句|The ORDER BY Clause

首先解释下为什么第一列的customer_id是默认排序列:

点击工具图标,得到:

此时页面可以操作任意列的增删改

第一行的customer_id左侧的黄键表示此列为这张表的主键列,该列的值要能够唯一识别表里的记录。这张表默认以customer_id进行排序

  • SELECT *
  • FROM customers
  • ORDER BY first_name (DESC)
  1. DESC代表降序

  • SELECT *
  • FROM customers
  • ORDER BY state,first_name
  1. 以上表示多列排序

  • SELECT first_name,last_name,10 AS points
  • FROM customers
  • ORDER BY points,first_name
  1. MYSQL与其他数据库的区别在于,MYSQL中可以用任何列排序数据,不论该列是否在SELECT子句中

11-LIMIT子句|The LIMIT Clause(如何限定查询返回的记录)

  • SELECT *
  • FROM customers
  • Limit 3
  1. 此时仅返回前三位customer

  • SELECT *
  • FROM customers
  • Limit 6,3
  1. 此时可以选择性添加一个offset(偏移量),用于数据分页。比如一个网页可以让用户查看到所有的customer,但每页只显示3位customer:page1(1-3)、page2(4-6)、page3(7-9)……当查看page3时则有如上指令,6为偏移量。“Limit 6,3”表示跳过6条记录并选取接下来的3条记录。
  2. 注意:LIMIT子句永远要放在最末
  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值