服务案例

服务创造价值、存在造就未来

当前位置:首页>服务案例

程序员必修数据库,不学难进阶(程序员)专门做数据库的程序员叫什么,

时间:2025-07-15   访问量:2

哈喽,大家好!

我是老陈,这节课一起来学习数据库。数据库是专门用于存储、管理、检索和维护数据的系统, 关系数据库是一种基于关系模型(由表、行、列组成的二维结构)的数据库系统,核心特点是通过结构化的表格存储数据,并利用SQL 进行数据操作,广泛应用于各类业务系统。

这些是市面上常见的关系数据库,大家了解一下即可。在企业开发时,后端常用的是MySql数据库,App端用的则是Sqlite数据库。对于绝大多数程序员而言,掌握操作数据库的结构化查询语言(SQL),是绕不开的基础技能。

下面我们就用SQLite 数据库学习SQL。

首先去DB Browser for SQLite的官网http://sqlitebrowser.org/下载SQLite 操作工具,它是一个高品质,可视化,开放源码的工具。用于创建,设计和编辑 SQLite 数据库文件。下载安装自己搞定。

打开DB Browser for SQLite,点击【新建数据库】,选择存放路径,输入数据库名称 crm,点击【保存】。

我们学习用SQL创建表,关闭这个窗口。

打开【执行SQL】编辑器。SQL是通用的。不管你用什么工具、什么数据库(MySQL、PostgreSQL 等),SQL大同小异,学会了在哪儿都能用。

1. 创建表结构SQL

-- 1. 创建users表 CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, username TEXT NOT NULL, email TEXT UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 2. 创建orders表 CREATE TABLE IF NOT EXISTS orders ( order_id INTEGER PRIMARY KEY, user_id INTEGER, order_date TIMESTAMP, amount NUMERIC(10,2), FOREIGN KEY (user_id) REFERENCES users(id) );

2. 插入数据

-- 1. 插入数据 INSERT INTO users (username, email) VALUES (user1, user1@example.com) ; --2.批量插入20条用户数据 INSERT INTO users (username, email) VALUES (user2, user2@example.com), (user3, user3@example.com), (user4, user4@example.com), (user5, user5@example.com), (user6, user6@example.com), (user7, user7@example.com), (user8, user8@example.com), (user9, user9@example.com), (user10, user10@example.com), (user11, user11@example.com), (user12, user12@example.com), (user13, user13@example.com), (user14, user14@example.com), (user15, user15@example.com), (user16, user16@example.com), (user17, user17@example.com), (user18, user18@example.com), (user19, user19@example.com), (user20, user20@example.com), (user21, user21@example.com); --3. 批量插入20条订单数据(关联到用户ID 1-20INSERT INTO orders (user_id, order_date, amount) VALUES (1, 2025-01-01, 100.00), (1, 2025-01-01, 300.00), (2, 2025-01-02, 150.50), (2, 2025-01-02, 650.20), (3, 2025-01-03, 75.25), (4, 2025-01-04, 200.00), (5, 2025-01-05, 99.99), (6, 2025-01-06, 120.75), (7, 2025-01-07, 180.20), (8, 2025-01-08, 50.00), (9, 2025-01-09, 140.60), (10, 2025-01-10, 110.80), (11, 2025-01-11, 85.30), (12, 2025-01-12, 160.40), (13, 2025-01-13, 220.90), (14, 2025-01-14, 65.10), (15, 2025-01-15, 130.75), (16, 2025-01-16, 90.25), (17, 2025-01-17, 175.50), (18, 2025-01-18, 45.80), (19, 2025-01-19, 125.30), (20, 2025-01-20, 190.00);

3. 查询数据

-- 3. 查询数据 SELECT * FROM users; SELECT username, email FROM users; SELECT username, email FROM users LIMIT 5; SELECT username, email FROM users LIMIT 5 OFFSET 10; -- 分页查询(跳过前10条) SELECT * FROM users WHERE created_at > 2025-01-01; SELECT * FROM users WHERE username LIKE user1% AND created_at > 2025-02-01; -- 排序查询ASC; SELECT * FROM orders ORDER BY order_date DESC; -- 日期范围查询 SELECT * FROM orders WHERE order_date BETWEEN 2025-01-05 AND 2025-01-15; --聚合函数 --统计总订单数 SELECT COUNT(order_id) AS total_orders FROM orders; --计算订单总金额 SELECT SUM(amount) AS total_amount FROM orders; -- 查找最大/最小订单金额 SELECT MAX(amount) AS highest_order, MIN(amount) AS lowest_order FROM orders; --查询没有下过订单的用户 SELECT username, email FROM users WHERE id NOT IN (SELECT DISTINCT user_id FROM orders WHERE user_id IS NOT NULL); -- 内连接查询 SELECT u.username, o.order_date, o.amount FROM users u INNER JOIN orders o ON u.id = o.user_id; --分组统计,每个用户的订单数 SELECT u.username, COUNT(o.order_id) AS order_count FROM users u LEFT JOIN orders o ON u.id = o.user_id GROUP BY u.username;

4. 更新数据

UPDATE users SET email = john.doe@example.com WHERE username = user20;

5. 删除数据

DELETE FROM users WHERE username = user21;

6. 事务处理

BEGIN TRANSACTION; -- 开始事务 -- 1. 插入新用户 INSERT INTO users (username, email) VALUES (alice_smith, alice@example.com); -- 2. 为该用户创建订单(使用LAST_INSERT_ROWID()获取用户ID) INSERT INTO orders (user_id, order_date, amount) VALUES (LAST_INSERT_ROWID(), CURRENT_TIMESTAMP, 49.99); COMMIT; -- 提交事务

SQL关键字(按功能分类)整理的表格

一、数据定义语言(DDL)

关键字

功能描述

示例

CREATE

创建数据库对象(表、视图等)

CREATE TABLE users (...)

ALTER

修改表结构(添加 / 删除列)

ALTER TABLE ADD COLUMN age INT

DROP

删除数据库对象

DROP TABLE users

TRUNCATE

删除表中所有数据(保留表结构)

TRUNCATE TABLE orders

二、数据操作语言(DML)

关键字

功能描述

示例

INSERT

插入数据

INSERT INTO users VALUES (1, Alice)

UPDATE

更新数据

UPDATE users SET age = 30 WHERE id = 1

DELETE

删除数据

DELETE FROM users WHERE age < 18

SELECT

查询数据

SELECT * FROM users

三、数据查询语言(DQL)

关键字

功能描述

示例

FROM

指定查询的表

SELECT name FROM users

WHERE

过滤查询结果

WHERE age > 25

AND/OR/NOT

逻辑运算符(组合条件)

WHERE age > 25 AND city = Beijing

LIKE

模糊匹配(% 匹配任意字符)

WHERE name LIKE A%

IN

多值匹配

WHERE id IN (1, 3, 5)

BETWEEN

范围查询

WHERE age BETWEEN 20 AND 30

ORDER BY

排序结果(ASC/DESC)

ORDER BY age DESC

LIMIT

限制返回行数(SQLite/MySQL)

LIMIT 10

OFFSET

跳过指定行数(分页)

OFFSET 20 LIMIT 10

四、聚合与分组

关键字

功能描述

示例

GROUP BY

分组统计

GROUP BY department

HAVING

过滤分组结果(配合 GROUP BY)

HAVING COUNT(*) > 5

SUM

求和

SUM(amount)

AVG

求平均值

AVG(age)

COUNT

计数

COUNT(id)

MAX/MIN

求最大值 / 最小值

MAX(price)

DISTINCT

去重

SELECT DISTINCT city

五、连接与组合

关键字

功能描述

示例

JOIN

内连接(匹配两表共有的记录)

INNER JOIN orders ON users.id = orders.user_id

LEFT JOIN

左连接(保留左表所有记录)

LEFT JOIN orders ON users.id = orders.user_id

RIGHT JOIN

右连接(保留右表所有记录)

RIGHT JOIN orders ON users.id = orders.user_id

FULL JOIN

全连接(保留两表所有记录)

FULL JOIN orders ON users.id = orders.user_id

UNION/UNION ALL

合并查询结果(UNION 去重)

SELECT name FROM users UNION SELECT product_name FROM products

六、其他常用关键字

关键字

功能描述

示例

NULL

空值

WHERE email IS NULL

AS

别名

SELECT name AS username

CASE

条件表达式

CASE WHEN age > 18 THEN Adult ELSE Minor END

EXISTS

子查询判断(存在记录返回 TRUE)

WHERE EXISTS (SELECT * FROM orders WHERE user_id = 1)

WITH

临时结果集(CTE)

WITH temp AS (SELECT * FROM users) SELECT * FROM temp

注意事项

1. 大小写不敏感:SELECT与select等效,但建议大写关键字提高可读性。

2. 保留字冲突:避免使用SQL关键字(如USER、GROUP)作为表名 / 列名。

3. 方言差异:部分关键字(如LIMIT)在不同数据库(SQLite/MySQL/PostgreSQL)中可能有差异。

好了,SQL就学到这,它们都是最常用的知识点。大家一定要自己动手试试,多写多练才能掌握。记得点赞关注,评论区留下你遇到的数据库问题,我们一起解决!

#数据库##sql##程序员##计算机##java##今日头条##热门##热搜##人工智能##编程#

上一篇:程序员35岁何去何从?(程序员)35岁程序员何去何从,

下一篇:麻景瑞:46万张图纸智绘“云巴梦”的轨道交通设计师(设计师)麻瑞亭是现代名医吗,

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部