数据库基础

数据库是有组织地存储和管理数据的系统。在现代应用程序开发中,数据库扮演着至关重要的角色。

数据库类型

主要的数据库类型包括:

关系型数据库

关系型数据库基于关系模型,使用表格存储数据:

  • MySQL
  • PostgreSQL
  • SQLite
  • Oracle
  • SQL Server

NoSQL数据库

NoSQL数据库不使用传统的表格模型:

  • 文档数据库(MongoDB)
  • 键值存储(Redis)
  • 列存储(Cassandra)
  • 图数据库(Neo4j)

SQL基础

SQL(结构化查询语言)是用于管理关系型数据库的标准语言。

创建表

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

插入数据

INSERT INTO users (id, username, email)
VALUES (1, 'johndoe', 'john@example.com');

查询数据

-- 查询所有用户
SELECT * FROM users;

-- 条件查询
SELECT username, email FROM users WHERE id = 1;

更新数据

UPDATE users
SET email = 'newemail@example.com'
WHERE id = 1;

删除数据

DELETE FROM users WHERE id = 1;

数据库设计原则

规范化

规范化是一种减少数据冗余和提高数据完整性的过程:

  • 第一范式(1NF):每个表格单元格都应该包含单一值
  • 第二范式(2NF):满足1NF,并且所有非主键属性完全依赖于主键
  • 第三范式(3NF):满足2NF,并且所有非主键属性都不传递依赖于主键

索引

索引用于提高数据库查询性能:

-- 创建索引
CREATE INDEX idx_username ON users(username);

事务

事务是一组操作,要么全部成功,要么全部失败:

BEGIN TRANSACTION;
    UPDATE accounts SET balance = balance - 100 WHERE id = 1;
    UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

数据库连接

不同编程语言连接数据库的示例:

Python (使用SQLite)

import sqlite3

# 连接到数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# 执行查询
cursor.execute('SELECT * FROM users')
users = cursor.fetchall()

# 关闭连接
conn.close()

Node.js (使用MySQL)

const mysql = require('mysql');

// 创建连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'user',
  password: 'password',
  database: 'mydb'
});

// 连接数据库
connection.connect();

// 执行查询
connection.query('SELECT * FROM users', (error, results) => {
  if (error) throw error;
  console.log(results);
});

// 关闭连接
connection.end();

总结

数据库是现代应用程序的核心组件。理解数据库基础知识对于后端开发至关重要。通过本文的介绍,你应该对数据库的基本概念和操作有了初步了解。