当前位置: 首页 > news >正文

MySQL超入门(1)__迅速上手掌握MySQL

# 1.选择语句
# 注意事项:MySQL不区分大小写,SELECT * 代表选择全部

// 测试一

USE sql_store; -- 使用 sql_store库
SELECT * FROM customers -- 查询customers表
WHERE customer_id = 1 OR customer_id = 4 -- 条件判断为customer_id = 1或customer_id = 4
ORDER BY first_name -- 升序排序

// 结果一

 // 测试二

SELECT
last_name,
first_name,
points,
points + 10 AS discount_factor,  -- 将points + 10后的值用discount_factor列名表示
(points + 10) * 100 AS 'discount factor'  -- ''中可加空格
FROM customers
ORDER BY points  -- 根据points进行升序排序

// 结果二

 // 小练习,预测结果

SELECT 
name,
unit_price,
unit_price * 1.1 AS new_price
FROM products
ORDER BY new_price

# 小扩展:SELECT DISTINCT ……(去重语句),可去掉重复的查询结果

# 2.WHERE子句

# 注意事项:条件判定<>、!=表不等于

// 测试一

SELECT *
FROM customers  -- 查询customers表
WHERE birth_date > '1991-01-01'  -- 查询条件:birth_date大于1991-01-01

// 结果一

// 测试二

SELECT *
FROM orders
WHERE order_date >= '2019_01_01'

 // 结果二

 # 3. AND(和,两者都为真 —> 真),OR(或,两者有一个为真 —> 真),NOT 运算符(取反,真假互换)

// 测试一

SELECT * FROM customers
WHERE NOT(birth_date > '1990-01-01' OR points > 1000) -- 查询条件:birth_date <= '1990-01-01' 或 points <= 1000

// 结果一

 // 小练习:查询order_items表,获取order_id等于6,且unit_price 乘以 quantity 大于 30的订单

结果如下:

# 4. IN运算符

// 测试一

SELECT * FROM customers
WHERE state = 'VA' OR state = 'GA' OR state = 'FL'

// 测试二

SELECT * FROM customers
-- WHERE state = 'VA' OR state = 'GA' OR state = 'FL'
WHERE state IN ('VA', 'GA', 'FL')

 // 两者输出结果相同

-- 小练习:查询products表中的quantity_in_stock的价格为49,38,72的商品 

 SELECT * FROM products-- WHERE quantity_in_stock = 49 OR quantity_in_stock = 38 OR quantity_in_stock = 72WHERE quantity_in_stock IN (49, 38, 72)

//  由于quantity_in_stock中没有72的选项,所以查询不到72

 

# 5. BETWEEN运算符

 // 测试一

SELECT * 
FROM customers
WHERE points BETWEEN 800 AND 2800
-- 等价于 WHERE points >= 800 AND points <= 2800

 // 结果一

-- 小练习:在customers表中查询birth_date在1990-01-01和2000-01-01之间的顾客 

SELECT * 
FROM customers
WHERE birth_date BETWEEN '1990-01-01' AND '2000-01-01'

-- 注意:WHERE birth_date BETWEEN 1990-01-01 AND 2000-01-01 

-- 未用' ',却没有报错,返回结果为空 

# 6. LIKE运算符(用的不多,有更高级的选择 REGEXP)

 // 测试一

SELECT * 
FROM customers
WHERE last_name LIKE '%c%' -- %代表0或多个字符,该条语句表示查询last_name中包含c的所有选项
-- WHERE last_name LIKE '%c%' -- %代表0或多个字符,该条语句表示查询last_name中包含c的所有选项
-- WHERE last_name LIKE '%y' -- 以y结尾的所有选项
-- WHERE last_name LIKE 'm%' -- 以m开头的所有选项
-- WHERE last_name LIKE 'b______y' -- _表示任意1个字符

// 结果一

 -- 小练习:查询customers中phone中包含9的号码,且地址为中包含trail或field的顾客

SELECT * 
FROM customers
WHERE phone LIKE '%9%' AND (address LIKE '%trail%' OR address LIKE '%field%')

 

 # 7. REFGEXP运算符(正则表达式)

//  测试一

SELECT * 
FROM customers
WHERE last_name REGEXP 'rush'
-- 等价于WHERE last_name LIKE '%rush%'

// 结果一

// 测试二

SELECT * 
FROM customers
WHERE last_name REGEXP 'caff|field$|^dow|[abc]g|g[a-h]'
-- 包含caff字符的所有last_name
-- |代表 或
-- field$代表 以field结尾
-- ^dow代表 以dow开头
-- [abc]代表 在a,b,c中的任意一个字符
-- [a-h]代表 从a到h的任意一个字符

// 注意事项:空格在字符串中小心使用

 // 结果二

-- 小练习:获取customers中
-- first_name是ELKA或AMBUR的客人
-- last_name以EY或ON结尾的客人
-- last_name以MY开头或含有SE的客人
-- last_name中包含B后面连接着R或U的客人

SELECT *
FROM customers
WHERE first_name REGEXP 'elka|ambur'
OR last_name REGEXP 'ey$|on$'
OR last_name REGEXP '^my|^se'
OR last_name REGEXP 'b[ru]'

# 8. IS NULL运算符

// 测试一

SELECT *
FROM customers
WHERE phone IS NULL -- 查询phone中的null(空号)
-- WHERE phone IS NOT NULL -- 查询phone中的非null(非空号)

// 结果一

-- 小练习:获取orders中未发货的货物(参数二选一:shipped_date OR shipper_id)

SELECT *
FROM orders
WHERE shipped_date IS NULL

 

# 9. ORDER BY子句

 //  测试一

SELECT *
FROM customers
ORDER BY first_name  -- 默认按first_name首字符进行升序排序(自顶而下,由小到大)
-- ORDER BY first_name DESC -- 按first_name首字符进行降序排序(自顶而下,由大到小)

// 结果一 

-- MySQL中,可以使用任何列进行排序,即使不是SELECT查询的列。(与其他关系型数据库的区别)
-- 例:

SELECT first_name, last_name
FROM customers
ORDER BY birth_date DESC

 -- MySQL中可以使用如下语句进行排列(但应尽量避免这种使用)

SELECT *,first_name, last_name
FROM customers
ORDER BY 2, 3  
-- 2,3 分别对应着first_name, last_name
-- 使用这种排序方法,改变选择的参数,可能会导致查询结果出现变化

 -- 练习:查询order_items表中的quantity和unit_price相乘的结果,条件为order_id = 2,按相乘结果倒序排序

SELECT *, quantity * unit_price AS order_items -- 为quantity * unit_price设置别名,便于管理该列数据
FROM order_items
WHERE order_id = 2
ORDER BY order_items DESC

# 10.LIMIT语句(该语句放在最后)
// 测试一
SELECT *
FROM customers
LIMIT 3 -- 此行表示只显示前三行数据

 // 结果一

// 测试一 

SELECT *
FROM customers
LIMIT 5,3 -- 此行表示只显示第五行后的前三行数据

 // 结果二

-- 练习:获取customers中points最高的前三名

SELECT * 
FROM customers
ORDER BY points DESC
LIMIT 3 

# 11.小结

 分析下列代码各行的作用,并运行验证结果

USE sql_store;
SELECT *, 
address, 
city, 
points * 10 AS 'all points'
FROM customers
WHERE first_name REGEXP 'y$|^b|[a-n]c' 
OR last_name LIKE '_y%' 
OR state IN ('VA') 
OR ((points BETWEEN 800 AND 3000) AND phone IS NOT NULL)
ORDER BY points DESC
LIMIT 3,5
http://www.lryc.cn/news/180329.html

相关文章:

  • 四、浏览器渲染过程,DOM,CSSDOM,渲染,布局,绘制详细介绍
  • 2021-06-10 51单片机设计一个蜂鸣器报警电路每秒
  • D‘Agostino-Pearson正态检验|偏度skewness和峰度kurtosis
  • 基于树莓派CM4制作img系统镜像批量制作TF卡
  • 【中秋国庆不断更】OpenHarmony组件内状态变量使用:@State装饰器
  • 【Java 进阶篇】MySQL多表关系详解
  • 【开发篇】十、Spring缓存:手机验证码的生成与校验
  • 【Aurora 8B/10B IP(1)--初步了解】
  • C++ vector容器的介绍与使用
  • openstack的组成
  • [React] React高阶组件(HOC)
  • 【逐步剖C++】-第二章-C++类和对象(中)
  • PL/SQL动态SQL
  • Python绘图系统24:添加辅助坐标轴
  • Java自学网站--十几个网站的分析与评测
  • java接口怎么写
  • 第8章 Spring(二)
  • 从0开始python学习-24.selenium 浏览器常见的操作
  • Canal实现数据同步
  • 数据库学习笔记——DDL
  • MATLAB算法实战应用案例精讲-【人工智能】边缘计算(附python代码实现)
  • 精彩回顾 | 迪捷软件亮相2023世界智能网联汽车大会
  • 【ShaderLab PBR 嗜血边缘角色_美式朋克风格_“Niohoggr“_角色渲染(第一篇)】
  • python经典百题之围圈报数
  • Google Earth Engine(GEE)案例——如何去除和过滤Landsat和sentinel等系列影像集合中的空影像(三种方法)
  • Leetcode 69.x的平方根
  • Node18.x基础使用总结(二)
  • LCD 的RGB接口(SYNC Mode/ SYNC-DE Mode/ DE Mode)
  • flink生成水位线记录方式--周期性水位线生成器
  • 百度资源搜索平台出现:You do not have the proper credential to access this page.怎么办?