考试全覆盖:主键、外键、唯一约束、Check约束、默认值约束、三大完整性体系 + C#ADO.NET原生连接、DataReader读取、DataGridView绑定
核心体系:实体完整性、域完整性、引用完整性
第一部分:数据库核心理论(简答题必背)
1. 主键(Primary Key)
关系型数据库中,能唯一标识单条数据行的字段,作为表的唯一标识。
主键四大特性(满分背诵)
-
唯一性:主键值绝对不能重复
-
非空性:主键字段不允许为NULL
-
稳定性:主键一旦确定,业务中禁止修改
-
永久性:全数据库生命周期唯一不变
常见主键:学生ID、身份证号、订单编号
2. 外键(Foreign Key)
用于两张表关联的字段,指向另一张表的主键,作用是保证多表数据一致性。
外键三大特点
-
可空性:外键允许为空,代表暂无关联数据
-
一致性:外键值必须在主表中存在,保证数据合法
-
引用性:外键必须关联另一张表的主键
3. 数据库三大完整性约束(终极考点)
3.1 实体完整性(行约束)
约束整行数据唯一有效。 实现方式:主键约束、唯一约束
3.2 域/列完整性(字段约束)
约束字段数据合法、合规。 实现方式:非空、默认值、Check范围约束、长度约束
3.3 引用完整性(表关联约束)
约束多表关联数据一致。 实现方式:外键约束
第二部分:SQL 六大约束实操代码(可直接运行)
约束命名规范(考试标准): PK_主键、UQ_唯一、CK_检查、FK_外键、DF_默认值
1. 主键约束 添加/删除
–存在则删除旧主键约束,避免重复报错
if exists (select * from sysobjects where name = 'PK_Id')
alter table YueShu1 drop constraint PK_Id
–添加主键约束:Id作为主键
alter table YueShu1 add constraint PK_Id primary key(Id)
2. 唯一约束(单列不重复)
–年龄唯一,不能重复
if exists (select * from sysobjects where name = 'UQ_Age')
alter table YueShu1 drop constraint UQ_Age
alter table YueShu1 add constraint UQ_Age unique(Age)
3. Check范围约束(域完整性)
–年龄范围约束:10~40之间
if exists (select * from sysobjects where name = 'CK_Age')
alter table YueShu1 drop constraint CK_Age
alter table YueShu1 add constraint CK_Age check (Age between 10 and 40)
4. 字符串长度约束
–姓名长度小于5个字符
if exists (select * from sysobjects where name = 'CK_Name')
alter table YueShu1 drop constraint CK_Name
alter table YueShu1 add constraint CK_Name check (len(Name)<5)
5. 默认值约束
–地址为空时,默认赋值“地址不详”
if exists (select * from sysobjects where name = 'CK_Address')
alter table YueShu1 drop constraint CK_Address
alter table YueShu1 add constraint CK_Address default ('地址不详') for Address
6. 外键约束(引用完整性核心)
–YueShu1表的ClassId 关联 YueShu2表的ClassId主键
if exists (select * from sysobjects where name = 'FK_ClassId')
alter table YueShu1 drop constraint FK_ClassId
alter table YueShu1
add constraint FK_ClassId
foreign key(ClassId) references YueShu2(ClassId)
第三部分:C# WinForm ADO.NET 数据库完整连接代码
功能:连接远程SQL服务器、查询Students表、数据加载到DataGridView
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace _1数据库连接
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//1.数据库连接字符串:服务器IP端口、数据库名、账号密码
string connectionString = "server=192.168.215.96,1344;database=StudentDataBase;uid=sa;pwd=123456";
SqlConnection connection;
//绑定数据到DataGridView核心方法
public void BindGridView()
{
try
{
//2.创建连接对象并打开连接
connection = new SqlConnection(connectionString);
connection.Open();
//3.编写查询SQL语句
string cmdString = "select * from Students";
//4.创建指令执行对象
SqlCommand command = new SqlCommand(cmdString, connection);
//5.创建读取器:流式读取数据库数据
SqlDataReader dataReader = command.ExecuteReader();
//6.创建数据表容器,装载数据
DataTable dt = new DataTable();
dt.Load(dataReader);
//7.绑定数据到界面表格
dataGridView1.DataSource = dt;
//8.关闭连接(必须关闭,防止占用)
connection.Close();
}
catch (Exception e)
{
//异常捕获:连接失败、SQL错误、网络问题
Console.WriteLine(e.Message);
}
}
//按钮点击触发数据加载
private void button1_Click(object sender, EventArgs e)
{
BindGridView();
}
}
}
第四部分:C#数据库连接核心流程(必考流程题)
定义连接字符串:指定服务器、数据库、账号密码
创建SqlConnection对象:建立通道
Open()打开数据库连接
编写SQL语句
SqlCommand:绑定SQL与连接对象
SqlDataReader:读取执行结果
DataTable.Load():装载数据
DataGridView绑定数据源
Close()关闭连接(重中之重)
第五部分:期末高频简答题汇总
1. 简述数据库三大完整性约束
-
实体完整性:保证每行数据唯一,由主键、唯一约束实现。
-
域完整性:保证字段数据合法,由Check、默认值、非空、长度约束实现。
-
引用完整性:保证多表关联数据一致,由外键约束实现。
2. 主键与外键区别
-
主键:本表唯一、非空、标识单条数据。
-
外键:关联他表主键、可空、维护多表关系。
3. ADO.NET读取数据步骤
连接字符串→创建连接→打开连接→Command执行→DataReader读取→DataTable装载→控件绑定→关闭连接
第六部分:易错考点
-
所有约束添加前,必须判断存在并删除,防止重复创建报错
-
外键约束只能引用主表主键/唯一键
-
C#数据库连接用完必须Close,否则数据库连接池耗尽
-
SqlDataReader是只读流式读取,必须借助DataTable绑定控件



