SQL笔记

基于MySQL的基础笔记

USE sql_store;

        意思为使用这个数据库在MySQL里面 然后就可以用了 也可以双击它 记得这里要有分号结束

SELECT *

FROM customers

        意思为查询全部从customers的表格 为了统一好格式 SQL语句最好大写

        点击黄色闪电按钮 就可以执行了

WHERE customer_id = 1

ORDER BY first_name

       上面的where为定位到详细表格的具体一行 order by则为显示他们通过first_name的排序顺序

如果要注释SQL就在语句前面加上-- 就行了

通常我们不会直接用 * 来查询全部数据 因为那会给服务器 数据库和网络造成很大压力 通常需要精确查询比如

SELECT 

        last_name,

        first_name,

        points,

        (points + 10) * 100 AS discount_facto

FROM customers

可以注意到 在查询的时候是可以进行四则运算的 只要格式写对 AS可以临时做为Column的名字中间是不能有空格的 如果要加空格就得左右加上 ' 或者 "         就像 AS 'discount facotr'        AS "discount factor"

SELECT DINSTINCT state

FROM customers

before:                           after: 

        distinct的作用为去重复 如果查出来state 里FL有好几个 那么它只会显示一个

WHERE 还可以 加上判断符号更精确查找像 WHERE state = 'VA'        WHERE points < 3000        WHERE birth_date > '1990-01-01'

此外 还可以用逻辑符号连接两个条件在WHERE后面 像

        WHERE birth_date > '1990-01-01' AND points > 100

        WHERE birth_date > '1990-01-01' OR points > 100

        WHERE birth_date > '1990-01-01' OR points > 100 AND state = 'VA'

AND 为 两边条件都要满足才实现

OR 为只要一边条件满足就行       

AND的权重更高 所以在多个判断符号时 先执行AND 后OR 但也可以通过括号改变他们的权重

此外 还可以再进行一次反转 WHERE NOT birth_date > '1990-01-01' OR points > 100 AND state = 'VA'

加上了NOT之后 查到的就是除了这些条件的人之外剩余哪些

一些人可能会说 可以这样查询吗 WHERE state = 'VA' OR 'GA' OR 'FL'         答案是不行的 因为OR没有这么高级 它只能判断返回的布尔值 也就是要么这个语句符合条件为true 或者false 所以一定要写完整 WHERE state = 'VA' OR state = 'GA' OR state = 'FL'

但也有一种方式可以实现 那就是 WHERE state IN ('VA', 'FL', 'GA') 这样就可以实现了 同时这里也可以用NOT 就像 WHERE state NOT IN ('VA', 'FL', 'GA') 来查找 不在这些州的人

如果我们要查询分数大于2000 小于4000的该怎么办呢 正常人想的应该是 WHERE points > 2000 AND points < 4000 但是 现在又有一种简便写法 WHERE points BETWEEN 2000 AND 4000

如果我们要查找姓氏里面b字母开头的人该怎么办呢 这时LIKE 就出场了         WHERE last_name LIKE 'b%' 这样就能查询到了 %代表了结束 同理 如果只是查询含b的名字就改成 '%b%'   末尾含b就是 '%b'

再次基础上 如果我们要查询到 b开头 隔了4个字母又是y结尾的单词 该怎么查询呢 WHERE last_name LIKE 'b____y' 这样就也可以查询到了

LIKE '%blesh%' 还能怎么升级呢 当然是 REGEXP 'blesh' 更简单的写法 功能一样 有人可能要问那我查开头结尾单词在 REGEXP里面还是 % 吗 答案是 改变了 开头是 ^ 结尾是 $  举个例子 查开头为a 就是 WHERE last_name REGEXP '^a'        结尾为field 的话就是 WHERE last_name REGEXP 'field$' 所以需要注意顺序

WHERE last_name LIKE '%field%' OR '%mac%' 也可以代替为 WHERE last_name REGEXP 'field|mac' 表示多个搜索模式 更加简洁

WHERE last_name REGEXP '[gim]e' 中括号里面的东西表示为可以和外面e搭配的字母 也就是ge, ie, me        中括号里还可以用略写 如 '[g-h]e'  这个时候 g-h的那些字母都会和外面的e合并一个一个查询

同时一些属性没有 我们也可以查询 像一些顾客没有留电话号码 要想快速找到他们可以用

SELECT * 

FROM custoemrs

WHERE phone IS NULL

注意 也可以用NOT 在这里 也就是 WHERE phone IS NOT NULL查找 留了号码的人

当我们SELECT * FROM customers 会默认按照customer_id 来排序 像下面的图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值