SQL入门
![huuhghhgyg avatar](https://www.zhhuu.top/img/favicon.jpg)
- huuhghhgyg
- 2 min read
![](https://www.zhhuu.top/img/sql_hu35c510dc12184cf2364d179ea6307c22_25788_750x0_resize_q75_h2_box_2.webp)
1SELECT *
2FROM table
3WHERE column LIKE '条件'
4Order by 1
5LIMIT 100
基本语法
注释
--
后面是注释内容。--
是sql的注释标志
运算符
运算符 | 说明 |
---|---|
AND |
和,AND的优先级一般会高于OR |
OR |
或者 |
NOT |
非 |
() |
括号,提高优先级。 |
条件
符号 | 含义 |
---|---|
% |
n个任意字符 |
_ |
1个任意字符 |
正则表达式
REGEXP(Regular Expression)
1WHERE 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
在原有数据基础上新建一列数据,或者理解为处理完原有列数据填入新一列中
1score + 10 AS new _score
SELECT
选择表内的数据
1SELECT first _name, last _name
ORDER BY
根据什么值排序
1ORDER BY first _name
多值排序
1ORDER BY state, first _name
根据列排序
1ORDER BY 1, 2
DESC
- descending:降序
1ORDER BY first _name DESC
多值排序
1ORDER BY state DESC, first _name
LIMIT
表达式 | 含义 |
---|---|
LIMIT 6 |
设定返回查询数据的最大条数为6 |
LIMIT 6, 3 |
跳过前6条,再返回3条数据(返回第7-9条数据) |
Alias 简写
1SELECT customer _id c
2From table_t
3ORDER BY c
JOIN和ON
JOIN用于联系多个表的数据列。
1SELECT *
2FROM orders o
3JOIN customers c
4 ON o.customer _id = c.customer _id
切换数据库
1USE 数据库名
2
3SELECT *
4FROM 另一个数据库名.数据表
5…
UNION
用于合并多个查询结果。
1SELECT first _name
2FROM customers
3UNION
4SELECT name
5FROM 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
里面添加。
全部添加
1INSERT INTO customers
2-- 如果想要用自动递增,可以直接填DEFAULT
3-- 如果是可选值,不填入数据的话就填NULL
4VALUES (
5 DEFAULT,
6 'first name value',
7 'last name value',
8 '1990-01-01',
9 NULL,
10 'address',
11 'city',
12 'CA')
选择部分变量添加
1INSERT INTO customers(
2 first _name,
3 last _name,
4 birth _date)
5-- VALUES的顺序根据上面定义的顺序来,上面定义的数据顺序可以根据自己的喜好
6VAULES(
7 'first name value',
8 'last name value',
9 'date of birth')
添加多个变量
1INSERT INTO shippers (name)
2VALUES('shipper1'),
3 ('shipper2'),
4 ('shipper3')
向不同的表格添加变量
1INSERT INTO orders (customer _id, order _date, status)
2VALUES (1, '2019-01-02', 1);
3INSERT INTO order _items
4VALUES (LAST _INSERT _ID(), 1, 1, 2.95),
5VALUES (LAST _INSERT _ID(), 2, 1, 3.95)
从一个数据表添加变量到另一个数据表
新建为数据表(CREATE)
1CREATE TABLE ordres _archived AS
2SELECT * FROM orders
3-- 这里的SELECT语句是SubQuery
- 右键数据表的“truncate table”是清空数据表的所有数据
插入到数据表(INSERT)
1INSERT INTO orders _archived
2SELECT *
3FROM orders
4WHERE order _date < '2019-01-01'
更新数据
更新单行数据
1UPDATE table
2SET payment _total = 10, payment _date = '2019-03-01'
3WHERE invoice _id = 1
更新多行数据
1UPDATE table
2SET payment _total = 10, payment _date = '2019-03-01'
3WHERE invoice _id IN (3, 4)
4-- 如果要更新数据表中的所有值,只需留空WHERE
删除数据
1DELETE FROM table
2-- 如果没有WHERE语句,将会删除所有数据,非常危险。
3WHERE client _id = (
4 SELECT client _id
5 FROM clients
6 WHERE name = 'Myworks')