首页 > 数据库 >数据库表的创建、数据类型、约束条件、增删改数据

数据库表的创建、数据类型、约束条件、增删改数据

时间:2023-11-30 11:33:45浏览次数:50  
标签:约束条件 字节 -- 数据类型 字段 表名 增删 table name

MYSQL数据库、表基本操作

一、常用数据类型

1.1、整型类型

数据类型 所占字节 存储范围(有符号) 存储范围(无符号)
TINYINT 1字节 -128~127 0~255
SMALLINT 2字节 -32768~32767 0~65535
MEDIUMINT 3字节 -8388608~8388607 0~16777215
INT 4字节 -2147483648~2147483647 0~4294967295
BIGINT 8字节 -9223372036854775808 ~9223372036854775807 0~18446744073709551615

1.2、浮点类型和定点类型

浮点数类型分为两种,单精度(FLOAT)和双精度(DOUBLE),而定点数类型只有DECIMAL一种。

浮点数类型和定点数类型都可以使用类型名称后面加“(M,D)”的形式来定义,其中M称为精度,表示数值的位数(整数位+小数位);D称为标度,表示小数点后的位数。

数据类型 占用字节 负数存储范围 非负数存储范围
FLOAT 4字节 -3.402823466E+38 ~-1.175494351E-38 0和1.175494351E-38 ~3.402823466E+38
DOUBLE 8字节 -1.7976931348623157E+308 ~-2.2250738585072014E-308 0和2.2250738585072014E-308 ~1.7976931348623157E+308
DECIMAL M+2字节 与DOUBLE相同 与DOUBLE相同

1.3、日期和时间类型

数据类型 占用字节 存储格式 存储范围
YEAR 1字节 YYYY 1901~2155
DATE 3字节 YYYY-MM-DD 1000-01-01~9999-12-31
TIME 3字节+小数秒存储 HH:MM:SS -838:59:59~838:59:59
DATETIME 5字节+小数秒存储 YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~9999-12-31 23:59:59
TIMESTAMP 4字节+小数秒存储 YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 UTC ~2038-01-19 03:14:07 UTC

1.4、字符串类型

类型名称 占用字节 存储范围
CHAR(M) M*w字节 0<=M<=255
VARCHAR(M) L+1字节 0<=M<=65535
BINARY(N) N字节 0<=N<=255
VARBINARY(N) L+1字节 0<=N<=65535
BLOB L+2字节 L<216
TEXT L+2字节 L<216
ENUM 1或2字节 0~65535
SET 1、2、3、4或8字节 最多64个成员

其中,TEXT类型和BLOB类型都用于存储比较大的数据。它们的不同之处在于TEXT类型存储的是文本字符串,常用于存储文章或新闻的正文;BLOB类型存储的是二进制字符串,常用于存储图片和音乐等文件。

二、数据完整性约束

2.1、主键约束-PRIMARY KEY

主键,也称主码,用于标识表中唯一的一条记录。一张表中只能有一个主键,并且主键值不能为空。设置主键约束的关键字为 PRIMARY KEY

-- 字段 数据类型(长度) primary key
或者
-- primary key(字段)

2.2、自增约束-AUTO_INCREMENT

在向数据表中插入数据时,如果用户希望每条记录的“编号”自动生成,并且按顺序排列,可以为该字段设置自增约束。设置自增约束的关键字为AUTO_INCREMENT

-- 字段 数据类型(长度) auto_increment
-- 注意:
	-- 一张表中只能设置一个字段为自增约束,并且该字段必须为主键。
	-- 默认的初始值为1,每增加一条记录,字段值自动增加1。
	-- 字段类型必须为整数型。

2.3、非空约束-NOT NULL

设置非空约束的关键字为NOT NULL,作用是规定字段的值不能为空,用户在向数据表中插入数据时,设置非空约束的字段必须要给值。

-- 字段 数据类型(长度) not  null

2.4、唯一约束-UNIQUE

设置唯一性约束的关键字为UNIQUE,作用是规定字段的值不能重复,比如学号字段,身份证字段就可设置唯一约束

-- 字段 数据类型(长度) unique
或者
-- unique(字段)

2.5、默认约束-DEFAULT

设置默认约束的关键字为DEFAULT,作用为该字段设置一个默认值,当添加数据时不给该字段添加值时,该字段就会填充默认值

-- 字段 数据类型(长度) default '默认值'

2.6、外键约束-FOREIGN KEY

设置外键约束的主要作用是保证数据的完整性。外键可以不是所属数据表的主键,但会对应着另外一张数据表的主键,例如有两个表:学生表和班级表之间具有一定关系,学生表中会有一个字段存储班级的编号,而此字段就能关联班级表的信息,通过该字段就能查询到班级信息,那么就可以将班级表的主键引入到学生表中作为外键。

CONSTRAINT 外键名 FOREIGN KEY(外键字段) REFERENCES 主键表(主键)

三、数据库基本操作

数据库的基本操作主要包括创建、查询、更新和删除,以下是相应的语法示例:

#创建数据库:
	CREATE DATABASE database_name;
#判断数据库是否存在,如果不存在则创建:
	CREATE DATABASE IF NOT EXISTS database_name;
#创建数据库并指定字符集:
	CREATE DATABASE database_name CHARACTER SET charset_name;
	
#查询所有数据库的名称:
	SHOW DATABASES;
#查询某个数据库的字符集:
	SHOW CREATE DATABASE database_name;
	
#选择数据库
	use database_name;
#删除数据库
	drop database database_name;
	

四、数据表结构的基本操作

数据表结构的操作,包括创建表,修改表结构,对表中的字段进行添加,删除,修改,删除表等操作

4.1、创建数据表语法

创建数据表,实际上是规定列属性和实现数据完整性约束的过程,基本语法形式如下:

1.创建一个数据表
	1.1建表语法:
		create  table 表名(
			字段名1 数据类型(长度) 约束条件 comment'注释',
			字段名2 数据类型(长度) 约束条件 comment'注释'
		);
	1.2约束条件
		主键约束	primary key
		自增约束	auto_increment
		非空约束	not NULL
		唯一约束	unique
		默认约束    default 默认值
		外键约束    ONSTRAINT key_name FOREIGN KEY(child_col_name) REFERENCES parent_table_name(parent_col_name)

2.查看数据库表
	2.1查看表结构
		desc 表名;
	2.2查看建表语句
		show create table 表名;
3.修改(alter)表结构
	3.1修改表名
		alter table 表名 rename  新表名;
	3.2修改表的字段的数据类型
		alter table 表名 modify 字段 新类型 [约束条件]; 
	3.2修改表的字段
		alter table 表名 change 旧字段 新字段 类型 [约束条件];
	3.3添加表的字段
		alter table 表名 add 字段名 数据类型 [约束条件];
	3.4删除表的字段
		alter table 表名 drop 字段名;
4.删除表
	drop table [if exists] 表名;

4.2、创建数据表示例

根据下表的创建商品信息表image-20231130102352987

create table goods (
	id int(11) not null primary key  auto_increment comment'商品编号',
	type varchar(30) not null comment '商品类型',
	name varchar(20) unique comment '商品名称',
	price decimal(7,2) comment '商品价格',
	num int(11) default 0 comment'商品库存',
	add_time datetime comment '添加时间'
);
#设置主键约束和唯一约束的第二种方式
create table goods1(
	id int(11) auto_increment  comment'商品编号',
	name varchar(20) comment '商品名称',
	type varchar(30) not null,
	price decimal(7,2) comment '商品价格',
	num int(11) default 0 comment'商品库存',
	add_time datetime comment '添加时间',
	primary key(id),  #主键约束
	unique(name)  # 唯一约束
);

4.3、查看表结构

-- 查看表的基本结构
describe goods1;
desc goods1;
-- 查看建表语句
show create table goods1;

4.4、修改表结构

-- 创建表
drop table if exsits user;
create table user(
	id int(10) not null auto_increment primary key,
	name varchar(20) not null,
	nickname varchar(20) not null,
	password varchar(20) not null,
	sex tinyint(1),
	email varchar(20) not null,
	cellphone char(10) not null,
	date int(10) not null
);
-- 1.修改表名: alter table 旧表名 rename 新表名 ;
alter table user rename tb_user;

-- 2.修改字段的数据类型: alter table 表名 modify 字段名 新的数据类型 [约束条件]
alter table tb_user modify date  datetime;

-- 将 tb_user表汇中的date字段修改为 create_date
-- 3.修改表的字段: alter table 表名 change 旧字段 新字段 数据类型 [约束条件]
alter table tb_user change date create_date datetime;

-- 4.添加字段:alter table 表名 add  字段名称 数据类型(长度) [约束条件]
-- 向tb_user表中添加一个用户头像字段
alter table tb_user add img_url varchar(50);
-- 向tb_user表中添加一个身份证号的字段,添加到邮箱(email)字段之后
alter table tb_user add sfzh varchar(18) after email 

-- 5.删除字段:alter table 表名 drop 字段名称
-- 删除tb_user表中的img_url字段
alter table tb_user drop img_url

-- 6.删除表 :drop table [if exists] 表名;
drop table if exists tb_user;

五、数据的增删改

5.1、向表中添加数据-insert

-- 语法:
	-- insert into 表名(字段1,字段2,字段3,...,字段n) values(值1,值2,值3,...,值n);
-- 示例:向商品表中添加一条数据
	insert into goods(id,name,type,price,num,add_time) values(null,"三国演义","书籍",79.8,200,"2023-11-29");
	insert into goods(name,type,price,num,add_time) values("水浒传","书籍",79.8,200,"2023-11-29");
	insert into goods(name,type) values("西游记","书籍");
	insert into goods values(null,"书籍","红楼梦",30.9,20,null);
-- 注意:
	-- 1.字段需要和值进行一一对应(顺序,类型,个数)
	-- 2.自增长的主键不需要手动添加值,可以使用 null 填充
	-- 3.not null 约束的字段 必须要给值
	-- 4.字段可以省略,省略了字段之后,默认添加所有字段的值。
-- 通过添加多个值:
	-- insert into 表名(字段1,字段2,字段3,...,字段n) values(值1,值2,值3,...,值n),(值1,值2,值3,...,值n),(值1,值2,值3,...,值n);
-- 示例:
	insert into tb_stu(stu_name,stu_age)values("张三1",20),("张三2",20),("张三3",20);
	

5.2、修改数据-update

-- 语法:
	-- update 表名 set 字段1 = 值,字段2=值,字段n = 值 [where 限制条件];
-- 示例:
	update goods set num=10000; #修改所有数据
	update goods set num = 100 ,name = "《水浒传》" where id = 3; #根据条件修改数据

5.3、删除数据-delete

-- 语法:
	-- delete from  表名 [where 限制条件];
-- 示例:
	delete from goods; #删除所有数据
	delete from goods where id = 1; # 根据条件删除数据

标签:约束条件,字节,--,数据类型,字段,表名,增删,table,name
From: https://www.cnblogs.com/coderkdf/p/17866915.html

相关文章

  • Redis数据类型操作和应用场景
    String常用指令#设置key-value类型的值>SETnamepan#根据key获得对应的value>GETname#判断某个key是否存在>EXISTSname#返回key所储存的字符串值的长度>STRLENname#删除某个key对应的值>DELname#批量设置key-value类型的值>MSET......
  • go数据类型-空结构体、空接口、nil
    空结构体funcmain(){ a:=struct{}{} fmt.Println(unsafe.Sizeof(a)) fmt.Printf("%p\n",&a)}打印00x117f4e0有经验的开发人员都知道,所有的空结构体是指向一个zerobase的地址,而且大小为0一般用来作结合map作为set或者在channel中传递信号。t......
  • go数据类型-sync.map
    定义在runtime的sync.map包中有定义:typeMapstruct{ muMutex//锁 readatomic.Pointer[readOnly]//包含了readOnly类型的一个struct,下方把Pointer也贴了 dirtymap[any]*entry //一个map存储数据 missesint//错过、没有命中}//readOnlyisanim......
  • 基本数据类型-C语言-2023/11/29
    ......
  • go数据类型-map
    go的map在面试时候经常会被问到。最近看到群里有个被问到为什么map的每个桶中只装8个元素?map的结构注:解决hash冲突还有一些别的方案:开放地址法(往目标地址后面放)、再哈希法(再次hash)底层定义//AheaderforaGomap.typehmapstruct{//个数sizeofmap,当使......
  • 基本数据类型的包装类
    基本数据类型的包装类基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean......
  • 基本数据类型
    基本数据类型一、有哪些基本数据类型数字类型整数类型(int)浮点类型(float)字符串类型(str)列表类型(list)字典类型(dict)布尔类型(bool)元组类型(tuple)集合类型(set)二、为什么要学习基本数据类型有助于我们理解不同的基本数据类型在计算机中的表示和操作方......
  • go数据类型-slice底层
    切片的底层数据结构有上篇string为基础了,能猜到slice肯定也有一个对应的struct。在runtime的slice.go中typeslicestruct{ arrayunsafe.Pointer lenint capint}切片的本质是对数组的引用len表示当前已经存储的个数,cap表示容量。切片的创建......
  • 八大基本数据类型
    八大基本数据类型1.整型int2.浮点型float3.字符串型str4.列表list5.字典dict6.布尔类型bool7.元组tuple8.集合set(一)数字类型【1】整型int(1)作用整数类型用于表示整数,是一种基本的数字类型,广泛用于表示计数、索引等整数值。(2)整型定义#1.整型定义number=18#查看......
  • python基础之数据类型
    数据类型(重要)什么是数据类型? 视频文件音频文件表格文件图片等等这些都是保存数据的方式#在IT领域也有各种各样的保存数据的方式数据类型的种类?-数字类型-整数类型(int)-浮点类型(float)-字符串类型(str)-列表类型(list)-字典类型(dict)-布尔类型(......