MYSQL 数据库基础

基本操作

运行
shift + ctrl + enter

其他
MYSQL 对 Sapce、Enter 不敏感,对单引号、双引号不区分

注释

-- 注释内容

选中数据库

USE 数据库名;  -- 记得要加分号, 但之后的就不用

列出数据

SELECT * -- 全部
SELECT points -- 子文件
SELECT DISTINCT points -- 无重复子文件
SELECT points_1, points_2 -- 多个子文件
SELECT points + 10 -- 子文件数据运算
SELECT (points + 10) AS new_data -- 子文件起别名
SELECT (points + 10) AS "new data" -- 子文件起别名

数据来源

FROM customers -- 子数据库

筛选数据

WHERE points > 3000 AND points < 6000  -- 或用 OR
WHERE state = 'VA'  -- 不等于用 !=和 <>表示
WHERE NOT(prices <= 20)  -- 相当于大于20
WHERE state IN ('VA','MA','GA')  -- 简化的 AND
WHERE prices BETWEEN 100 AND 400  -- 区间为 100 至 400
WHERE old_name LIKE 'brush%'  -- 以 brush 开头的数据, %在前面是结尾, %两边都有是存在
WHERE first_name REGEXP 'brush'  -- 存在 brush 的数据, ^在前面是开头, $在后面是结尾
WHERE first_name REGEXP 'field|mac'  -- 简化的 AND 与存在
WHERE first_name REGEXP '[gim]e'  -- 存在 ge,ie,me ,也可以用 [i-j]表示连续
WHERE last_name LIKE 'k___l'  -- 第一个字符为 k ,第五个字符为 l的数据
WHERE phone IS NULL  -- phone 为空的数据

数据排序

ORDER BY first_name  -- 按照 ASCII码排序
ORDER BY first_name ,last_name  -- 排序优先级顺序
ORDER BY first_name DESC,last_name DESC -- 降序优先级顺序, asc是升序 (默认)

数据限制

LIMIT 3  -- 取前三个
LIMIT 6, 3  -- 先向后偏移 6位 ,再取前三个 (从 789开始)

表单合并

-- 当你需要列出 ord.items 和 products 某些数据时
-- 要先确定 两者共同的数据, 并将其合并, 最后再列出

SELECT order_id, oi.product_id, quantity, unit_price  -- 要列的数据 注意共同数据的前缀
FROM order_iteams oi  -- 合并表单之一 并起别名
JOIN products p ON oi.product_id = p.product_id  -- 合并表单之二  共同数据

-- 下面是隐式连接语法 效果和上面一样
SELECT order_id, oi.product_id, quantity, unit_price
FROM order_iteams oi, products p
WHERE oi.product_id = p.product_id

-- 下面是 USING 关键词  效果和上面一样
SELECT order_id, oi.product_id, quantity, unit_price
FROM order_iteams oi, products p
USING(product_id)

表单交叉
建议阅读此博客:CROSS JOIN

-- 下面两者效果是一样的
-- 前者是交叉连接 后者是显示连接

SELECT *
FROM customers c
CROSS JOIN products p
ORDER BY c.first_name

SELECT *
FROM customers c, products p
ORDER BY c.first_name

UNION 操作符

-- 目标:定义 2000分以下的顾客为青铜 2000至3000分的顾客为白银 其他分的顾客为黄金

SELECT
	customer_id,
    first_name,
    points,
    'Bronze' AS type
FROM customers
WHERE points < 2000
UNION
SELECT
	customer_id,
    first_name,
    points,
    'Silver' AS type
FROM customers
WHERE points BETWEEN 2000 AND 3000
UNION
SELECT
	customer_id,
    first_name,
    points,
    'Gold' AS type
FROM customers
WHERE points > 3000
ORDER BY first_name

运行结果:
在这里插入图片描述

插入数据

-- 两种插入数据的方法

INSERT INTO products(name, quantity, unit_price)
VALUES ('product_1', 10, 1.95)
	   ('product_2', 12, 1.95)
	   ('product_3', 14, 1.95);  -- 记得要加分号

INSERT INTO products
VALUES (LAST_INSERT_ID(), 'product_1', 10, 1.95)
	   (LAST_INSERT_ID(), 'product_2', 12, 1.95)
	   (LAST_INSERT_ID(), 'product_3', 14, 1.95);  -- 记得要加分号

生成表单

CREATE TABLE orders_archived AS  -- 创建表单
SELECT * FROM orders

INSERT INTO orders_archived  -- 复制下面内容到表单
SELECT * FROM orders
WHERE order_date < '2019-01-01'

更新表单

-- 普通更新
UPDATE invoices  -- 要更新的数据库
SET
	invoice_total = 10,
    payment_date = '2019-03-01'
WHERE invoice_id = 1

-- 内层更新
UPDATE orders  -- 要更新的数据库
SET comments = 'Gold customer'
WHERE customer_id IN 
		(SELECT customer_id
        FROM customers
		WHERE points > 3000)

删除数据

-- 内层删除
DELETE FROM invoices  -- 删除数据库
WHERE client_id = (
		SELECT *
        FROM customers
		WHERE name = 'Myworks'
)

猜你喜欢

转载自blog.csdn.net/CourserLi/article/details/105284032