天池龙珠计划 SQL 训练营 Task01:初识数据库与 SQL 学习笔记

一、学习知识点概要

(一)数据库基础概念

  1. 数据库(DB)、数据库管理系统(DBMS)定义
  2. 表(Table)结构:列、行、主键概念及规则

(二)SQL 语句分类

  1. DDL(数据定义语言):含 CREATE、DROP、ALTER 操作
  2. DML(数据操纵语言):含 SELECT、INSERT、UPDATE、DELETE 操作
  3. DCL(数据控制语言):含 COMMIT、ROLLBACK、GRANT/REVOKE 操作

(三)数据库与表的创建

  1. 数据库创建(CREATE DATABASE)语法
  2. 表创建(CREATE TABLE)语法,含数据类型(INTEGER、CHAR 等 )、约束(NOT NULL、PRIMARY KEY )设置

(四)表的维护操作

    表删除(DROP TABLE )、结构修改(ALTER TABLE 增删列 )、清空(TRUNCATE TABLE )

(五)数据操作(DML)

  1. 更新(UPDATE)语法、多列更新及 NULL 清空规则
  2. 插入(INSERT)语法,含全列省略、多行插入、默认值 / 复制数据插入方式

二、学习内容

(一)数据库基础概念

  • 数据库(DB):是存储大量数据,经计算机加工后可高效访问的数据集合 ,像一个 “数据仓库”,有序存放各类信息。
  • 数据库管理系统(DBMS):管理数据库的计算机系统,能对数据库、表等对象进行创建、删除、修改等操作,是用户和数据库间的 “桥梁” 。
  • 表(Table)结构
    • 列(Column):表的字段,是表数据的基本组成单元,比如 “商品表” 里的 “商品名称”“销售单价” 列 。
    • 行(Row):表的一条记录,对应实际业务里的一个个体数据,如 “商品表” 中一行就是一个商品的完整信息 。
    • 主键(Primary Key):唯一标识行的列,需满足非空、不重复、不更新重用,确保能精准定位某一行数据,像 “商品编号” 设为主键,可唯一找对应商品记录 。

(二)SQL 语句分类

  • DDL(数据定义语言):操作数据库、表结构 。
    • CREATE:创建数据库、表,比如CREATE DATABASE shop;创建名为 shop 的数据库 。
    • DROP:删除数据库、表,如DROP TABLE product;删除 product 表 。
    • ALTER:修改数据库、表结构,像ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);给 product 表加新列 。
  • DML(数据操纵语言):操作表记录 。
    • SELECT:查询数据,用于从表中获取所需信息,如SELECT * FROM product;查 product 表所有数据 。
    • INSERT:插入数据,可全列省略、多行插入,例INSERT INTO products VALUES ('0005','高压锅','厨房用具',6800,5000,'2009-01-15'); 。
    • UPDATE:更新数据,需注意加 WHERE 条件避免全表更新,如UPDATE product SET sale_price = sale_price * 10 WHERE product_type = '厨房用具'; 。
    • DELETE:删除数据,结合 WHERE 删指定记录,如DELETE FROM product WHERE product_id = '0008'; 。
  • DCL(数据控制语言):管理变更与权限 。
    • COMMIT:确认对数据库的变更,让修改永久生效 。
    • ROLLBACK:回滚变更,取消未提交的操作,恢复数据到之前状态 。
    • GRANT/REVOKE:赋予 / 收回用户操作权限,控制用户对数据库对象的访问能力 。

(三)数据库与表的创建

  • 数据库创建:用CREATE DATABASE <名称>语法,如CREATE DATABASE shop;,创建后可在其中建表存数据 。
  • 表的创建CREATE TABLE <表名>(<列名1> <数据类型> <约束>,…) 。
    • 数据类型
      • INTEGER:存整数,不能有小数,像 “销售数量” 可用该类型 。
      • CHAR:定长字符串,长度不足用半角空格补足,因浪费空间少用 。
      • VARCHAR:可变长字符串,长度不足不补足,适合存长度不固定内容,如 “商品名称” 。
      • DATE:存日期(年月日),规范日期数据存储 。
    • 约束
      • NOT NULL:列必须输入数据,保证数据完整性,如 “商品名称” 设为 NOT NULL,避免空值影响业务 。
      • PRIMARY KEY:设为主键列,唯一标识行,如 “product_id” 设为主键,确保每行商品编号唯一 。

(四)表的维护操作

  • 删除表DROP TABLE <表名>,如DROP TABLE product;,会彻底删除表及数据,操作要谨慎 。
  • 修改表结构
    • 添加列ALTER TABLE <表名> ADD COLUMN <列定义>,如ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100); 。
    • 删除列ALTER TABLE <表名> DROP COLUMN <列名>,如ALTER TABLE product DROP COLUMN product_name_pinyin; 。
  • 清空表TRUNCATE TABLE <表名>,快速清空表数据,不同于 DELETE(可带条件删),它是整体清除 。

(五)数据操作(DML)

  • 更新(UPDATE):语法UPDATE <表名> SET 列=值 [WHERE 条件] 。
    • 多列更新可用逗号分隔,如UPDATE product SET sale_price = sale_price * 10, purchase_price = purchase_price / 2 WHERE product_type = '厨房用具'; 。
    • 若要将列值设为 NULL(列允许时),直接写SET 列=NULL,如UPDATE product SET regist_date = NULL WHERE product_id = '0008'; ,无 WHERE 会全表更新,需谨慎 。
  • 插入(INSERT):语法INSERT INTO <表名>(列1,列2,…) VALUES(值1,值2,…) 
    • 全列省略时,值按列顺序赋给每一列,如INSERT INTO products VALUES ('0005','高压锅','厨房用具',6800,5000,'2009-01-15'); 。
    • 多行插入在支持的数据库(如 DB2、SQL Server 等 )中可批量写 VALUES,像INSERT INTO products VALUES ('0002','打孔器','办公用品',500,320,'2009-09-11'),('0003','运动T恤','衣服',4000,2800,NULL); 。
    • 插入默认值可通过 CREATE TABLE 时设 DEFAULT 约束,如CREATE TABLE products (sale_price INTEGER DEFAULT 0 …) ,插入时未赋值则用默认值 。
    • 还能用INSERT … SELECT从其他表复制数据,如INSERT INTO productcopy (product_id, …) SELECT product_id, … FROM Product; ,快速迁移数据 。

三、学习问题与解答

问题 1:创建表时,怎么选 CHAR 和 VARCHAR 数据类型?

解答:若存储的字符串长度固定,且长度短,如 “性别(男 / 女)”,用 CHAR;若长度不固定,像 “商品描述” 这类可能长短不一的内容,选 VARCHAR,它更节省空间(长度不足时不补足空格 )。

问题 2:执行 UPDATE 语句没加 WHERE,全表数据被改了,能恢复吗?

解答:若没执行 COMMIT(在事务里),可 ROLLBACK 回滚;若已 COMMIT,部分数据库可借助备份恢复,或用日志回退(不同 DBMS 恢复方式有差异,日常操作要养成加 WHERE 条件的习惯 )。

问题 3:INSERT 插入 NULL 时,有啥限制?

解答:要插入 NULL 的列不能设 NOT NULL 约束,否则插入失败,需先确认列约束再操作 。

四、学习思考与总结

数据库与表的基础概念是 SQL 操作根基,理解主键、行列结构,才能精准设计与操作;SQL 语句分类明确,需牢记语法场景,表创建时数据类型和约束设置影响数据质量,表维护与数据操作要谨慎,避免数据丢失混乱。学习时结合实际案例(如商品表操作),能让抽象的 SQL 语法变具体,理解更深刻 。多动手写代码,从简单的创建数据库、表,到插入、更新数据,逐步实践,发现问题再回头查知识点,强化记忆 。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值