数据库术语 数据库(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),则默认为53 4字节或8字节 real 存储从–3.40E + 38到3.40E + 38范围的浮点型数 4字节
字符串类型 1、普通编码(非unicode )字符串类型
数据类型 说明 存储空间 char[(n)] 固定长度,非 Unicode 字符串数据。 n 用于定义字符串长度,取值范围为 1 到 8000。 char 的 ISO 同义词为 character n字节 varchar[(n|max)] 可变长度,非 Unicode 字符串数据。 n 用于定义字符串长度,取值范围为 1 到 8,000。 max 指示最大存储大小是 231-1 个字节(2GB)。 varchar 的 ISO 同义词为 char varying 或 character varying n+2(结束标识)字节 text 可存储231-1 (2,147,483,647) 个长度可变的非 Unicode 字符数据
2、统一字符编码( unicode )字符串类型
数据类型 说明 存储空间 nchar[(n)] 固定长度的 Unicode 字符串数据。 n 用于定义字符串长度,取值范围为 1 到 4000。 nchar 的ISO同义词为national char 和national character 2*n 字节 nvarchar[(n|max)] 可变长度的Unicode 字符串数据。n 用于定义字符串长度,取值范围为 为1 到 4000。max 指示最大存储大小是 231-1 个字节 (2GB)。nvarchar 的 ISO 同义词为 national char varying 和 national character varying 2*n+2(结束标识)个字节 ntext 长度可变的Unicode字符串数据,字符串最大长度为 230-1 (1,073,741,823) 个字节。ntext 的ISO 同义词为 national text 所输入字符串长度的两倍(以字节为单位)
3、二进制字符串类型
数据类型 说明 存储空间 binary[(n)] 固定长度为 n 字节的二进制数据,n 的取值从1 到 8000 n 字节 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 个字节
日期类型 类型 格式 说明 date 2023-04-04 日期,只存储年月日 time 20:38:35 时间,只存储时分秒 year 2023 年份 datetime 2023-04-04 20:38:35 日期+时间 timestamp 20230404 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 ) );
点击下方√。