SQL入门
SELECT *
FROM table
WHERE column LIKE '条件'
Order by 1
LIMIT 100
基本语法
注释
--
后面是注释内容。--
是sql的注释标志
运算符
运算符 | 说明 |
---|---|
AND |
和,AND的优先级一般会高于OR |
OR |
或者 |
NOT |
非 |
() |
括号,提高优先级。 |
条件
符号 | 含义 |
---|---|
% |
n个任意字符 |
_ |
1个任意字符 |
正则表达式
REGEXP(Regular Expression)
WHERE column REGEXP '表达式'
符号 | 意义 | 例子 |
---|---|---|
^ |
以..开头 | ^field |
$ |
以..结尾 | field$ |
\ |
或者 | ^field|mac|rose |
[] |
匹配中括号内的所有字符 | [gim]e ,匹配ge、ie、me,[a-c]d ,匹配ad、bd、cd, [1-3] 同理 |
注意:由于我使用的markdown编译器无法将表格中的代码中的
|
识别为符号,以上的|
为全角符号
NULL
表达式 | 含义 |
---|---|
IS NULL |
值为null |
IS NOT NULL |
值不为null |
AS
在原有数据基础上新建一列数据,或者理解为处理完原有列数据填入新一列中
score + 10 AS new _score
SELECT
选择表内的数据
SELECT first _name, last _name
ORDER BY
根据什么值排序
ORDER BY first _name
多值排序
ORDER BY state, first _name
根据列排序
ORDER BY 1, 2
DESC
- descending:降序
ORDER BY first _name DESC
多值排序
ORDER BY state DESC, first _name
LIMIT
表达式 | 含义 |
---|---|
LIMIT 6 |
设定返回查询数据的最大条数为6 |
LIMIT 6, 3 |
跳过前6条,再返回3条数据(返回第7-9条数据) |
Alias 简写
SELECT customer _id c
From table_t
ORDER BY c
JOIN和ON
JOIN用于联系多个表的数据列。
SELECT *
FROM orders o
JOIN customers c
ON o.customer _id = c.customer _id
切换数据库
USE 数据库名
SELECT *
FROM 另一个数据库名.数据表
…
UNION
用于合并多个查询结果。
SELECT first _name
FROM customers
UNION
SELECT name
FROM shippers
- 如果一个查询里面有多个语句,一个语句结束后要使用分号(;)
- UNION连接的查询语句只算一个语句
属性
列属性
数据类型
类型 | 含义 |
---|---|
INT(11) |
|
VARCHAR(50) |
最大50个字符,且最大占用50个字符的空间,常用于保存string |
CHAR(50) |
最大50个字符,占用50个字符的的空间 |
数据属性
缩写 | 全称 | 含义 |
---|---|---|
PK |
Primary Key | 数据主键 |
NN |
Not Null | 是否能接受NULL值?(可选值?) |
AI |
Auto Increment | 自动递增 |
Default / Expression |
- | 默认值 |
数据管理
添加行
按照数据排列顺序,包含在VALUES
里面添加。
全部添加
INSERT INTO customers
-- 如果想要用自动递增,可以直接填DEFAULT
-- 如果是可选值,不填入数据的话就填NULL
VALUES (
DEFAULT,
'first name value',
'last name value',
'1990-01-01',
NULL,
'address',
'city',
'CA')
选择部分变量添加
INSERT INTO customers(
first _name,
last _name,
birth _date)
-- VALUES的顺序根据上面定义的顺序来,上面定义的数据顺序可以根据自己的喜好
VAULES(
'first name value',
'last name value',
'date of birth')
添加多个变量
INSERT INTO shippers (name)
VALUES('shipper1'),
('shipper2'),
('shipper3')
向不同的表格添加变量
INSERT INTO orders (customer _id, order _date, status)
VALUES (1, '2019-01-02', 1);
INSERT INTO order _items
VALUES (LAST _INSERT _ID(), 1, 1, 2.95),
VALUES (LAST _INSERT _ID(), 2, 1, 3.95)
从一个数据表添加变量到另一个数据表
新建为数据表(CREATE)
CREATE TABLE ordres _archived AS
SELECT * FROM orders
-- 这里的SELECT语句是SubQuery
- 右键数据表的“truncate table”是清空数据表的所有数据
插入到数据表(INSERT)
INSERT INTO orders _archived
SELECT *
FROM orders
WHERE order _date < '2019-01-01'
更新数据
更新单行数据
UPDATE table
SET payment _total = 10, payment _date = '2019-03-01'
WHERE invoice _id = 1
更新多行数据
UPDATE table
SET payment _total = 10, payment _date = '2019-03-01'
WHERE invoice _id IN (3, 4)
-- 如果要更新数据表中的所有值,只需留空WHERE
删除数据
DELETE FROM table
-- 如果没有WHERE语句,将会删除所有数据,非常危险。
WHERE client _id = (
SELECT client _id
FROM clients
WHERE name = 'Myworks')