SQL——概述、数据类型、字段约束

目录

1 数据库术语

2 SQL语言功能分类

3 数据类型

3.1 数值类型

3.2 字符串类型

3.3日期类型 

4 字段约束

5 主键自动增长


 

1 数据库术语

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

2 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:数据控制)

事务管理等控制性操作

3 数据类型

3.1 数值类型

精确数值类型

说明

存储空间

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字节

3.2 字符串类型

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  个字节

3.3日期类型 

类型 格式 说明
date 2023-04-04 日期,只存储年月日
time 20:38:35 时间,只存储时分秒
year 2023 年份
datetime 2023-04-04 20:38:35 日期+时间
timestamp 20230404 203835 日期+时间(时间戳)

4 字段约束

为什么要给表中的列添加约束呢?
  • 保证数据的有效性
  • 保证数据的完整性
  • 保证数据的正确性
字段常见的约束有哪些呢?
  • ⾮空约束(not null):限制此列的值必须提供,不能为null
  • 唯⼀约束(unique):在表中的多条数据,此列的值不能重复
  • 主键约束(primary key):⾮空+唯⼀,能够唯⼀标识数据表中的⼀条数据
  • 外键约束(foreign key):建⽴不同表之间的关联关系
  • 默认约束(default):当向表插入数据时,若没为定义了default的列提供值,则给定列指定默认值
  • 限制约束(check):   限制列的取值范围。
# 创建表时添加主键约束
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;

5 主键自动增长

创建数据表时,如果数据表中有列可以作为主键(例:学⽣表的学号)可以直接以这列为主键;
而当有些数据表中没有合适的列作为主键时,可以额外定义⼀个与记录本身⽆关的列 (ID )作为主键,此列数据⽆具体的含义主要⽤于标识⼀条记录,在 mysql 中将此列定义为int ,同时设置为 ⾃动增⻓ ,即向数据表中新增⼀条记录时,⽆需提供ID列的值,它会⾃动⽣成。
  • 定义int类型字段⾃动增⻓: auto_increment
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)
);

点击下方。 

posted @ 2023-04-04 23:22  小平凡的记录  阅读(40)  评论(0编辑  收藏  举报  来源