SQL的基本使用方式

目录

1. 使用DDL创建数据库

2. SQL SELECT检索数据

2.1. 基本语法

2.2. SELECT 执行顺序 VS 写法顺序

3. 数据过滤 WHERE

4. SQL函数

4.1. SQL函数类别

4.2. SQL函数注意事项


1. 使用DDL创建数据库

windows终端中采用:mysql -uroot -p 打开mysql数据库

MySQL基本使用方法:📎Mysql.pdf

设计表的原则:

1. 数据表的个数越少越好

RDBMS 的核心在于对实体和联系的定义,也就是 E-R 图(Entity Relationship Diagram),数据表越少,证明实体和联系设计得越简洁,既方便理解又方便操作。

2. 数据表中的字段个数越少越好

字段个数越多,数据冗余的可能性越大。设置字段个数少的前提是各个字段相互独立,而不是某个字段的取值可以由其他字段计算出来。当然字段个数少是相对的,我们通常会在数据冗余和检索效率中进行平衡。

3. 数据表中联合主键的字段个数越少越好

设置主键是为了确定唯一性,当一个字段无法确定唯一性的时候,就需要采用联合主键的方式(也就是用多个字段来定义一个主键)。联合主键中的字段越多,占用的索引空间越大,不仅会加大理解难度,还会增加运行时间和索引空间,因此联合主键的字段个数越少越好。

4. 使用主键和外键越多越好

数据库的设计实际上就是定义各种表,以及各种字段之间的关系。这些关系越多,证明这些实体之间的冗余度越低,利用度越高。这样做的好处在于不仅保证了数据表之间的独立性,还能提升相互之间的关联使用率。

“三少一多”原则的核心就是简单可复用。简单指的是用更少的表、更少的字段、更少的联合主键字段来完成数据表的设计。可复用则是通过主键、外键的使用来增强数据表之间的复用率。因为一个主键可以理解是一张表的代表。键设计得越多,证明它们之间的利用率越高。

2. SQL SELECT检索数据

1. SELECT 作用

  • 从一个或多个表中检索所需的数据行
  • 常见关键字:SELECTFROMWHEREGROUP BYHAVINGORDER BYLIMIT
  • 避免将保留字(如关键字)用作表名、字段名

2.1. 基本语法

SELECT [DISTINCT] <列列表 | *> 
FROM <表名> [AS 别名]
[WHERE <过滤条件>]
[GROUP BY <分组列>]
[HAVING <分组过滤>]
[ORDER BY <排序列> [ASC|DESC] [, …]]
[LIMIT <行数>];

1. 查询列

单列查询

SELECT name FROM heros;

多列查询

SELECT name, hp_max, mp_max FROM heros;

查询所有列

SELECT * FROM heros;

适用于探索阶段,不建议在生产环境中大量使用

在生产环境中明确写出所需列,减少网络传输和 I/O

2. 列/表别名

列别名

SELECT name AS n, hp_max AS hm FROM heros;

表别名(多表连接时必用)

SELECT h.name, t.team_name
  FROM heros AS h
  JOIN teams AS t
    ON h.team_id = t.id;

3. 查询常数

向结果中增加固定值列

SELECT '王者荣耀' AS platform, name FROM heros;
SELECT 123 AS platform, name FROM heros;

字符串常数务必用单引号包裹

4. 去重 DISTINCT

去除完全重复的行

SELECT DISTINCT attack_range FROM heros;

对多列组合去重

SELECT DISTINCT attack_range, name FROM heros;
  • DISTINCT 必位于所有列名前

5. 排序 ORDER BY

基本用法

SELECT name, hp_max FROM heros ORDER BY hp_max DESC;

多列排序

ORDER BY mp_max ASC, hp_max DESC;
  • 可对未出现在 SELECT 中的列排序
  • 关键字位置:必须放在所有子句之后

6. 限制行数 LIMIT / TOP / FETCH / ROWNUM

数据库

关键字示例

MySQL 等

… LIMIT n

SQL Server

SELECT TOP n …

DB2

… FETCH FIRST n ROWS ONLY

Oracle

… WHERE ROWNUM ≤ n

减少网络传输和扫描开销

2.2. SELECT 执行顺序 VS 写法顺序

写法顺序(人编写)

执行顺序(数据库底层)

SELECT

1. FROM

FROM

2. WHERE

WHERE

3. GROUP BY

GROUP BY

4. HAVING

HAVING

5. SELECT(字段提取)

ORDER BY

6. DISTINCT(去重)

LIMIT

7. ORDER BY(排序)

8. LIMIT(行数限制)

3. 数据过滤 WHERE

4. SQL函数

SQL函数的概念:

SQL 函数就像编程中的函数——它们能将重复的操作封装起来,提高效率和可维护性。SQL 函数主要用来在查询结果中对数据进行处理和转换,常见操作包括求平均值、格式转换、提取日期信息等。

4.1. SQL函数类别

1. 算数函数

2. 字符串函数

3. 日期函数

4. 转换函数

  1. 聚集函数

HAVING vs WHERE(分组后的条件筛选)

比较项

WHERE

HAVING

作用阶段

分组 之前 的行过滤

分组 之后 的组过滤

是否可用聚集

❌ 不可使用聚集函数

✅ 可以用聚集函数(如 COUNT)

是否可替代

用于过滤数据行

用于过滤分组

4.2. SQL函数注意事项

函数兼容性问题:

  • 不同数据库(如 MySQL、PostgreSQL、SQL Server)对函数支持不完全一致,可能会导致语法错误或行为不同。

大小写敏感问题:

  • MySQL 在 Linux 的环境下,数据库名、表名、变量名是严格区分大小写的,而字段名是忽略大小写的。
  • MySQL 在 Windows 的环境下全部不区分大小写。

语法规范建议:

  • SQL 关键字与函数使用大写;
  • 表名、字段名统一使用小写;
  • 每条 SQL 语句以分号结尾;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值