MySQL之DDL(create,drop,alter)和DML(insert,delete,update)

请添加图片描述

一,表的创建

1.语法格式

create table 表名(
	字段名1 数据类型,
	字段名2 数据类型,
	......
	字段名n 数据类型
);

那么我们现在来创建一个t_student表,要求字段有:学号,姓名,性别,年龄,email)

create table t_student(
	no int,
	name varchar(23),
	sex char,
	age int,
	email varchar(255)
);

在这里插入图片描述
上面代码有些数据类型不知道是什么没关系,下面会开始讲数据类型。

2.MySQL中的数据类型

符号数据类型
varchar可变长度字符串
char定长字符串
int整数类型
bigint超大整数类型
float单精度浮点数类型
double双精度浮点数类型
date短日期类型
datetime长日期类型
clob字符大对象
blob二进制大对象

bigint :类似Java中的long长整型。
date :短日期类型包含年,月,日。
datetime :长日期类型包含年,月,日,时,分,秒。

date和datetime的使用方法会在插入数据中的插入日期中讲述。

clob:字符大对象能够存储4G的字符串,通常用来存储文章或长度超过255的字符串。
blob:二进制大对象存储图像,声音,视频等流体数据。(注意:往blob类型传入数据时,需要使用IO流进行传输)

3.varchar和char

varchar可变长度字符串,其中的可变长度体现在哪呢?
假设varchar(10)里存储了’JACK’字符串,那么’JACK’字符串只占有4个空间。
char定长字符串
假设char(10)里同样存储了’JACK’字符串,那么’JACK’字符串占有10个空间。
通过这样的对比,应该能够理解varchar和char的区别了吧。

4.快速复制表(了解)

语法:

create table 表名 as select语句;

原理:将查询结果当做一个新表。
such:

create table t_stu_2 as select * from t_student;

在这里插入图片描述

!!!特别需要注意的是,在建表时,数据类型不能直接写varchar,必须规定varchar的长度

二,表的删除

1.语法格式

drop table 	表名;

按照上面代码的写法的话,如果表不存在,就会报错。
在这里插入图片描述
那么要防止报错,就得说到另一种删表的写法,且这种写法是非常常用的。

drop table if exists 表名;

在这里插入图片描述

三,表的修改

四,插入数据

1.语法格式

insert into 表名(字段名1,字段名2,...) values(1,2,...);

!!!:字段的数据类型应该与值的数据类型一一对应。
我们用上面创建的表t_student
在这里插入图片描述

insert into t_student (no,name,sex,age,email) values(10101,'Wang','M',19,'wang@qq.com');

在这里插入图片描述

insert语句一旦执行成功,那么必然会多一条记录

2.省略字段名

省略部分字段名

首先我们试试省略部分字段名

insert into t_student(no) values(232144);

在这里插入图片描述
通过插入后的数据我们可以发现,省略了的字段默认变成了null。
结论:如果在插入时,为给其他字段指定值,则默认为null
那么我们能不能修改一下这个默认值呢。
当然可以我们可以在创建表的时候添加defaoult就行

create table t_student(
	no int,
	name varchar(23),
	sex char(1) default 'M',
	age int(3),
	email varchar(255)
);

在这里插入图片描述
可以看到现在sex的默认值改成了’M’
那么我们再插入一条数据试试。
在这里插入图片描述

省略全部字段名

insert into t_student value(2312);

在这里插入图片描述
报错的原因是,行数和值的数量不匹配。
原因是:若将字段名全部省略,则默认插入所有字段,所以都得写上

insert into t_student values(2312,'Wang','F',20,'Wang@123.com');

在这里插入图片描述

3.插入多条数据

语法:

insert into 表名
	(字段1,字段2,...)
values
	(1.1,1.2,...),
	(2.1,2.2,...),
	.......;

such:

insert into t_user
	(name,birth,create_time)
values
	('Wang','1992-08-09',now()),
	('Zhang','1997-10-23',now()),
	('Yang','2000-01-19',now());

在这里插入图片描述

4.插入日期

两个跟日期有关的函数:
str_to_date:将varchar转换为date
date_format:将date转换为varchar

MySQL中的默认日期格式

MySQL中的日期格式

符号含义
%Y
%m
%d
%h
%i
%s

date短日期默认格式:%Y-%m-%d
datetime长日期默认格式:%Y-%m-%d %h:%i:%s

插入日期要使用的表t_user
在这里插入图片描述

str_to_date函数(varchar→date)

格式:str_to_date(‘字符串日期’,‘日期格式’)
str_to_date函数通常使用在insert语句

insert into t_user(name,birth) values('Li',str_to_date('01-10-1990','%d-%m-%Y'));

在这里插入图片描述
如果你符合date短日期的日期默认格式(%Y-%m-%d),那么不用函数就会自动转换。

insert into t_user(name,birth) values('Ming','1998-05-17');

在这里插入图片描述
一样能够存进去。

date_format函数(date→varchar)

格式:date_format(日期类型数据,‘日期格式’)
date_format函数通常用在select语句

select
	u.name,date_format(u.birth,'%m/%d/%Y') as birth
from
	t_user u;

在这里插入图片描述

date和datetime的区别

datedatetime
含义短日期,只包含年,月,日长日期,包含年,月,日,时,分,秒
日期默认格式%Y-%m-%d%Y-%m-%d %h:%i:%s
insert into t_user(name,birth,create_time) values('Wang','2000-04-09','2022-08-30 12:08:00');

在这里插入图片描述

获取当前系统时间的函数–now()

now():MySQL中获取当前系统时间的函数,并且返回的数据类型是datetime。

insert into t_user(create_time) values(now());

在这里插入图片描述

将查询结果插入表中(了解)

语法:

insert into 表名 select语句;

查询结果必须满足表的结构

insert into t_user select * from t_user;

在这里插入图片描述

五,删除数据

1.语法格式

delete from 表名 where 条件

如果没有条件限制会导致整张表的数据都被删除(只是数据,不是表的结构)

delete from t_user where name='Wang';

在这里插入图片描述
试试不加限制条件

delete from t_user;

在这里插入图片描述

2.快速删除表中数据(truncate)

truncate属于DDL语句,而delete属于DML语句

delete from 表名

原理:一个一个数据的删,但是硬盘上的真实存储空间不会释放。
缺点:效率低
优点:支持回滚(如何回滚会在事务中讲解),可以恢复数据

truncate table 表名

truncate只能删除整张表内的数据,不能删单条
truncate不会删除整张表,只是删除表内的数据
原理:表被一次截断,物理删除
缺点:不支持回滚
优点:快
语法:

truncate table 表名;

六,更新数据

1.语法格式

update 
	表名 
set 
	字段名1=1,
	字段名2=2,
	...
where
	条件

如果没有条件限制会导致所有的数据全部更新

update
	t_user u
set
	u.name='JACK',
	u.birth='1988-01-23'
where
	u.name='Li';

在这里插入图片描述
试试不加限制条件

update
	t_user u
set
	u.name='JACK',
	u.birth='1988-01-23';

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值