当前位置: 首页 > news >正文

学习日记-day29-6.13

完成目标:
 

知识点:

1.创建数据库表

知识点

核心内容

重点

数据库表创建

CREATE TABLE语法结构、字段定义、数据类型选择

字段命名规范与数据类型匹配

二维表结构

行(记录)与列(字段)的对应关系

记录与字段的统计方式差异

字段类型

INT/VARCHAR/CHAR/DATE等类型的应用场景

VARCHAR与CHAR的存储区别

数据库操作流程

新建数据库→创建表→查看结构→插入数据

字符集(utf8mb4)选择的重要性

SQL注释方法

单行注释(--/#)与多行注释(/* */)

不同数据库注释语法差异

表结构查看

DESC命令与SHOW CREATE TABLE的区别

两种查看方式的完整度差异

命名规范

t_前缀的行业惯例(可自定义)

不同公司的命名规范差异

数据查询基础

SELECT语句的基本用法

空表查询结果展示形式

2.数据库表列类型

知识点

核心内容

易混淆点/注意事项

应用场景

整数类型(INT)

存储整数(如学号、年龄),底层固定占4字节

显示长度(括号内数值) 仅影响显示宽度,不限制存储范围(如INT(4)仍可存5位数)

学号、年龄、计数等整数字段

浮点类型(DOUBLE)

存储小数(如身高、成绩),需指定格式(例:DOUBLE(4,1)表示总位数4,小数位1)

宽度不可扩展(超出部分会被截断或报错)

成绩、测量数据等需小数精度的场景

字符串类型(CHAR/VARCHAR)

CHAR定长(如性别CHAR(1)),VARCHAR变长(如姓名VARCHAR(20))

CHAR浪费空间但效率高,VARCHAR按需分配但需额外存储长度信息

定长数据(性别)、变长文本(姓名、地址)

BLOB/TEXT

BLOB存储二进制(音视频),TEXT存储超长文本(超65535字符)

VARCHAR与TEXT界限:VARCHAR上限65535字符

文件二进制存储、大段文本内容(如文章)

日期时间类型

DATE(年月日)、DATETIME(年月日时分秒)、TIMESTAMP(时间戳,带时区)

TIMESTAMP范围更小(1970-2038),且自动填充当前时间

入学日期(DATE)、订单时间(DATETIME)、日志记录(TIMESTAMP)

主键(Primary Key)

唯一标识记录的字段(如学号),常用整数类型

主键与普通索引的区别:主键不可重复且非空

所有需唯一标识的表(学生表、订单表等)

3.添加数据

知识点

核心内容

易混淆点/注意事项

SQL插入数据基础语法

INSERT INTO 表名 VALUES (值1, 值2...) 完整字段插入格式

分号结尾可省略但建议保留

字段显示宽度限制

INT类型显示宽度超限时自动扩展(底层4字节不变)

显示宽度≠存储容量限制

日期格式多样性

支持2022-05-08/2022.5.8/2022/5/8等多种格式

不同数据库兼容性差异

字符串引号规则

单引号和双引号均可用于字符串包裹

需保持成对使用

动态时间插入

可使用NOW()/CURRENT_DATE等函数插入系统时间

函数需带括号调用

字符长度限制

VARCHAR(5)限制5个字符而非字节(中文英文同等计算)

超限报错ERROR 1406

部分字段插入

必须指定字段名:INSERT INTO 表(字段1,字段2) VALUES (值1,值2)

未指定字段自动置NULL

历史记录管理

支持CTRL+S保存SQL脚本,左侧查询面板可重复调用

多查询窗口需合理命名

4.修改,删除数据

知识点

核心内容

重点

数据修改(UPDATE)

使用UPDATE语句修改表中数据,需配合SET指定字段和WHERE限定条件

未加WHERE会导致全表更新(示例中将全表性别误改为“女”)

条件限制

WHERE子句必须精确匹配目标记录(如s_no=10修改指定学生年龄)

多条件组合时注意逻辑运算符优先级

大小写规则

MySQL默认不区分关键字/字段名大小写(如UPDATE与update等效)

内容值默认不区分大小写(JAVA零一班和java零一班被等同处理)

数据删除(DELETE)

使用DELETE FROM语句删除记录,必须包含WHERE条件

MySQL必须写FROM(Oracle可省略),否则语法报错

操作影响验证

执行后需检查“影响行数”提示(如影响两条记录)并复查数据

批量操作前建议先SELECT验证条件范围

5.修改,删除数据库表

知识点

核心内容

重点

DDL与DML的区别

DDL操作数据库对象(如表结构),DML操作表中数据

修改表结构(ALTER) vs 修改数据(UPDATE)

增加列(ALTER TABLE...ADD)

语法:ALTER TABLE 表名 ADD 列名 类型(约束)

列位置控制:FIRST(首列)或 AFTER 列名(指定列后)

删除列(ALTER TABLE...DROP)

语法:ALTER TABLE 表名 DROP 列名

删除后数据不可恢复,需谨慎操作

修改列类型(MODIFY)

语法:ALTER TABLE 表名 MODIFY 列名 新类型

仅修改类型定义,不改变列名(如DOUBLE→FLOAT)

修改列名与类型(CHANGE)

语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 新类型

同时修改列名和类型(需兼容现有数据)

删除表(DROP TABLE)

语法:DROP TABLE 表名

整表删除(含数据) vs DELETE仅删数据

数值类型精度控制

如DOUBLE(5,2):总位数5,小数位2

超范围数据会四舍五入(如1234.567→1234.57)

6.非外键约束(1)

7.非外键约束(2)

知识点

核心内容

重点

约束分类

分为列级约束(定义在列后)和表级约束(定义在表后逗号分隔)

主键约束可同时作为列级或表级约束,但自增约束仅支持列级

主键约束(表级)

语法:CONSTRAINT PK_stu PRIMARY KEY(sno),支持联合主键(多字段)

约束命名规范(PK_表名)与错误提示关联性

检查约束(表级)

语法:CONSTRAINT CK_stu_sex CHECK(sex IN('男','女')),支持多条件(如年龄范围)

命名区分性(如CK_stu_sex vs CK_stu_age)便于定位错误

唯一约束(表级)

语法:CONSTRAINT EQ_stu_email UNIQUE(email),错误提示包含约束名

与主键约束的异同(唯一性但允许多个NULL)

非空/默认约束

仅支持列级:NOT NULL、DEFAULT '男'

自增约束(AUTO_INCREMENT)必须列级定义

约束验证测试

通过插入数据触发错误(主键冲突、检查约束违反、唯一性冲突)

错误信息解析:CK_stu_sex直接定位性别字段问题

8.非外键约束(3)

知识点

核心内容

重点

SQL约束类型

主键约束、非空约束、默认约束、唯一约束、检查约束、自增约束

自增约束必须建立在主键基础上

创建表时添加约束

通过CREATE TABLE语句直接定义各类约束

NOT NULL和DEFAULT约束只能在创建表时定义

表创建后添加约束

使用ALTER TABLE语句添加主键、唯一、检查等约束

修改自增属性需用MODIFY COLUMN语法

约束验证方法

DESC查看表结构/设计表界面验证约束生效情况

需注意多约束同时添加时的分号分隔

常见错误处理

自增字段未设置主键导致的定义错误

解决方案:先添加主键再设置自增

约束修改流程

1. 删除表 2. 重建基础表 3. 逐步添加约束

注意操作顺序对数据完整性的影响

9.外键约束

知识点

核心内容

重点

外键约束概念

表中字段依赖另一表主键/唯一键的值,被依赖表称主表/父表,设置外键的表称从表/子表

外键必须引用主键或唯一约束字段

外键作用

解决数据冗余问题(如班级名称重复)、确保数据修改一致性(如批量更新班级名称)

外键关系建立前后的数据操作差异

外键约束语法

仅支持表级约束:CONSTRAINT 约束名 FOREIGN KEY(字段) REFERENCES 主表(主键)

列级约束与表级约束的区别(vs主键约束)

外键验证案例

1. 禁止插入不存在的班级编号; 2. 禁止删除被引用的班级记录

违反约束时的典型报错信息分析

表关系设计

班级表(主表)与学生表(子表)的1:N关系设计

字段命名规范(不要求同名但需类型一致)

10.外键策略

知识点

核心内容

重点

外键约束

外键用于建立表间关联,确保数据完整性

主从表删除顺序(先删从表再删主表)

外键策略一(NO ACTION)

默认策略,禁止直接操作关联数据

需手动处理关联数据(如置空外键字段)才能操作主表

外键策略二(CASCADE)

级联操作,主表变更自动同步到从表

删除班级会连带删除所有学生记录(高风险操作)

外键策略三(SET NULL)

置空操作,主表变更将从表外键置为NULL

解散班级时保留学生记录但清空班级字段

策略组合应用

可混合使用不同策略(如UPDATE CASCADE + DELETE SET NULL)

需根据业务场景选择(朋友圈删除vs班级解散)

实践演示

通过班级-学生案例演示三种策略效果

注意错误演示顺序(先展示NO ACTION再引入新策略)

相关文章:

  • python+django/flask成都奥科厨具厂产品在线销售系统
  • Python学习(9) ----- Python的Flask
  • bytes转string
  • icg真的只能用latch不能用Flip-flop吗
  • 洛谷自己创建的一个小比赛【c++】
  • PCB设计教程【大师篇】stm32开发板PCB整体布局
  • Android13 新增 Stable AIDL接口
  • 传染病传播模拟:基于社会接触网络的疫情预测模型
  • django restframework 在serializer里 通过context设置session
  • 在ros中动态调整雷达,线激光雷达等设备的静态坐标关系
  • 【Python教程】CentOS系统下Miniconda3安装与Python项目后台运行全攻略
  • Spring XML 常用命名空间配置
  • C语言预处理命令详解
  • LeetCode - 904. 水果成篮
  • 《 第三章-招式初成》 C++修炼生涯笔记(基础篇)程序流程结构
  • HE023784R23B530 PP D113 B01-25-111000: AC 800PEC 静态励磁系统UNITROL 6000 X-power
  • 让高端装备“先跑起来”:虚拟仿真验证平台重塑研制流程
  • QT log4qt 无法生成日志到中文的路径中的解决方案
  • 鸿蒙app 开发中 如何 看 app 页面的ui结构
  • 信息学奥赛一本通 1543:【例 3】与众不同
  • hph做动态网站/疫情二十条优化措施
  • 推广网站怎么做模版/站长推荐
  • 河南网站建设推广公司/百度网站链接提交
  • 现在网站用什么语言做最好/搜索seo
  • 优秀网站推荐/市场营销策略有哪些
  • 有一个做ppt的网站/域名交易