数据库是容器,里面可以创建表,表必须属于哪个数据库

这样做的好处是:进行表操作时,都会指定当前的默认数据库

进入某个数据库中的操作:use database db_name

一、创建表

①语法:create table tb_name(列结构)[列选项]

列定义:列名 列的数据类型[列的属性(约束)] 不同列用","来连接,最后一个列后不用“,”

②简单的字符串类型:varchar(保留数据字符的长度)

日期类型:date

③因为表是依赖于数据库的,语法是: 数据库名.表名

先分析:需要保存的是实体数据,拥有哪些属性,这些属性应该如何保存

例如:班级的信息

班级班号,班级的开班时间

create table php_1.php_class(

class_no varchar(20),date_start date
);


注意以下图片中的操作,都是选定的php_1这个数据库的,所以不用指定数据库了。指定数据库的方法:use php_1

(3)表的增删改查_考试系统

二、查看表

①有哪些表:show tables[like ‘pattern’];

某个表的创建信息 ,like ‘pattern’表示只获取某种规则的表名

②查看某个表的创建信息:show create table tb_name;

氮素,在cmd中显示表格信息不容易观看,可以使用\G作为语句的结束符,而不是分号

③与数据库查看,特有的是:describe(或者desc) tb_name;查看表的数据结构

此图为②③演示

(3)表的增删改查_考试系统_02

④表名前缀:只有一个数据库,为了区分相同的逻辑表名的不同应用,给逻辑表名加逻辑前缀

比如有学生管理系统和在线考试系统,学生管理系统中有学生表student,在线考试系统中也有学生表,因为是不同的项目,所以可能命名都相同了,但是表的列可能不同,为了区分是哪个项目的,应该写表名前缀info_student exam_student

由此也引起了问题,在线考试系统的项目,不应该看到学生管理系统的表,应该互不干扰

比如查看在线考试系统里的所有表: show tables like ‘exam_%’

%:为通配符,表示任意字符的任意个数的组合

数据库也有类似的操作。

(3)表的增删改查_数据类型_03

创建和查询涉及到了两个系统,所以对其逻辑结构如下展示,以便方便查看代码

(3)表的增删改查_重命名_04

.frm保存的是表结构

数据库对应的是目录,数据库内容对应的是目录中的内容,文件

三、删除表

语法:drop table 表名

注意:若表不存在,则不能删除,会报错

只有在表存在的情况下,才能删除,所以更完整的语法格式:drop table[if exits] 表名

这样就不会报错了,即使表不存在。

下图:删除不存在的表,其实可以类比数据库

(3)表的增删改查_数据库_05

适用于数据库语法:drop database 数据库名

drop database if exists 数据库名

四、修改表

①修改表名(重命名)

语法:rename table oldtb_name to newtb_name;(同一数据库内)

支持同时修改多个表。

支持,跨数据库重命名:这个重命名相当于剪切,原来的数据库中删除了此表,另一个数据库中出现重命名的表

语法:rename table oldtb_name to 数据库名.newtb_name;

例子:交换两个表的名称

(3)表的增删改查_考试系统_06

②修改列定义

1)增加一个新的列定义:add 列名 数据类型;

alter table exam_stu add examTime varchar(20);

2)删除一个列:drop 列名;

alter table exam_stu drop examTime;

3)修改一个列定义:modify 列名 数据类型;(就是列名不变,但是数据类型改变)

alter table exam_stu change stu_no stuid varchar(30);

4)重命名一个列定义:change 旧列名 新列名 数据类型;

(列明都改变了,数据类型,即使不变,也要重新写)

alter table exam_stu modify score varchar(10);

③修改表选项:alter table exam_stu character set utf-8;