内容小结:这篇学习了时间数据类型,要注意区分datetime与时间戳timestamp,后者具有自动更新特征,同时也第一次了解到主键,修改表的结构是重点内容,其中包含了很多语句内容,需要及时复习。最后要注意在终端操作时一定不能遗漏;分号代码使用:创建表中时间数据类型语句、设置主键语句、修改表结构的Alter系列语句上面用表格形式整理总结了时间数据类型的分类和各自的特点,下面是语句的具体实现:CREATE TABLE IF NOT EXISTS t13 ( id INT PRIMARY KEY AUTO_INCREMENT, birthday DATE, -- 生日(仅日期) work_hours TIME, -- 每日工作时长(仅时间) create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间(默认当前时间) update_time TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 修改时间(自动更新) join_year YEAR -- 入职年份) DEFAULT CHARSET utf8mb4;
下面我选几个之前没有遇到过的语句功能进行展开介绍: id INT PRIMARY KEY AUTO_INCREMENT
- 创建了一列数据,名称为id,并设置为主键,开启自动递增功能。
- 「PRIMARY KEY」设置主键,主键是数据表中每一行数据的 “唯一身份证号”,必须满足「唯一不重复」+「非空(NOT NULL)」;设置主键后可以进行快速查询,比如
SELECT * FROM user WHERE id=1,比无主键的表查询快几十倍 - 「AUTO_INCREMENT」主键自动递增,插入新记录时,不用手动给主键赋值,MySQL 会自动分配一个「比上一条记录的主键值大 1」的数值。例如,利用下面的语句进行添加数据时,系统可以自动为其分配递增的id数字
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);
另外一个就是上面表中提到的,要注意「DATETIME」与「TIMESTAMP」之间的区别create_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 创建时间(默认当前时间)update_time TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- 前者是无自动更新特征的,我们下面语句中只是以当前时间进行填充,后面是有自动更新特征的。但是需要一些特定的命令激活。
-- 安全删除(推荐):表存在才删除,无则不报错DROP TABLE IF EXISTS 表名;-- 批量删除多个表DROP TABLE IF EXISTS 表名1, 表名2, 表名3;
请注意,我们这里只给出了修改表格结构,并不是修改表中的某条具体数据,那要用到update,是我后面学习的内容了。下面给出了更加全面的总结:下面是具体的语句实现,其实知道上表中的内容已经够用了。# 修改表的操作练习SELECT*FROM t14_emp-- 员工表t14_emp上增加一个image列,varchar类型,要在resume后面ALTER TABLE t14_emp ADD image VARCHAR(32) NOT NULL DEFAULT '' AFTER RESUMEDESC t14_emp --显示表结构,可以查看表的所有列
-- 修改job列,使其长度为60ALTER TABLE t14_emp MODIFY job VARCHAR(60) NOT NULL DEFAULT ''-- 删除sex列ALTER TABLE t14_empDROP sex-- 表名改为employeeRENAME TABLE t14_emp TO t14_employeeSELECT*FROM t14_employee
-- 修改表的字符集为utf8ALTER TABLE t14_employee CHARSET utf8DROP sex-- 列名name修改为user_nameALTER TABLE t14_employee CHANGE `name` `user_name` VARCHAR(32) NOT NULL DEFAULT ''DESC t14_employee
此处,数据库一些基本操作就算是学会够用了,但是这里你会有一个疑问,我现在都是在sqlyog中进行的啊,如果只用终端,我怎么办呢?其实是一样的,只要连接进入数据库,输入相应语句就可以进行操作了。- 注意一点,语句末尾加分号
;。在 MySQL 命令行交互模式下,分号是语句结束的标志。如果没有它,MySQL 会认为你还没写完,会在下一行显示 -> 提示符,等待你继续输入。