MySQL基础语法之创建表和对表中数据增删改的语法

Posted yuwenS.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL基础语法之创建表和对表中数据增删改的语法相关的知识,希望对你有一定的参考价值。

mysql基础语法之对表的操作语法

总结了MySQL中对表中的数据进行增删改的语法,和创建表的语法

向表中添加数据(insert)

向表中添加数据可以单条添加也可以批量添加

基本语法

  1. 单条添加
insert into 表名(字段,字段,字段...) values(字段值,字段值,字段值...)
//注意,字段和字段值要一一对应
insert into 表名 values(字段值,字段值,字段值...) //简写
// 不建议使用此种方式,因为当数据库表中的字段位置发生改变的时候会影响到 insert 语句

测试

insert into student(id,name,age,height) values(1,'张三','20','172');
  1. 批量添加
insert into 表名(字段,字段,字段...) values(字段值,字段值,字段值...),
(字段值,字段值,字段值...),(字段值,字段值,字段值...),...
//注意,字段和字段值要一一对应

测试

insert into student(id,name,age,height) values(1,'张三','20','172'),(2,'李四','19','173'),
(3,'王五','20','171');

怎么插入时间 ?

  1. 插入的日期格式和显示的日期格式一致
insert into student(id,name,start_time) values(1,'张三','2020-09-01')
  1. 采用 str_to_date

mysql的日期格式

格式含义
%Y
%m
%d
%h
%i
%s
insert into student(id,name,start_time) values(1,'张三',str_to_date('2020-09-01','%Y-%m-%d'))
  1. 添加系统日期 now()
insert into student(id,name,start_time) values(1,'张三',now()) //now()函数显示是现在系统的时间

修改表中的数据(update)

将你想进行修改的某些表中数据进行修改

基本语法

update 表名 set 字段 = 字段值,字段 = 字段值,字段 = 字段值... where 条件;

测试

将张三的年龄修改为21,身高修改为175

update student set age = 21,height = 175 where name = '张三';

删除表中数据(delete)

可以删除某张表某一条或一些数据,也可以删除一张表的全部数据

delete from 表名 where 条件   //删除一条或者一些数据
delete from 表名  //清空表中所有数据

如果是清空大批量的数据,将一张表的全部数据清空,还要另一种方法 truncate

truncate table 表名;
deletetruncate
原理:表中的数据被删除了,但是这个数据在硬盘上的真实存储空间不会被释放原理:这种删除效率比较高,表被一次截断,物理删除
缺点:删除效率比较低缺点:不支持回滚
优点:支持回滚,后悔了可以再恢复数据优点:快速

测试

delete from student where name = '张三'   //删除张三的所有信息
delete from student  //清空student表中所有数据
truncate table student;  //清空student表中所有数据 提示:物理删除

创建表(create)

在创建表中字段时,每一个字段都有字段删除线格式字段数据类型字段长度限制字段约束

基本语法

create table 表名(
	字段名 数据类型 字段长度限制 字段约束,    //数据类型看需求确定,字段约束看需求添加
	字段名 数据类型 字段长度限制 字段约束,
	字段名 数据类型 字段长度限制 字段约束,
	...
)

数据类型

类型描述
char(长度)定长字符串,存储空间大小固定,适合作为主键或外键
varchar(长度)变长字符串,存储空间等于实际数据空间
double(有效数字位数,小数位)数值型
Float(有效数字位数,小数位)数值型
Int(长度)整型
bigint(长度)长整型
Date日期型
blobBinary Large OBject(二进制大对象)
其他类型…

常见约束

非空约束 not null 约束字段的值不能为空
唯一约束 unique 约束字段的值不能重复只能唯一,可以为空
主键约束 primary key 标识记录的唯一性
外键约束 foreign key 主要是维护表之间的关系的

补充两点

  1. unique约束可以多个字段联合来作为约束
  2. primary key约束分为单一主键和复合(联合)主键,单一主键是由一个字段构成的,复合(联合)主键是由多个字段构成的

测试

  • student表
create table student(
	id int primary key,   //int类型的长度限制可以省略不写  id作为主键
	student_id  char(11) not null unique,  //学生学号,唯一且不为空
	name varchar(50)  not null,   //学生姓名,不为空
	cno int //外键 班级id
	foreign key(cno) references class(id) // 将班级表class的主键id作为该表的外键
)
  • class表
create table class(
	id int primary key,  //班级id 作为主键也是student表的外键
	class_name varchar(255) not null unique  //班级名称,唯一且不为空	
)

外键不一定是另一张表的主键,因为外键可以为空,所有一般只需要保证作为外键的那个字段唯一

测试unique和primary key约束的联合约束

  • student表
create table student(
	id int primary key,   //int类型的长度限制可以省略不写  id作为主键
	student_id  char(11) not null,  //学生学号,唯一且不为空
	name varchar(50)  not null,   //学生姓名,不为空
	cno int //外键 班级id
	foreign key(cno) references class(id) // 将班级表class的主键id作为该表的外键
	unique(student_id,name) // 学生学号和姓名联合起来不唯一 约束没有添加在列的后面,这种约束被称为表级约束。
)
  • class表
create table class(
	id int,  //班级id 作为主键也是student表的外键
	class_name varchar(255) not null //班级名称,唯一且不为空	
	primary key(id,class_name) // 班级id和班级名称联合起来作为主键
)

在实际开发中不建议使用复合主键,建议使用单一主键

提示

创建有主外键的表的是时候,先创建有作为外键字段的表,再创建引用它的字段作为外键的表,如果是删除则是反着来,先删除引用外键的表,再删除作为外键的表

以上是关于MySQL基础语法之创建表和对表中数据增删改的语法的主要内容,如果未能解决你的问题,请参考以下文章

mysql--对行(表中数据)的增删改查

MySQL基础增删改查

MySQL基础增删改查

Day461.数据处理之增删改 -mysql

Day461.数据处理之增删改 -mysql

mysql 基础sql语法总结