📅 周一:SQL Server 2019 安装配置与数据库连接
周一学习了 SQL Server 2019 的安装配置与基础使用,主要收获如下:
- 数据库与数据表创建:掌握了可视化界面与 SQL 脚本两种方式新建数据库和数据表,规范设置字段数据类型,通过主键标识规范实现数据自增。
- 数据库连接原理:了解了数据库连接基本原理,熟悉数据库连接字符串、连接对象、数据适配器与数据集容器的作用。
- 登录校验实战:结合 C# 窗体项目,实现了连接数据库、拼接查询语句、根据账号密码查询用户数据,并通过判断查询结果行数完成登录校验功能。
📅 周二:数据库基础与 SQL Server 图形化界面
周二学习了数据库的基础知识,主要收获如下:
- 数据库分类:了解了数据库分为关系型数据库和非关系型数据库,主流数据库有 Oracle、MySQL、DB2、SQL Server 等。
- 数据库移动操作:SQL Server 中移动数据库有四种操作:
- 分离:右键数据库 → 任务 → 分离
- 附加:右键装数据库的文件夹 → 附加
- 脱机:右键数据库 → 任务 → 脱机
- 联机:右键数据库 → 任务 → 联机
- 图形化界面操作:学习了 SQL Server Management Studio 数据库图形化界面的使用,对图形化界面建表、建约束进行了初步操作。
- 外键约束理解:注意到一旦一个表建立了被赋予了外键,主表内列的改动会关联到外键所在的表列,主表也因为外键的存在不可以随意删除。
📅 周三:数据库操作实战(增删改查)
周三学习了数据库的操作,包括数据库的创建和删除、表的创建和删除,以及对表数据的增删改查。
数据库操作
删除数据库结构:
DROPDATABASE数据库名创建数据库:
CREATEDATABASE数据库名-- 数据文件ONPRIMARY(filename='***.mdf',-- 文件的物理地址name='***',-- 文件的逻辑名称size=5MB,-- 起始内存maxsize=**,-- 每次增量(可以不写)filegrowth=**-- 每次增量(可以不写))-- 日志文件LOGON(filename='***.ldf',name='***',-- 与上面 ON PRIMARY 中的 name 不能相同size=5MB)数据表操作
删除数据表结构:
DROPTABLE表名创建表结构:
CREATETABLE表名(idINTPRIMARYKEYIDENTITY(1,1),-- 设置主键自增长,自增长只能是 int 类型属性(列名) 数据类型NOTNULL(非空)UNIQUE(唯一约束))数据增删改查
增加数据:
INSERTINTO表名(除自增长主键外属性名)VALUES数据(自增长主键不用给值与属性对应)-- 如果表名后不写属性名,数据就需要与表结构的属性对应插入多行数据:
INSERTINTO表名SELECT数据,数据,数据UNION数据,数据,数据备份到新表(新表不存在):
SELECT*INTO新的表名FROM需要备份的表名备份到新表(新表存在):
INSERTINTO新表名SELECT属性FROM需备份表名WHERE条件查询数据:
SELECT属性FROM表名WHERE条件列表修改数据:
UPDATE表名SET列名=值(可以多个,用逗号隔开)WHERE条件删除数据:
DELETE[FROM]表名WHERE条件删除包含约束的内容:
TRUNCATETABLE表名📅 周四:SQL Server 基础查询语句
周四学习了 SQL Server 基础语句,主要收获如下:
- SELECT 查询:可以查询指定字段并设置别名,使用
TOP读取部分数据,通过ORDER BY实现结果排序。 - 数据类型转换:借助
CONVERT完成数据类型转换,实现多个字段拼接。 - ALTER TABLE:使用
ALTER TABLE语句,可以为已存在的数据表新增字段。 - WHERE 条件筛选:
- 区分空字符串
''与NULL值,NULL需要使用IS NULL来判断。 - 掌握
LIKE模糊查询,%匹配任意多个字符,_匹配单个字符。 - 范围查询
BETWEEN、多值匹配IN。
- 区分空字符串
- 聚合函数与分组:学习
COUNT、SUM、AVG等聚合函数,使用GROUP BY完成分组统计,HAVING筛选分组后的结果。 - WHERE 与 HAVING 区别:
WHERE用于过滤原始数据,不能使用聚合函数。 - 日期查询:学习
datetime日期类型的范围查询,了解各类常见易错语法,夯实 SQL 查询相关知识。
📅 周五:多表联查与存储过程
周五学习了基于关联字段进行联查、存储过程与条件转换,主要收获如下:
多表联查
- 基于关联字段联查:针对学生表和成绩表,通过学生 ID 与成绩表中的 Student ID 建立关联关系,使用逗号分隔表名进行两表联查。
- 指定查询列与别名:在查询时可使用别名简化表名,并明确指定需要显示的列,如学生姓名、科目名称和成绩。
连接机制
- 内连接:仅显示交集数据。使用
INNER JOIN时,只有两张表中完全匹配关联条件的数据才会被显示出来。 - 左连接:以左表为参照。使用
LEFT JOIN时,左表(如学生表)的所有数据均会显示,若右表中无匹配数据则以空值填充。 - 右连接:以右表为参照。使用
RIGHT JOIN时,右表(如成绩表)的所有数据均会显示,若左表中无匹配数据则以空值填充。 - 多表查询本质:无论是三张表还是十张表,其联查逻辑均是通过两两关联实现的,即先查出前两张表的结果作为一张临时表,再与第三张表进行关联。
存储过程
- 封装为独立执行单元:存储过程相当于数据库中的方法,用于将复杂的逻辑(如带条件判断的数据插入)封装起来以便直接调用。
- 使用 CREATE PROCEDURE 创建:创建时需使用
CREATE PROCEDURE关键字,并定义传入参数及其数据类型(如姓名、年龄、性别)。
CASE WHEN 条件转换
- 实现数据映射替换:通过
CASE WHEN和THEN语法,可以将数据库中存储的抽象代码(如班级编号 1、2)转换为具有实际意义的名称(如 2609、2610 班)。