点击上方「蓝字」关注"程序员Bob"
每天与你不见不散!
每日一句,送给最珍贵的你:
生命中真正重要的不是你遭遇了什么,而是你记住了哪些事,又是如何铭记的。
上次小编聊了关于MySQL的库操作,不知小伙伴是否还记得,如果想要熟练掌握,还是自己得多多上机实操啦。传送门:
小编将上次SQL的基本操作根据操作对象分为了三类,即:库操作;表操作(字段);数据操作。
聊完库操作,小编就可以开始表操作啦~
表操作
数据表:DataTable 是一个临时保存数据的网格虚拟表(表示内存中数据的一个表)。且表与字段是密不可分的。
对于表操作,小编这里也是将其分为对数据表的增删改查。
新增数据表
在对数据表进行操作之前,我们得先新建一个数据表,既然是表,我们就得将表分配在数据库中。在命令行窗口中,新建表的大致思路便是先选定所需数据库(必须先选定数据库),然后新建数据表。
新建数据表大致语句如下:
create table [if not exists] 表名(字段名字 数据类型,字段名字 数据类型 -- 最后一行不需要逗号)[表选项];
新建表语句说明:
1.if not exists:如果表名不存在,那么就创建,否则不执行创建代码,即为检查功能。
2.表选项:控制表的表现形式
字符集:
charset/character set 具体字符集:-- 保证表中数据存储的字符集;
校对集:
collate 具体校对集;
存储引擎:
engine 具体的存储引擎(innodb和myisam);
不知
大家有没有发现上面的新建数据表语句其实有一个问题,即前面所说的没有指定数据库,那么我们该如何指定数据库呢,小编这里提供两种解决方案:
1.显示的指定表所属的数据库:
create table 数据库.表名();即将当前数据表创建到指定的数据库下。
语句如下:
create table if not exists mydatabase.student(-- 显示的将表放到mydatabase数据库下)name varchar(10);gender varchar(10);number varchar(10);age int);charset utf8;
2.隐式的指定表所属数据库:先进入到某个数据库环境,然后这样创建 的表自动归属到某个指定的数据库。
相关语句执行如下:
#进入数据库环境:use 数据库名字;-- 进入数据库->创建数据表use madatabase; #分开执行create table class( #创建表name varchar(10);)charset utf8;
那么当我们创建数据表的SQL语句被执行之后,会发生些啥呢?
指定数据库下已经存在对应的表。
在数据库对应的文件夹下,会产生对应表的结构文件(跟存储引擎有关系) To:.frm为结构文件(编译文件(可逆文件),需要反编译才能看)。
查看数据表
查看数据表:数据库能查看的方式都可以查看。
查看所有表语句:show tables;
查看部分表,模糊匹配语句为:show tables like 'pattem'; 如:show tables like '%s';(不推荐,效率低)
查看表的创建语句:show create table 表名;
查看表结构:查看表中的字段信息,Desc/describe/show columns from 表名;
相关语句执行如下:
-- 查看所有表show tables; -- (先使用use进入数据库再执行语句)
执行如下:
相关语句执行如下:
-- 查看以s结尾的表-- (先使用use进入数据库再执行语句)show tables like '%s'; #效率低
执行如下:
相关语句执行如下:
-- 查看表创建语句show create table student\g -- \g==;show create table student\G -- 将查到的结构旋转90度变成纵向,有时候看起来舒服一点
执行如下:
相关语句执行如下:
#查看表结构desc tables;
执行如下:
修改数据表
表本身存在,还包含字段,表的修改分为两个部分:修改本身和修改字段。
修改表本身,表本身可以被修改,即修改表名和表选项。
修改表名语句:rename table 老表名 to 新表名;
修改表选项分为:字符集,校对集和存储引擎。语句为:Alter table 表名 表选项 [=] 值;
修改字段,关于字段操作很多:新增,修改,重名,删除。
1.新增字段语句:Alter table 表名 add[column(可有可无)] 字段名 数据类型 [列属性] [位置]; 位置:字段名可以存放在表中的任意位置 First:第一个位置;After:在哪个字段之后:after 字段名;默认是在最后一个字段之后。
相关语句执行如下:
-- 重命名表->my_student(取数据库名字前两个字母)rename table student to my_student-- 修改表选项:字符集alter table my_student charset=GBK;-- 给学生表增加ID放到第一个位置alter table my_studentadd column id intfirst; -- mysql自动寻找分号:作为结束符
2.修改字段语句(修改通常是修改属性或者数据类型):alter table 表名 modify 字段名 数据类型 [属性] [位置] ;
相关语句执行如下:
-- 将学生表中的number学号字段变成固定长度,且放到第二位(id之后)alter table my_studentmodify number char(10) after id;
执行如下:
3.重命名字段语句:alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置];
相关语句执行如下:
-- 修改学生表中的gender字段为sexalter table my_studentchange gender sex varchar(10);
执行如下:
4.删除字段语句:alter table 表名 drop 字段名;
切记:如果表中已经存在数据,那么删除字段会清空该字段的所有数据(不可逆)。
相关语句执行如下:
-- 删除学生表中的年龄字段(age)alter table my_student drop age;
执行如下:
往期推荐:
为你,千千万万遍.
关注程序员Bob公众号,与你一起终生学习
一键三连,就差你了