入门SQL

SQL-从入门到放弃

Posted by Marlin on April 26, 2025

什么是数据库(database)?

能存放数据的地方就是数据库.

什么是数据库管理系统(DBMS)?

管理数据库的软件,例如MySQL, SQL Server等.

数据库的分类

  1. 关系型数据库(SQL)
    • MySQL
    • Oracle
    • SQL Server
    • PostgreSQL
  2. 非关系式数据库(NoSQL)
    • MongoDB
    • Redis

什么是SQL(Structured Query Language)?

一种用于管理关系型数据库的语言. 想要与MogoDB进行交互, 需要使用MogoDB的查询语言, 而不能使用SQL.

SQL的基本语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE DATABASE 数据库名;

USE 数据库名;

create table 表名 (
    列名 数据类型,
    列名 数据类型,
    列名 数据类型,
   ...
);

insert into 表名 (列名, 列名, 列名,...) values (, , ,...);

select 列名, 列名, 列名,... from 表名;

update 表名 set 列名=新值 where 条件;

delete from 表名 where 条件;

drop table 表名;

drop database 数据库名;

数据类型

1
2
3
4
5
6
INT            -- 整数  
DECIMAL(m, n)  -- 实数, m为总位数, n为小数位数  
VARCHAR(n)     -- 字符串, 最大长度为n  
BLOB           -- (Binary Large Object)二进制大对象(图片, 音频, 视频等)  
DATE           -- 日期(YYYY-MM-DD 2025-04-26)  
TIMESTAMP      -- 时间戳(YYYY-MM-DD HH:MM:SS 2025-04-26 20:07:00)  

约束

1
2
3
4
5
6
NOT NULL       -- 非空约束
UNIQUE         -- 唯一约束
PRIMARY KEY    -- 主键约束
FOREIGN KEY    -- 外键约束
CHECK          -- 检查约束
DEFAULT        -- 默认约束

修改,删除资料

1
2
3
4
5
6
7
UPDATE 表名 SET 列名=新值 WHERE 条件;

DELETE FROM 表名 WHERE 条件;

DROP TABLE 表名;

DROP DATABASE 数据库名;

SQL查询语句

合并

UNION (上下)合并多个结果集

1
2
3
select 列名 from 表名1
UNION
select 列名 from 表名2;

JOIN 连接

1
2
3
4
5
6
7
8
select 列名 from 表名1
JOIN 表名2 ON 表名1.列名 = 表名2.列名;

select 列名 from 表名1
LEFT JOIN 表名2 ON 表名1.列名 = 表名2.列名;

select 列名 from 表名1
RIGHT JOIN 表名2 ON 表名1.列名 = 表名2.列名;

子查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
select 列名 
from 表名1
where 列名 in (
    select 列名 
    from 表名2
);

select 列名
from 表名1
where 列名 = (
    select 列名 
    from 表名2 
    where 条件
);

on delete

1
2
3
4
5
foreign key (列名) references 表名 (列名)
ON DELETE NO ACTION -- 删除主表数据时, 不做任何操作
ON DELETE RESTRICT -- 删除主表数据时, 不允许删除从表数据
ON DELETE CASCADE -- 删除主表数据时, 同时删除从表数据
ON DELETE SET NULL -- 删除主表数据时, 将从表数据设置为NULL