写在最前
因为从这篇文章开始,就要开始操作数据库了,包括建库建表增删改查等等。
为了防止学习的时候有割裂感,找了MySQL和图形化软件教程贴出来,我看了过程,属于非常详细了。在这里非常感谢两位作者,这两篇教程如果帮助到屏幕前的你,欢迎点赞收藏支持两位作者!
安装MySQL
- 进入官网下载。
-
等待下载完成,双击开始安装。参考教程安装,配置环境变量。
安装图形化软件
安装好MySQL后,你可以在命令窗口敲命令执行学习,也可以安装一个图形化软件来学习。我推荐是用软件,方便很多,结果看起来也很只直观。
作者用的是HeideSQL,当然你想用其他的也无所谓,想用其他的肯定是安装好了甚至已经使用好了。这边再推荐一篇安装软件的教程。
语法
数据库的概念以及创建,前面已经讲过,这里不再重复。
从建表开始,我们开始将常用的一些语法,学会这些语法,能灵活使用。那么对于MySQL来说,已经是正是入门了。
明天就是高考,那么我们以高考学习为建表对象,创建一个表出来。当然,实际上的表肯定比我们这个复杂很多,而且不是一张表就能搞定的。
那么,我们来看建表语句:
CREATE TABLE IF NOT EXISTS `test_db`.`student` (
student_id INT NOT NULL AUTO_INCREMENT COMMENT '学生ID,唯一标识' PRIMARY KEY,
name VARCHAR(50) NOT NULL COMMENT '学生姓名',
sex CHAR(1) NOT NULL DEFAULT 'U' COMMENT '性别(M-男,F-女,U-未指定)',
birth_date DATE COMMENT '出生日期',
email VARCHAR(100) COMMENT '电子邮件地址',
phone VARCHAR(15) COMMENT '联系电话',
total_score INT COMMENT '高考总分',
chinese_score INT COMMENT '语文成绩',
math_score INT COMMENT '数学成绩',
english_score INT COMMENT '英语成绩',
science_score INT COMMENT '理科综合成绩',
humanities_score INT COMMENT '文科综合成绩',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
INDEX index_phone(phone)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='高考学生信息表';
关于这整个建表语句,我们一点点掰开来看:
创建一个表的语法。
CREATE TABLE IF NOT EXISTS `database_name`.`table_name`() ENGINE=engine_name DEFAULT CHARSET=utf8mb4 COMMENT=‘备注信息’。
- CREATE TABLE:这是一个固定句式,这里就是告诉数据库,我要建一个表 ,然后往后填一些表的信息。
- IF NOT EXISTS:这是一个选填的句式,意义是告诉数据库,假如这个表不存在的话,才会创建。如果没有这个,表又存在,那么执行建表语句会失败。
- database_name:库名,这样指定在某个数据库。
.
,这里特别标明一下这个点。这个点可以表明查询限定在点之前的库或者表。- table_name: 表名,通过3,4,5连用,表示在指定的库中创建表
- ():字段,也就是这个表的列,也可以叫做数据库对象的属性值。
- ENGINE=engine_name:这是在为表指定引擎。一般使用InnoDB就好了,每个引擎的特点是不一样的,作为入门,这里不用过多纠结,后面深入了会将关于数据库引擎的知识。
- DEFAULT CHARSET=utf8mb4:指定表的默认字符集,utf8mb4 是一种广泛使用的字符集,它支持存储任何Unicode字符,包括表情符号等4字节字符。在编写建表语句时,指定字符集是一个好习惯,可以确保数据以预期的方式存储和检索。
- COMMENT=‘备注信息’:这里是填写表的一些备注信息,通常用来描述表的作用,对象。
设计表字段的语法
column_name column_type allow_null default_value COMMENT 'xxx'
- column_name:列名。
- column_type:字段类型,通常会在类型后面带个(),里面填上长度。
- allow_null:该字段的值是否可以为null。如果可以就是NULL ,不可以的话就为NOT NULL。在我们设计表时,尽量不要设置为null。
- default_value:该字段值的默认值。当插入语句中该字段没有设定值的时候,会取默认值。通常情况下主键的默认值是自增的,使用AUTO_INCREMENT 表示。
- COMMENT ‘xxx’ :该字段的备注信息,通常描述字段的含义,取值范围等。
索引
INDEX index_phone(phone)
- INDEX: 固定语法,表示创建索引。也可以用KEY替代。
主键索引 PRIMARY KEY(column_name)
唯一索引 UNIQUE INDEX/KEY index_name(column_name) - index_phone(phone):索引名称,括号中是索引建立的字段,如果有多个字段则用逗号隔开。多个字段的话又可以称为复合索引。
表的修改
-
修改表名
RENAME TABLE old_table_name TO new_table_name;
-
修改引擎
ALTER TABLE table_name ENGINE = new_storage_engine;
-
修改字符集
ALTER TABLE table_name CHARACTER SET new_charset;
-
删除表
# 直接删 DROP TABLE table_name; # 删除前检查存不存在 DROP TABLE IF EXISTS table_name;
-
修改表的注释
ALTER TABLE table_name COMMENT = 'new_table_comment';
-
清空表
TRUNCATE TABLE table_name;
字段的增删改
-
增加字段
ALTER TABLE table_name ADD column_name column_type [NULL | NOT NULL] [DEFAULT default_value] [COMMENT column_comment] [AFTER another_column_name];
这里单独讲一下AFTER ,这个单词表示你新增的字段将会在another_column_name这个字段后面,如果不写默认加到最后。
-
删除字段
ALTER TABLE table_name DROP COLUMN column_name;
-
修改字段
修改字段有两种方式,第一张方式不能修改表名,第二种方式可以。# 不修改表名 ALTER TABLE table_name MODIFY COLUMN column_name column_type [NOT NULL | NULL] [DEFAULT new_default_value] [COMMENT new_column_comment] [FIRST | AFTER another_column_name]; # 修改表名 ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name new_data_typ e[NOT NULL | NULL] [DEFAULT new_default_value] [COMMENT new_column_comment] [FIRST | AFTER another_column_name];
如果你不想改那么多属性,那么可以参考下面的单独属性的修改。
-
修改字段的数据类型:
ALTER TABLE table_name MODIFY column_name new_data_type;
-
更改字段名和数据类型 (需要同时指定新的字段名和数据类型):
ALTER TABLE table_name CHANGE old_column_name new_column_name new_data_type;
-
为字段设置默认值:
ALTER TABLE table_name ALTER column_name SET DEFAULT default_value;
-
移除字段的默认值 (如果字段有默认值):
ALTER TABLE table_name ALTER column_name DROP DEFAULT;
-
将字段设置为允许或不允许为空:
# 设置为不允许为空: ALTER TABLE table_name MODIFY column_name data_type NOT NULL; # 设置为允许为空: ALTER TABLE table_name MODIFY column_name data_type;
-
添加列的注释:
ALTER TABLE table_name COMMENT ON COLUMN column_name IS 'column_comment';
-
修改列的注释:
ALTER TABLE table_name MODIFY column_name data_type COMMENT 'new_column_comment';
-
删除列的注释:
ALTER TABLE table_name MODIFY column_name data_type;
索引的增删改
-
创建索引
# 创建的是普通索引 CREATE INDEX index_name ON table_name (column_name); # 创建唯一索引 CREATE UNIQUE INDEX unique_index_name ON table_name (column_name);
-
删除索引
DROP INDEX index_name ON table_name;
-
修改索引。MySQL的索引修改没有直接的办法,只能通过先上后增的办法进行修改。
写到最后
MySQL入门语法还剩最后一篇,数据的常用语法。最开始是想写三篇的。一篇简介,一篇基础信息介绍,一篇基础语法介绍。结果写着写着发现语法需要分成两部分,一部分是今天的算是表结构的语法,另一部分明天写完,数据的查询语法。
感谢支持,点赞收藏加关注,学习文章不迷路!
写个打油诗,哈哈!