Urara-Blog/src/routes/2022-07-13-sql 2.md
2022-08-14 13:24:52 +08:00

134 lines
2.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: SQL 基础笔记
created: 2022-07-13
summary: 关于增改删查的方式
tags:
- SQL
---
- 课程:[The Complete 2022 Web Development Bootcamp](https://www.udemy.com/share/1013gG3@wP9ybulEki65OWpaP1-gXEeRPJl4aj8eZNX7YYjFOgXlrxBGQyU6NniyJf2PqDI1EA==/)
- 工具:[SQL Online Compiler - for Data Science](https://sqliteonline.com)
- 教程:[SQL 教程 | 菜鸟教程](https://www.runoob.com/sql/sql-tutorial.html)
## SQL vs. NOSQL
![](https://usc1.contabostorage.com/cc0b816231a841b1b0232d5ef0c6deb1:image/2022/06/b67c213a42175acc16073cbad16acaf4.png)
![](https://usc1.contabostorage.com/cc0b816231a841b1b0232d5ef0c6deb1:image/2022/06/01b1f9ba940268cf5c4108d9a4a94dc0.png)
- SQL
- 注重结构
- NOSQL
- 更灵活,也更稳健
- MoogoDB
## CRUD
### Create
```sql
CREATE TABLE product(
id Int NOT NULL,
name STRING,
price MONEY,
PRIMARY KEY(id)
)
```
- `NOT NULL` 当此值为 null 时,不创建列
- `PRIMARY KEY(id)` 主键必须包含唯一的值,这个不能有重复的值
**插入数值**
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可
```sql
INSERT INTO _table_name_
VALUES (_value1_,_value2_,_value3_,...);
```
第二种形式需要指定列名及被插入的值:
```sql
INSERT INTO _table_name_ (_column1_,_column2_,_column3_,...)
VALUES (_value1_,_value2_,_value3_,...);
```
### Read
SELECT 语句用于从数据库中选取数据。
```sql
SELECT _column_name_,_column_name_
FROM _table_name_;
```
```sql
SELECT * FROM _table_name_;
```
`*` 表示选择全部
可以用`WHERE` 筛选选择结果,如:
```sql
SELECT _column_name_,_column_name_
FROM _table_name_
WHERE _column_name operator value_;
```
### Update
```sql
UPDATE _tablse_name_
SET _column1_=_value1_,_column2_=_value2_,...
WHERE _some_column_=_some_value_;
```
**ALTER TABLE 语句用于在已有的表中添加、删除或修改列。**
如需在表中添加列,请使用下面的语法:
```sql
ALTER TABLE table_name
ADD column_name datatype
```
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
```sql
ALTER TABLE table_name
DROP COLUMN column_name
```
### Destory
```sql
DELETE FROM _table_name_
WHERE _some_column_=_some_value_;
```
## Understanding SQL Relationships, Foreign Keys and Inner Joins
### FOREIGN KEY
- 用`FOREIGN KEY` 来和外部表单链接
- 一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
### INNER JOIN
选择相应列并合并表,`ON`后面写的是条件
```sql
SELECT _column_name(s)_
FROM _table1_
INNER JOIN _table2_
ON _table1.column_name_=_table2.column_name_;
```
或:
```sql
SELECT _column_name(s)_
FROM _table1_
JOIN _table2_
ON _table1.column_name_=_table2.column_name_;
```