数据库术语

  • 数据库(Database) :存储的数据的集合,提供数据存储的服务
  • 数据(Data) :实际上指的是描述事物的符号记录
  • 数据库管理系统(Database Management System,DBMS ) : 数据库管理系统,是位于⽤户与操作系统之间的⼀层数据管理软件
  • 数据库系统管理员(Database Anministrator,简称为DBA) :负责数据库创建、使⽤及维护的专⻔⼈员
  • 数据库系统(Database System,DBS) :数据库系统管理员、数据库管理系统及数据库组成整个单元

SQL语言功能分类

SQL功能解释与命令
DDL(Data Definition Language:数据定义)完成对数据库对象(数据库、数据表、视图、索引等)的创建create、删除drop、修改alter
DQL(Data Query Language:数据查询)select
DML(Data Manipulation Language:数据操作)对数据表中的数据的添加insert、删除delete、修改update操作
DCL(Data Control Language:数据控制)事务管理等控制性操作

数据类型

数值类型

精确数值类型说明存储空间
bigint存储从–263 (–9,223,372,036,854,775,808)到263- 1 (9,223, 372, 036, 854,775,807) 范围的整数8字节
int存储从–231 (–2,147,483,648 ) 到 231-1 ( 2,147,483,647 ) 范围的整数4字节
smallint存储从–215 (–32,768 ) 到 215-1 (32,767 ) 范围的整数2字节
tinyint存储从 0 到 255 之间的整数1字节
bit存储1或0或null。如果一个表中有不多于8个的bit列,则这些列公用一个字节存储1字节
numeric[(p[,s])] 或 decimal[(p[,s])]定点精度和小数位数。使用最大精度时,有效值从–1038 +1 到1038-1。 其中,p为精度,指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从1到最大精度38之间的值。默认精度为18。s为小数位数,指定小数点右边可以存储的十进制数字的最大个数,0 <= s <= p. s的默认值为0最多17字节
近似数值类型说明存储空间
float[(n)]存储从-1.79E + 308至-2.23E –308、0以及2.23E–308至1.79E + 308范围的浮点数。n有两个值,如果指定的n在1~24之间,则使用24,占用4字节空间;如果指定的n在25~53之间,则使用53,占用8字节空间。若省略(n),则默认为534字节或8字节
real存储从–3.40E + 38到3.40E + 38范围的浮点型数4字节

字符串类型

1、普通编码(非unicode )字符串类型

数据类型说明存储空间
char[(n)]固定长度,非 Unicode 字符串数据。 n 用于定义字符串长度,取值范围为 1 到 8000。 char 的 ISO 同义词为 charactern字节
varchar[(n|max)]可变长度,非 Unicode 字符串数据。 n 用于定义字符串长度,取值范围为 1 到 8,000。 max 指示最大存储大小是 231-1 个字节(2GB)。 varchar 的 ISO 同义词为 char varying 或 character varyingn+2(结束标识)字节
text可存储231-1 (2,147,483,647) 个长度可变的非 Unicode 字符数据

2、统一字符编码( unicode )字符串类型

数据类型说明存储空间
nchar[(n)]固定长度的 Unicode 字符串数据。 n 用于定义字符串长度,取值范围为 1 到 4000。 nchar 的ISO同义词为national char 和national character2*n 字节
nvarchar[(n|max)]可变长度的Unicode 字符串数据。n 用于定义字符串长度,取值范围为 为1 到 4000。max 指示最大存储大小是 231-1 个字节 (2GB)。nvarchar 的 ISO 同义词为 national char varying 和 national character varying2*n+2(结束标识)个字节
ntext长度可变的Unicode字符串数据,字符串最大长度为 230-1 (1,073,741,823) 个字节。ntext 的ISO 同义词为 national text所输入字符串长度的两倍(以字节为单位)

3、二进制字符串类型

数据类型说明存储空间
binary[(n)]固定长度为 n 字节的二进制数据,n 的取值从1 到 8000n 字节
varbinary[(n|max)]可变长度二进制数据。n 的取值从1 到 8000,max指示最大存储大小为 231-1 字节。varbinary 的 ANSI SQL 同义词为 binary varying所输入数据的实际长度 +2(结束标识) 个字节
image长度可变的二进制数据,二进制数据最大长度为231-1 (2,147,483,647) 个字节0 到 231-1 个字节

日期类型

类型格式说明
date2023-04-04日期,只存储年月日
time20:38:35时间,只存储时分秒
year2023年份
datetime2023-04-04 20:38:35日期+时间
timestamp20230404 203835日期+时间(时间戳)

字段约束

为什么要给表中的列添加约束呢?

  • 保证数据的有效性
  • 保证数据的完整性
  • 保证数据的正确性

字段常见的约束有哪些呢?

  • ⾮空约束(not null):限制此列的值必须提供,不能为null
  • 唯⼀约束(unique):在表中的多条数据,此列的值不能重复
  • 主键约束(primary key):⾮空+唯⼀,能够唯⼀标识数据表中的⼀条数据
  • 外键约束(foreign key):建⽴不同表之间的关联关系
  • 默认约束(default):当向表插入数据时,若没为定义了default的列提供值,则给定列指定默认值
  • 限制约束(check): 限制列的取值范围。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 创建表时添加主键约束
create table Student(
S_num char(7) primary key,
S_name char(10) not null,
S_sex char(2) ,
S_age tinyint ,
S_dept char(20)
);

# 或者
create table Student(
S_num char(7) ,
S_name char(10) not null,
S_sex char(2) ,
S_age tinyint ,
S_dept char(20),
primary key(S_num)
);
# 删除数据表主键约束
alter table <name> drop primary key;
# 创建表之后添加主键约束
create table Student(
S_num char(7),
S_name char(10) not null,
S_sex char(2) ,
S_age tinyint ,
S_dept char(20)
);

# 创建表之后添加主键约束
alter table Student modify S_num char(7) primary key;

主键自动增长

创建数据表时,如果数据表中有列可以作为主键(例:学⽣表的学号)可以直接以这列为主键;

而当有些数据表中没有合适的列作为主键时,可以额外定义⼀个与记录本身⽆关的列 (ID )作为主键,此列数据⽆具体的含义主要⽤于标识⼀条记录,在 mysql 中将此列定义为int ,同时设置为 ⾃动增⻓ ,即向数据表中新增⼀条记录时,⽆需提供ID列的值,它会⾃动⽣成。

  • 定义int类型字段⾃动增⻓: auto_increment
1
2
3
4
5
6
7
8
create table S(
S_id int primary key auto_increment,
S_num char(7),
S_name char(10) not null,
S_sex char(2) ,
S_age tinyint ,
S_dept char(20)
);

点击下方√。