课程名称:Java工程师2022版
课程章节:Java数据库开发与实战
课程讲师:IT老齐 悟空 八戒猪 神思者 Leo
课程内容:数据库表的相关操作
一、MySQL的配置文件
1.在my.ini文件中,我们可以设置各种MySQL的配置,例如字符集、端口号、目录地址等等。my.init主要由三部分组成,client和mysql文件主要保存的是客户端配置信息;mysqld保存数据库配置信息。
2.可以在隐藏文件my.ini下看到关于MySQL的配置文件,主要包含了端口号的设置,数据目录的设置,默认存储引擎的设置,开启严格模式,用文件记录日志,关闭日志输出,关闭日志输出,日志文件的名称,开启慢查询日志,慢查询日志文件的名称,大于多少秒的执行SQL被记录在慢查询日志,错误日志的名称,数据库ID,把表转换为小写,导入导出数据的目录地址,最大连接数的设置。
二、数据库表的创建
1.什么是SQL语言?
SQl语言是一种计算机语言,是结构化查询语言,SQL语言是用于访问和处理数据的标准的计算机语言。比如HTML,CSS,JavaScript语言是用于网页设计的语言;Swift语言是用于开发ios系统软件的;C++,C#,VB语言是用来开发桌面程序的;SQL语言只能用于数据库。
2.SQL语言的分类
DML语言用于添加、修改、删除、查询。
DCL语言用于用户、权限、事务。
DDL语言用于逻辑库、数据表、视图、索引。
3.SQL语句注意事项
SQL语句不区分大小写,但是字符串区分大小写。
SQL语句必须以分号结尾。
SQL语句中的空白和换行没有限制,但是不能破坏语法。
SQL语句的注释有两种,分别是#开头的注释和/**/的段落注释
4.创建逻辑库
CREATE DATABASE 逻辑库名称;
SHOW DATABASES;
DROP DATABSE 逻辑库名称;
逻辑库的名称可以是英文,也可以是英文加数字,但最好不要使用中文。使用SHOW DATABASES可以看到我们现有的逻辑空间,使用DROP DATABSE 逻辑库名称;可以删除选中的逻辑库。
5.创建数据表
CREATE TABLE student(
id INT UNSIGNED PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex CHAR(1) NOT NULL,
birthday DATE NOT NULL,
tel CHAR(11) NOT NULL,
remark VARCHAR(200)
);
可以看到上述代码以创建一个学生表信息为例,id字段设置为无符号整形,且为主键;name字段字符串类型,大小为20,且不为空;sex字段设置为字符类型,大小为1,且不为空;birthday字段设置为date类型,且不为空;tel字段设置为字符类型,大小为11,且不为空;remark字段是这张表的最后一个字段,所以在字段的最后不需要加“,”,设置为字符串类型,大小为200,无限制条件。
有一个小细节,在创建了逻辑库之后,你需要切换到自己想用的逻辑库中,可以使用USE test; 这里的test是逻辑库test,当然也可以使用USE命令切换到别的逻辑空间。
逻辑空间对应的是文件夹,那我们创建的表,对应的是文件。
创建好student表之后,我们可以去Data文件夹中找到看到我们之前创建的test逻辑空间(文件夹),在test文件夹中可以看到student.idb文件,当然这个文件是一个二进制的文件,不可以用记事本等打开,打开后是乱码。
6.数据表的其他操作
SHOW tables;
DESC student;
SHOW CREATE TABLE student;
DROP table student;
SHOW tables;语句是查询当前逻辑空间中存在的表。
DESC student;语句是查看当前表的结构。
SHOW CREATE TABLE student;语句用于查看当时建student表的SQL语句。
7.MySQL常用的数据类型
(1)数字数据类型
类型 | 大小 | 说明 |
---|---|---|
TINYINT | 1字节 | 小整数 |
SMALLINT | 2字节 | 普通整数 |
MEDIUMINT | 3字节 | 普通整数 |
INT | 4字节 | 较大整数 |
BIGINT | 8字节 | 大整数 |
FLOAT | 4字节 | 单精度浮点数 |
DOUBLE | 8字节 | 双精度浮点数 |
DECIMAL | ------ | DECIMAL(10,2) |
这是数字类型的分类,其他的类型在别的编程语言中可以经常看到,但是DECIMAL这种类型是属于浮点类型,而且在保存的过程中不会丢失精度,这里的第一个参数10指的是数字总的位数,参数2指的是精确到小数点后2位,当然这两个参数都可以自己进行定义。
十进制的浮点数无法在计算机中用二进制精确表达,只能是无限的接近,不能够准确的表示出来,所以使用DECIMAL类型准确的表示浮点类型。
(2)字符串数据类型
类型 | 大小 | 说明 |
---|---|---|
CHAR | 1-255字符 | 固定长度字符串 |
VARCHAR | 1-65535字符 | 不确定长度字符串 |
TEXT | 1-65535字符 | 不确定长度字符串 |
MEDIUMTEXT | 1-1千6百万字符 | 不确定长度字符串 |
LONGTEXT | 1-42亿字符 | 不确定长度字符串 |
(3)日期数据类型
类型 | 大小 | 说明 |
---|---|---|
DATE | 3字节 | 日期 |
TIME | 3字节 | 时间 |
YEAR | 1字节 | 年份 |
DATETIME | 8字节 | 日期时间 |
TIMESTAMP | 4字节 | 时间戳 |
8.修改表的结构
ALTER TABLE student
ADD address VARCHAR(200) NOT NULL,
ADD home_tel CHAR(11) NOT NULL;
向已有的表中添加字段,通过执行上述代码就可以往student表中添加address字段和home_tel字段。
ALTER TABLE student
MODIFY home_tel VARCHAR(20) NOT NULL;
DESC student;
改变了student表中的home_tel字段的数据类型。
ALTER TABLE student
CHANGE address home_address VARCHAR(200) NOT NULL;
DESC student;
改变原有表student中address字段的名称,通过运行上述代码可以看到原有字段的名称被修改为home_address,这里需要注意关键词是CHANGE。顺便说一句,这里的ALTER TABLE语句是属于DDL语句。
ALTER TABLE student
DROP home_address,
DROP home_tel;
删除原有表中的字段,执行上述代码后就可以看到student表中的home_address,home_tel字段都被删除了。
三、数据库表字段约束
1.数据库的范式
构造数据库必须遵循一定的规则,这种规则就是范式。目前关系型数据库有6中范式,一般情况下,只满足第三范式即可。
第一范式:原子性是数据库的基本要求,不满足这一点就不是关系型数据库。数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性。
第二范式:唯一性,数据表中的每条记录必须是唯一的。为了实现区分,通常要为表加上一个列用来存储唯一标识,这个唯一属性列被称为主键列。
第三范式:关联性,每列都与主键有之间关系,不存在传递依赖。依照第三范式,数据可以拆分保存到不同的数据表,彼此保持关联。
2.字段约束
MySQL中字段约束供有四种:
约束名称 | 关键字 | 描述 |
---|---|---|
主键约束 | PRIMARY KEY | 字段值唯一,且不能为NULL |
非空约束 | NOT NULL | 字段值不能为NULL |
唯一约束 | UNIQUE | 字段值唯一,且可以为NULL |
外键约束 | FOREIGN KEY | 保持关联数据的逻辑性 |
主键约束:要求字段的值必须在全表唯一,且不能成为NULL值;建议主键一定要使用数字类型,因为数字类型的检索速度会非常快;如果主键是数字类型,还可以设置自动增长。
非空约束:要求字段的值不能为NULL值,NULL值是没有值,不是“”空字符串。
唯一约束:要求字段值如果不为NULL,那么在全表必须唯一。
外键约束:外键约束用来保证关联数据的逻辑关系。外键约束的定义是写在子表上的。
课程收获:
完成了今天的学习目标:
1.MySQl配置文件
2.数据表的创建
3.数据库表字段约束