什么是数据库?
是按照特定的数据结构来组织、存储和管理数据的集合,它的核心作用是高效地存储大量数据,并支持快速的查询、修改、删除等操作,同时保证数据的安全性、完整性和一致性。简单来说,数据库就像一个电子化的智能文件柜,它不是简单地堆砌数据,而是按照预设的规则分类存放,方便用户或程序快速找到、使用和维护数据。
数据库的结构
- -数据库:数据库是表、视图、索引、存储过程等对象的容器,用于按业务逻辑隔离数据(比如电商系统拆分为「用户数据库」「订单数据库」「商品数据库」)。
- -数据库表:表是数据库中存储数据的基本单元,以 "行 + 列" 的二维结构组织数据,是数据落地的核心载体。
数据库系统
- -大型数据库:sql server Oracle DB2
- -中型数据库:access MySQL foxpro
数据库管理(DBS)
数据库管理(DBS)是围绕数据库系统全生命周期的规划、部署、运维、优化、安全、备份恢复等一系列管理活动的总称,核心目标是保障数据库系统稳定、高效、安全地运行,满足业务对数据存储、访问和分析的需求。
核心职责:
- 架构规划与部署;
- 日常运维与监控;
- 性能优化;
- 数据安全管理;
- 备份与恢复;
- 高可用与容灾;
- 数据生命周期管理
数据库管理员(DBA):Database Administrator
数据库管理员(DBA)是负责数据库系统全生命周期管理的核心技术角色,其核心职责是通过技术手段与流程规范,保障数据库的稳定性、高性能、安全性与可扩展性,最终支撑业务系统对数据存储、访问和分析的需求。DBA 不仅是技术执行者,也是业务与数据之间的 "桥梁"------ 需结合业务场景设计合理的数据架构,同时应对各类突发故障与性能瓶颈。
核心职责:
- 数据库架构设计与部署;
- 日常运维与监控;
- 性能优化;
- 数据安全与权限管理;
- 备份恢复与容灾;
- 业务支撑与合规。
基础命令
1.create------创建
create database 数据库名 #创建数据库
on primary #主数据文件
( #设置选项
name='主文件名' , #指定文件名称
filename='存放路径', #指定物理存放路径
size=初始大小 , #起始占用空间
maxsize=最大大小, #最大占用空间
filegrowth=增量大小 #数据库增长量
)
log on #日志文件
( #设置选项
name='主文件名' , #指定文件名称
filename='存放路径', #指定物理存放路径
size=初始大小 , #起始占用空间
maxsize=最大大小, #最大占用空间
)


2.alter------修改
alter database yxwa
modify file
(
name='yxwa_ldf',
size=50MB,
maxsize=2GB
)

3.drop------删除
drop database yxc;

数据类型
用于指定数据保存的类型:证书、货币、年龄、身份证、日期、时间、手机号码等
1.精准数字
1)整数类型
brgint:大范围整数,占用8字节
int:标准数值范围,4字节
smallint:小范围整数,2字节
tinyint:1字节,0-255之间的整数
2)小数类型
decimal:decimal(8,2)长度8位,小数点后保留2位 eg.12345678.78
3)位
Bit:用于储存0,1或空(null)
4)货币类
Money:占用8字节,$
2.近似数字
float:浮点数(小数),占用8字节
3.字符串
char:最大8000字节,固定长度
varchar:8000字节,不固定长度
text:大型文本内容存储,20亿字符
4.Unicode字符串(国际通用字符串)
nchar:最大4000字节,固定长度
nvarchar:4000字节,不固定长度
ntext:大型文本内容存储,10亿字符
5.二进制字符串
image:存储20亿字节的图片
6.日期和时间类型
Date:日期 0000年1月1日 9999年12月31日
Time:时间 00:00:00 23:59:59
Datetime:日期加时间
练习一:
创建一个名为5b的表
create table table_5b 创建一个名为5b的表
(
编号 int, 类型+数据类型
姓名 char(20),
年龄 tinyint,
性别 char(4),
出生日期 date,
电话 char(11),
工作 char(20),
薪资 money
)
查看表内容
select * from table_5b;


查看表信息
exec sp_help table_5b;


切换数据库
use yxwa;


练习二:

学生表
create table 学生表
(
学生ID bigint,
姓名 char(50),
年龄 int,
性别 char(10),
成绩 decimal(10,2),
入学日期 date
)



产品
create table 产品
(
产品编号 bigint,
产品名称 char(50),
价格 decimal(10,2),
库存数量 int,
生产日期 date,
是否上架 char(4),
产品描述 text,
材料成分 text,
产品重量 float,
产品分类 char(20)
)



数据库约束
数据库约束(Constraint)是强制表中数据满足特定规则 的机制,核心作用是保证数据的完整性、一致性、准确性,避免无效 / 错误数据插入 / 修改,同时简化业务逻辑校验。
常见的数据库约束
1.Primary key 主键约束
表中的主键列必须包含唯一的值
主键列不允许包含NULL值
一个表只能有一个主键
主键约束会自动创建唯一索引,以快速检索数据
2.Foreign key 外键约束
建立两个表之间的关联,确保关联的数据一致性
3.Unique 唯一约束
确保所有的值都是唯一的
允许NULL
可以有多个唯一约束
4.Check 检查约束
不允许值为NULL
限制列中允许的值的范围
可以定义多个检查约束
5.Default 默认约束
当插入记录时,如果未为该列提供值,择自动为该列赋一个默认值
6.NOT NULL 非空约束
不允许列为空
7.Identity 自动增长约束
让字段值在插入数据时自动生成、递增(无需手动指定)
Eg. Id int identity(1,1)
练习三
创建一个名为dang_an的表并按下图填入内容
内容如图所示:
1.创建名为档案的表
create table dang_an
(
表头
)

2.要求ID设为自动增长约束
ID int identity(1,1),

3.Name设为主键约束
Name char(20) primary key,

4.Sex和Age设为检查约束
Sex char(4) check(Sex='男' or Sex='女'),
Age int check(Age>=18 and Age<=50),

5.csny设置为默认约束
csny date default GETDATE(),

6.jg_id和zw_id设为外界约束
1)创建名为zhiwei的表并填入内容

①创建名为zhiwei的表
create table zhiwei
(
zw_id int identity(1,1) primary key,
zw char(20)
)

②填入内容
insert into zhiwei(zw)
values('技术支持');
insert into zhiwei(zw)
values('运维');
insert into zhiwei(zw)
values('销售');
insert into zhiwei(zw)
values('财务');
insert into zhiwei(zw)
values('保安');
insert into zhiwei(zw)
values('开发');

③查看表格
select * from zhiwei 查看表格内容
select * from zhiwei order by zw_id asc 按zw_id顺序查看表格内容


2)创建名为jiguan的表并填入内容

①创建表格
create table jiguan
(
jg_id int identity(1,1) primary key,
jg char(20)
)

②填入内容
insert into jiguan(jg)
values('北京');
insert into jiguan(jg)
values('河北');
insert into jiguan(jg)
values('天津');
insert into jiguan(jg)
values('上海');
insert into jiguan(jg)
values('哈尔滨');
insert into jiguan(jg)
values('广东');
insert into jiguan(jg)
values('福建');
insert into jiguan(jg)
values('云南');
insert into jiguan(jg)
values('甘肃');

③查看表格内容
select * from jiguan order by jg_id asc

3)设置外键约束
jg_id int constraint jiguan foreign key(jg_id) references jiguan(jg_id),
zw_id int constraint zhiwei foreign key(zw_id) references zhiwei(zw_id),

7.gl设为非空约束
gl int not null

8.向名为dang_an的表格内添加内容
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('李晨','男',35,'1982-5-30',1,1,15)
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('陈赫','男',34,'1983-4-22',1,2,14);
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('王敏','女',33,'1984-1-20',2,3,13);
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('张武','男',28,'1989-6-26',1,2,8);
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('陆毅','男',40,'1977-4-14',2,5,20);
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('王菲','女',32,'1985-3-21',2,3,12);
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('刘亦菲','女',30,'1987-9-30',3,3,10);
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('莆田','女',50,'1967-8-30',4,4,30);
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('高小凤','男',21,'1996-5-30',6,6,1);
insert into dang_an(Name,Sex,Age,csny,jg_id,zw_id,gl)
values('刘娜','女',20,'1997-5-30',8,6,0);


9.查看dang_an内容
select * from dang_an order by ID asc

10.查看表格信息
exec sp_help dang_an
