设置主键并自动增长;设置字段自动创建当前时间;创建及删除索引

本文详细介绍如何在SQL中设置ID字段自动增长并作为主键,添加自动生成创建时间的字段,修改字段排列位置,以及如何添加和删除索引,通过实例演示了完整的操作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、设置ID字段自动增长,并将此字段设置为主键

USE tb_test;
CREATE TABLE ljh_one
(
ID INT(11) PRIMARY KEY auto_increment,
name VARCHAR(25),
dept_id INT(11),
salary FLOAT
);

在这里插入图片描述

2、增加一个字段,插入数据记录时该字段可以自动生成创建当前时间

datetimetimestamp的区别:
  • datetime的默认值为NULL,timestamp的默认值不为NULL,且为系统当前时间(current_timestatmp)。如果不做特殊处理,且update没有指定该列更新,则默认更新为当前时间。
  • timestamp是有最大年份限制。
  • datetime占用8个字节,timestamp占用4个字节。timestamp利用率更高。
  • 二者存储方式不一样: timestamp把客户端插入时间从当前时区转化为世界标准时间(UTC)进行存储,查询时,逆向返回。
    datetime,基本上存什么是什么。
  • 二者范围不一样。timestamp范围:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’; datetime范围:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。(原因是,timestamp占用4字节,能表示最大的时间毫秒为2的31次方减1,也就是2147483647,换成时间刚好是2038-01-19 03:14:07.999999。)
ALTER TABLE 表名 ADD create_time INT(11) AFTER name(字段名);
alter table tb_emp1 modify column create_time datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ;
SELECT*FROM tb_emp1;

举例

drop table if exists tb_courses;
CREATE TABLE tb_courses
(    
course_id INT NOT NULL AUTO_INCREMENT,    
course_name CHAR(40) NOT NULL,    
course_grade INT NOT NULL,    
course_info CHAR(100) NULL,    
PRIMARY KEY(course_id),
create_time INT(11) NULL    
);
INSERT INTO tb_courses                              
(course_id,course_name,course_grade,course_info) VALUES (1,'Network',3,'Computer Network');
SELECT * FROM tb_courses;
alter table tb_courses add index one (course_name);
alter table tb_courses add index two (course_id);
alter table tb_courses modify column create_time datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';
INSERT INTO tb_courses    (course_name,course_info,course_id,course_grade)     VALUES('Database','MySQL',2,3); 
INSERT INTO tb_courses    (course_name,course_info,course_id,course_grade)     VALUES(3,'java',4,7);
SELECT * FROM tb_courses;

在这里插入图片描述

3、修改字段排列位置
ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名2 

在这里插入图片描述

4、增加name 和 dept_id两个字段 ,在这两个字段的基础上添加索引和删除索引

alter table 表名 add index one (name);
alter table 表名 add index two (dept_id);
show index from ljh_one;
alter table ljh_one drop index one;
show index from ljh_one;

在这里插入图片描述

创建表并设置ID字段为主键,通过create_time字段显示创建记录时间,创建索引,并向表中添加数据
USE tb_test;
drop table if exists ljh_two;
CREATE TABLE ljh_two
(
ID INT(11) PRIMARY KEY,
name CHAR(25),
dept_id INT(11),
create_time datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
);
alter table ljh_two add index one (name);
alter table ljh_two add index two (dept_id);
show index from ljh_two;
INSERT INTO ljh_two (ID,name,dept_id) VALUES (5,'happy',8);
INSERT INTO ljh_two (ID,name,dept_id) VALUES (1,'good',3);
SELECT * FROM ljh_two;


windows结果
在这里插入图片描述

阿里云服务器结果
由于我这边Linux服务器运行上述sql语句会报错,所以我把sql语句中的datetime换成了timestamp NOT NULL
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值