MySQL入门学习笔记
第三章:表的相关操作
3.1 创建表的语句
3.1.1 建表的语法格式
create table 表名(
字段名 字段类型,
字段名2 字段类型,
字段名3 字段类型,
... ...
);
3.1.2 MySQL中常用的数据类型
int:整型
bigint:长整型
float:浮点型
char:定长型字符串
varchar:可变长型字符串
date:日期类型
blob:二进制对象,主要用来存储图片,视频等信息
3.1.3 char()和varchar()的区别
例如:
create table stu(id int,name char(6));中的char(6)表示stu表中的name最长可以存储6个字符的长度,如果长度不到6个字符,也会按照6个字符的长度进行存储。
create table stu(id int,name varchar(6));中的varchar(6)表示的stu表中的name最长可以存储6个字符的长度,如果长度不到6个字符,会按照实际的长度进行存储。
Oracle/SQL Server中:create table stu(id int,name varchar(6));name最长可以存储2个汉字(字符),原因是在以上的两个数据库管理系统中默认的字符集为utf-8,默认一个汉字占3个字节。
3.1.4 开始建表
-- 先建库
create database students;
-- 切换到studednts 数据库
use students;
-- 建表
create table stu_table(id int,name char(3),age int,sex char(1));
-- 最后查看表
show tables;
3.2 insert 插入数据
3.2.1 插入数据的语法格式
insert into 表名(字段1,字段2,字段3,...) values(值1,值2,值3,...);
-- 注意:前面的字段类型,要能够和后面的值进行匹配
举例:往 stu_table 表中插入数据 2022001 ‘张三’ 18 ‘男’
insert into stu_table(id,name,age,sex)values(2022001,'张三',18,'男');
3.2.2 查询数据
select * from 表名;
举例:查询出stu_table表中的所有数据
select * from stu_table;
3.2.3 查看表的定义
desc 表名;
举例:查看stu_table表的定义
desc stu_table;
3.2.4 交换值顺序进行插入数据
insert into stu_table(name,id,sex,age)values('李四',2022002,'男',19);
3.2.5 只写部分字段和对应的值
注意:没有插入的值会按照默认值进行插入,一般以null值进行插入
-- 插数据
insert into stu_table(id) values(2022003);
-- 查数据
select * from stu_table;
3.2.6 省略字段插入值
注意:插入的值要和默认的字段类型相匹配
insert into stu_table()values(2022004,'赵六',29,'男');
3.2.7 删除表
-- 方案1
drop table 表名;
-- 方案2(推荐)
drop table if exists 表名;
举例:将stu_table表删掉
drop table if exists stu_table;
3.2.8 修改默认值
举例:创建一张表叫stu_table2,有id,name,age,sex字段,将age的默认值设置为18
-- 建表
create table stu_table2(id int,name varchar(255),age int default 18,sex char(1));
-- 查看表定义
desc stu_table2;
3.2.9 一次性插入多条数据
注意:字段可以省略不写,但也要与字段类型相匹配
-- 插入数据
insert into stu_table(id,name,age,sex)values(2022001,'张三',20,'男'),(2022002,'李四',26,'男'),(2022003,'王五',21,'男');
-- 查看数据
select * from stu_table;
3.3 表的赋值及批量插入
3.3.1 select 复制整张表
-- 语法结构
create table 表名 as select * from 被复制的表名;
举例:将stu_table表进行复制,复制后的表叫做stu_table3
create table stu_table3 as select * from stu_table;
3.3.2 复制表中的部分字段
-- 复制表中部分字段
create table stu_table4 as select id,name from stu_table;
-- 查看数据
select * from stu_table4;
3.4 修改数据
-- 语法格式
update 表名 set 字段名1=值1,字段名2=值2,... where 条件;
-- 注意:如果不添加where条件将会默认修改整张表中的所有数据
举例:将stu_table表中的id为2022001的年龄改为30岁
update stu_table set age=30 where id=2022001;
3.5 删除数据
3.5.1 删除表中的部分数据
-- 语法格式
delete from 表名 where 条件;
--注意:如果不添加where条件默认会删除整张表中的数据
举例:删除stu_table表中年龄大于25岁的员工信息
delete from stu_table where age>25;
3.5.2 删除表中的所有数据
delete from 表名;
-- 不添加where条件就会删除表中的所有的数据
3.6 删除大表
-- 语法格式
truncate table 表名;
注意:当表的数据量比较大时,使用delete语句的执行效率会非常的低,因为delete语句删除的只是数据,并没有释放真实的存储空间,表结构还在。所以为了提高删除效率,可以采用truncate语句进行删除,但是删除数据之后,是不可以恢复的。
3.7 表结构的修改
3.7.1 修改表的字段
-- 语法结构
alter table 表名 modify 字段名称 字段类型;
举例:将stu_table表中的name 字段类型修改为varchar(10)
alter table stu_table modify name varchar(10);
3.7.2 添加表的字段
-- 语法格式
alter table 表名 add column 字段名 字段类型;
举例:在stu_table表中添加一个字段叫phone 字段类型为 int
alter table stu_table add column phone int;
3.7.3 删除表中的字段
-- 语法格式
alter table 表名 drop column 字段名称;
举例:删除stu_table表中的phone字段
alter table stu_table drop column phone;
3.8 修改表名
-- 语法格式
alter table 旧表名 rename to 新表名;
3.9 修改字段的名称
-- 语法格式
alter table 表名 change column 旧字段名 新字段名 字段类型;