文章目录
一、表的创建
语法
creat table 表名
{
字段名1 数据类型,
字段名2 数据类型,
………………
};
1、MySQL常用数据类型
数据类型 | 占用字节数 | 说明 |
---|---|---|
int | 4字节 | 整型 |
bigint | 8字节 | 长整型,类似long |
float、double | 浮点数 | |
char | char(n) | 定长字符串 |
varchar | varchar(n) | 变长字符串 |
date | 日期类型,时间和日期 | |
blob | 二进制大对象(存储图片、视频等流媒体信息),类似类对象 | |
clob | 分为四种TINYTEXT , TEXT , MEDIUMTEXT , LONGTEXT | 字符大对象,比如:可以存储4GB的字符串,类似类对象 |
char和varchar的却别?
- 都是字符串
- char不需要动态分配空间,执行效率高,但是可能会造成空间的浪费
- varchar比较智能,会根据数据的长度分配空间,但是效率比较低
- 若字段中的数据不具备伸缩性,建议采用char类型存;若字段中的数据具备伸缩性,则建议使用varchar
例如:某张表的name字段类型如果是char(6),则它会分配6个字节的空间用来存储,此时存储一个名字为’jack’,只占4个字节,那么char(6)就会浪费2个字节的空间,如果名字超过了6个字节则会报错;
如果name字段时varchar(6),则它会根据你存储数据的大小动态分配空间,若此时你存储’jack’,只需4个字节,那么它就会分配4个字节的空间,而不是6个,不会造成空间的浪费!
2、创建一张学生信息表
表名一般建议以t_或者tbl_开始,方便辨认
create table t_info(
Name varchar(10), #创建名字字段,数据类型为可变字符型最大10字节
Sex char(1), #创建性别字段
Id bigint, #创建学号字段
Email varchar(20),
Birthdar date
);
二、向表中插入数据
①字段名和值名全写
语法
insert into 表名(字段名1,字段名2,……)
values(值1,值2,……);
- 字段的数量和值的数量应该相同,并且数据类型一致
- 字段顺序可以更改,值中的顺序应该和字段中的顺序一致
- 插入时只插入部分字段也可以,别的字段为默认值(defaule),这里为null(查看表的结构可以看出该字段的默认值)
示例:向表中插入数据
insert into t_info(Name,Sex,Id,Email,Birthdar) values('zhangsan','1',20200101,'12@qq.com','1995-05-06');
insert into t_info(Name,Sex,Id,Birthdar) values('niuniu','0','20200102','1995-06-01');
#第二个插入语句没有对email字段赋值,因此为默认值(这里为null)
插入成功后表中的数据为
②省略字段名只写值
语法:
insert into 表名 values(值1,值2,……);
- 字段可以省略不写,只写值。但是值的顺序必须和表的字段名顺序一致,且值中不可缺省,写全了
③一次插入多条数据
insert into 表名 values
(值1,值2,……),
(值1,值2,……),
(值1,值2,……),
…………;
示例:
一次插入三条数据
insert into t_info values
('lisi',0,'20200104','123@qq.com','1996-01-01');
('zhaosi',1,'20200103','233@qq.com','1996-07-12'),
('laotie',0,'20200105','123@qq.com','1995-07-01');
三、复制表(按照查询结果创建新表)
语法:
create table 新表 as select 语句;
示例:
①、复制emp表为emp2表,会多出一张emp2表和emp表一毛一样
create table emp2 as select * from emp;
②、将emp表的ename字段和job字段,组成一张新表叫emp3
create table emp3 as select ename,job from emp;
四、将查询结果插入一张表中
insert into 被插入的表名 select 语句; #表结构要一致
示例:
# 拷贝dept表,生成新表dept1
create table dept1 as select * from dept;
# 将dept表的查询结果插入到dept1中
insert into dept1 select * from dept;
五、修改表中的数据
语法:
update 表名 set 字段名1=值1,字段名n=值n where 条件;
没有条件限制的整张表的字段会被更新
示例:在t_info表中将姓名为niuniu的人的email改为niuniu@foxmail.com,生日改为2020-12-20.
update t_info set email='niuniu@foxmail.com',Birthdar='2020-12-20' where name='niuniu';
六、删除表中的数据
语法:
delete from 表名 where 条件
没有条件则删除表中的所有数据
示例:删除工作岗位为clerk的员工信息
删除工作岗位为clerk的员工信息
delete from emp2 where job='clerk';
删除所有记录
delete from emp2;
七、删除一整张表
①、使用delete删除
delete from 表名
- 删除表全部数据,表结构不变,效率较低
②、使用truncate 删除
truncate table 表名;
- 删除表全部数据,保留表结构,效率高
③、使用drop删除
drop table 表名
- 删除表全部数据和表结构