SQL学习笔记

这篇博客深入介绍了SQL,从基本概念如SQL是什么,数据完整性,约束,到数据库操作,表操作,数据操作语句,再到复杂的查询语句和聚合函数,最后涵盖了高级查询技巧。内容涵盖CREATE, DROP, ALTER等命令,主键,外键,唯一约束等概念,以及JOIN, UNION, SUBQUERY等高级查询操作。" 122741817,7938467,VTK教程:三维可视化框架概述,"['计算机视觉', '图像处理', 'C++', 'VTK框架', '三维可视化']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、SQL简介

1.1 SQL是什么

SQL是结构化查询语言,它是一种用于存储,操作和检索存储在关系数据库中的数据的计算机语言

1.2 SQL命令

1)DDL——数据定义语言
序号 命令 描述
1 CREATE 用于在数据库中创建新表,表视图或其他对象
2 ALTER 用于修改现有数据库对象,例如:表
3 DROP 用于删除整个表,数据库中的表或其他对象的视图
2) DML——数据操纵语言
序号 命令 描述
1 SELECT 从一个或多个表中检索某些记录
2 INSERT 创建一条记录
3 UPDATE 用于修改(更新)记录
4 DELETE 删除记录
3)DCL——数据控制语言
序号 命令 描述
1 GRANT 为用户提供权限
2 REVOKE 撤销用户授予的权限

1.3 数据的完整性

  • 实体完整性 - 表中没有重复的行。

  • 域完整性 - 通过限制值的类型,格式或范围,为给定列强制执行有效条目。

  • 参照完整性 - 其他记录使用(引用)导致这些行无法删除。

  • 用户定义的完整性 - 实施一些不属于实体,域或参照完整性的特定业务规则

1.4 SQL约束

  • NOT NULL约束 - 确保列不能具有NULL值。

  • 默认值约束 - 在未指定列时为列提供默认值。

  • 唯一约束 - 确保列中的所有值都不同。

  • 主键 - 唯一标识数据库表中的每一行/记录。

  • 外键 - 唯一标识任何其他数据库表中的行/记录。

  • 检查约束 - CHECK约束确保列中的所有值都满足特定条件。

  • 索引 - 用于非常快速地从数据库创建和检索数据。

1.5 数据库范式

1) 第一范式(1NF)
  1. 定义所需要的数据项,因为它们成为在表中的列。放在一个表中的相关的数据项。

  2. 确保有数据没有重复的组。

  3. 确保有一个主键。

1.6 运算符

变量a的值是:10,变量b的值是:20

1) SQL算术运算符
操作符 描述 示例
+ 加法,执行加法运算。 a + b = 30
- 减法,执行减法运算。 a + b = -10
* 除法,执行除法运算 a * b = 200
/ 用左操作数除右手操作数 b / a = 2
% 用左手操作数除左手操作数并返回余数 b % a = 0

1.7 在MySQL中创建表的示例

CREATE TABLE regions (
    region_id INT (11) AUTO_INCREMENT PRIMARY KEY,
    region_name VARCHAR (25) DEFAULT NULL
);

CREATE TABLE countries (
    country_id CHAR (2) PRIMARY KEY,
    country_name VARCHAR (40) DEFAULT NULL,
    region_id INT (11) NOT NULL,
    FOREIGN KEY (region_id) REFERENCES regions (region_id) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE TABLE locations (
    location_id INT (11) AUTO_INCREMENT PRIMARY KEY,
    street_address VARCHAR (40) DEFAULT NULL,
    postal_code VARCHAR (12) DEFAULT NULL,
    city VARCHAR (30) NOT NULL,
    state_province VARCHAR (25) DEFAULT NULL,
    country_id CHAR (2) NOT NULL,
    FOREIGN KEY (country_id) REFERENCES countries (country_id) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE TABLE jobs (
    job_id INT (11) AUTO_INCREMENT PRIMARY KEY,
    job_title VARCHAR (35) NOT NULL,
    min_salary DECIMAL (8, 2) DEFAULT NULL,
    max_salary DECIMAL (8, 2) DEFAULT NULL
);

CREATE TABLE departments (
    department_id INT (11) AUTO_INCREMENT PRIMARY KEY,
    department_name VARCHAR (30) NOT NULL,
    location_id INT (11) DEFAULT NULL,
    FOREIGN KEY (location_id) REFERENCES locations (location_id) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE TABLE employees (
    employee_id INT (11) AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR (20) DEFAULT NULL,
    last_name VARCHAR (25) NOT NULL,
    email VARCHAR (100) NOT NULL,
    phone_number VARCHAR (20) DEFAULT NULL,
    hire_date DATE NOT NULL,
    job_id INT (11) NOT NULL,
    salary DECIMAL (8, 2) NOT NULL,
    manager_id INT (11) DEFAULT NULL,
    department_id INT (11) DEFAULT NULL,
    FOREIGN KEY (job_id) REFERENCES jobs (job_id) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (department_id) REFERENCES departments (department_id) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (manager_id) REFERENC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值