数据库系统概论(七)初识SQL与SQL基本概念

数据库系统概论(七)初识SQL与SQL基本概念


前言

  • 前面的博客里我们已经了解了关系模型的核心概念(如关系模式、域、属性、键等)。
  • 接下来正式进入 关系数据库的实战阶段------ 通过 标准查询语言 SQL(Structured Query Language) 来操作和管理数据库

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343

我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482


一、什么是SQL语言?

SQL (Structured Query Language,结构化查询语言)是一种专门用于管理和操作数据库的编程语言。

  • 它的核心功能是让用户能够高效地与数据库进行交互
  • 比如查询数据、插入数据、修改数据、删除数据,以及定义和管理数据库的结构

1.1 SQL的产生和发展

  • 起源 :1970年代,IBM的研究员为了解决数据库管理问题,开发了一种名为 SEQUEL 的语言,后来简化为 SQL
  • 标准化:1986年,美国国家标准协会(ANSI)将SQL定为关系型数据库的标准语言,随后国际标准化组织(ISO)也采纳了这一标准。
  • 发展:如今,几乎所有主流数据库(如MySQL、Oracle、SQL Server、PostgreSQL等)都支持SQL,但不同数据库会在标准SQL的基础上增加一些特有的功能(例如MySQL的存储过程、Oracle的PL/SQL)。

1.2 SQL的特点

  1. 语法简单,接近自然语言

    SQL语句使用英文单词(如SELECT、INSERT、UPDATE、DELETE),即使没有编程基础也能快速理解。

  2. 非过程化

    只需告诉数据库"要做什么"(例如"查询成绩大于80分的学生"),不需要告诉它"怎么做",数据库会自动优化执行过程。

  3. 跨平台通用

    无论你用的是Windows、Linux还是Mac,也无论你使用哪种数据库(MySQL、Oracle等),基础SQL语法几乎一致,学会一种就能触类旁通。

1.3 SQL的基本概念

1.3.1 数据库相关"术语"(类比Excel表格)

  • 数据库:相当于一个"文件夹",用来存放多张表(如"学生数据库""订单数据库")。
  • :相当于Excel中的一张表格,由"行"和"列"组成。例如"学生表",列是字段(如学号、姓名、年龄),行是一条具体记录(如某个学生的信息)。
  • 主键:表中某一列(或多列),用于唯一标识一条记录(类似学生的学号,不能重复)。

1.3.2 四大类核心语句(后面会详细讲,现在了解一下)

  • 数据定义语言(DDL):用来创建或修改数据库结构。

    • CREATE TABLE:创建表(例如创建"学生表")。
    • ALTER TABLE:修改表结构(例如添加一列"邮箱")。
    • DROP TABLE:删除表。
  • 数据查询语言(DQL):用来从表中查询数据(最常用!)。

    • SELECT:查询数据,例如:

      sql 复制代码
      SELECT 姓名, 年龄 FROM 学生表 WHERE 年龄 > 18; 
      -- 意思:从"学生表"中选出年龄大于18岁的人的姓名和年龄
  • 数据操作语言(DML):用来增、删、改表中的数据。

    • INSERT:插入数据(例如新增一个学生的信息)。
    • UPDATE:修改数据(例如把某个学生的年龄从20改成21)。
    • DELETE:删除数据(例如删除毕业学生的记录)。
  • 数据控制语言(DCL):用来管理数据库的权限(例如给某个用户设置"只能查询"的权限)。

二、数据的定义(现在了解一下就好,后面会详细讲解)

(1)模式相关操作

1.1 定义模式(创建表结构)

目的 :设计表的"模板",规定表有哪些列、每列的数据类型等。
语句

sql 复制代码
CREATE TABLE 表名 (
    列名1 数据类型1 [约束条件],  -- 例如:id INT PRIMARY KEY
    列名2 数据类型2,
    ...
);

例子:创建学生表

sql 复制代码
CREATE TABLE student (
    stu_id INT PRIMARY KEY,  -- 学号(整数,主键)
    stu_name VARCHAR(50)     -- 姓名(最长50个字符的字符串)
);

1.2 删除模式

目的 :彻底删除整张表(包括数据和表结构)。
语句

sql 复制代码
DROP TABLE 表名;

例子:删除学生表

sql 复制代码
DROP TABLE student;

(2)数据类型(列的"规则")

表中每一列必须指定数据类型,限制该列能存储的数据格式,常见类型:

  • 字符串VARCHAR(n)(可变长,如VARCHAR(20))、CHAR(n)(固定长)。
  • 数值INT(整数)、FLOAT(浮点数)、DECIMAL(m,n)(精确小数,如DECIMAL(5,2)表示最多5位,小数点后2位)。
  • 日期/时间DATE(日期,如2023-10-01)、DATETIME(日期+时间,如2023-10-01 12:30:00)。
  • 布尔BOOLEANTRUE/FALSE,部分数据库用TINYINT代替)。

(3)基本表的修改(ALTER TABLE)

目的:在不删除表的前提下,新增、修改或删除列。

3.1 添加列

sql 复制代码
ALTER TABLE 表名 ADD COLUMN 新列名 数据类型;

例子:给学生表添加"年龄"列

sql 复制代码
ALTER TABLE student ADD COLUMN age INT;

3.2 修改列(数据类型或约束)

sql 复制代码
ALTER TABLE 表名 ALTER COLUMN 列名 TYPE 新数据类型;  -- 部分数据库语法不同(如PostgreSQL)
-- 或直接重命名列(少数数据库支持)
ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名;

3.3 删除列

sql 复制代码
ALTER TABLE 表名 DROP COLUMN 列名;

(4)索引(提升查询速度的"目录")

4.1 建立索引

目的:给表的某列(或多列)创建索引,加快查询速度。

sql 复制代码
CREATE INDEX 索引名 ON 表名 (列名);

例子:给学生表的"姓名"列创建索引

sql 复制代码
CREATE INDEX idx_name ON student (stu_name);

4.2 删除索引

sql 复制代码
DROP INDEX 索引名;

例子:删除上述索引

sql 复制代码
DROP INDEX idx_name;

以上就是这篇博客的全部内容,下一篇我们将继续探索更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343

我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482

|--------------------|
| 非常感谢您的阅读,喜欢的话记得三连哦 |

相关推荐
时序数据说24 分钟前
通过Linux系统服务管理IoTDB集群的高效方法
大数据·linux·运维·数据库·开源·时序数据库·iotdb
CopyLower41 分钟前
解决 Redis 缓存与数据库一致性问题的技术指南
数据库·redis·缓存
多多*43 分钟前
分布式ID设计 数据库主键自增
数据库·sql·算法·http·leetcode·oracle
我爱夜来香A1 小时前
SQL进阶:如何把字段中的键值对转为JSON格式?
数据库·sql·json
micromicrofat1 小时前
mongodb升级、改单节点模式
数据库·mongodb
爱编程的王小美2 小时前
本地MySQL连接hive
数据库·hive·mysql
云计算DevOps-韩老师2 小时前
精品,架构师总结,MySQL 5.7 查询入门详解
数据库·mysql
Estrella-q2 小时前
解决 Ubuntu DNS 无法解析问题(适用于虚拟机 & 长期使用)
数据库·ubuntu·postgresql
TDengine (老段)3 小时前
TDengine 在智慧油田领域的应用
大数据·数据库·物联网·时序数据库·iot·tdengine·iotdb