Java学习暂告一段落,进入数据库的学习…
MySQL数据库
相关术语
RDBMS(Relational Database Management System):关系数据库管理系统
DB:数据库,保存一组有组织的数据的容器
DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据
SQL:结构化查询语言,用于和DBMS通信的语言
RDBMS 即关系数据库管理系统的特点:
数据以表格的形式出现,每行为各种记录名称,每列为记录名称所对应的数据域,许多的行和列组成一张表单,若干的表单组成database
数据库: 数据库是一些关联表的集合。
数据表: 数据的矩阵,像一个简单的电子表格。
列(字段): 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
行(记录):是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。常用主键查询数据。
外键:外键用于关联两个表。
复合键:将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
启动方法
-
CMD在管理员模式下使用命令启动/停止MySQL服务
net start/stop MySQL;(不区分大小写)
-
进入计算机中的服务界面,手动启动
点击计算机(我的电脑)–>鼠标右键–>管理–>在服务中查找MySQL服务,停止并启动。数据库**😗* 数据库是一些关联表的集合。
数据表**😗* 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列(字段)****: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
**行(记录):**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。参数
描述
host
可选。规定主机名或 IP 地址。
username
可选。规定 MySQL 用户名。
password
可选。规定 MySQL 密码。
port
可选。规定尝试连接到 MySQL 服务器的端口号。
**外键:**外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
**索引:**使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序
的一种结构。类似于书籍的目录。
参照完整性**😗* 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满
足的完整性约束条件,目的是保证数据的一致性。
-
登陆与退出
MySQL [-h主机名 -p端口号] -uroot -p
p:数据库管理系统可以有多个,可以在不同电脑,若连接的数据库系统再本地电脑中,则无需输入主机名和端口号;同样,输入对应的IP和端口号也可以进入非本地机器的数据库系统。这里u后面加数据库系统用户名,-p之后再enter键输入对应密码;
可能启动失败的原因:
1、端口号被占用,进入MySQL安装目录,用记事本软件打开my.ini文件,可以找到两处port,修改端口号即可;
2、结束占用端口的程序:
数据类型
-
数值类型
类型 字节 有符号范围 无符号范围 TINYINT 1 (-128,127) (0,255) SMALLINT 2 (-32768,32767) (0,65535) MEDIUMINT 3 INT/INTEGER 4 BIGINT 8 FLOAT 4 单精度浮点数 DOUBLE 8 双精度浮点数 DECIMAL p:对于float、double以及decimal,三者可以在后面添加长度以及小数位数来精确控制某些小数;
例如:float(5,2) double(5,2) decimal(5,2);
该数表示长度包括小数位为5,小数位为2;
存入数据3.1415926放入三者中皆为3.14;
然而在精确度计算上,decimal的运算精确度比两外两者更加准确,
故金钱等急需精确计算的数据优先用decimal存储;
-
时间类型
类型 字节 格式 用途 DATE 3 YYYY-MM-DD 获取日期 TIME 3 HH:MM:SS 时间 YEAR 1 YYYY 年份 DATETIME 8 YYYY-MM-DD HH:MM:SS 年月日时间 TIMESTAMP 4 YYYYMMDDHHMMSS 年月日时间 -
字符串类型
类型 大小 用途 CHAR(255) 0-255 定长字符串 VARCHAR(255) 变长字符串 TINYBLOB 0-255 二进制字符串 TINYTEXT 0-255 短文本字符串 BLOB 二进制长文本数据 TEXT 长文本数据 MEDIUMBLOB 二进制形式的中等长度文本数据 MEDIUMTEXT 中等长度文本数据 LONGBLOB 二进制极大文本数据 LONGTEXT 极大文本数据
字段约束
- 主键约束(PRIMARY KEY)
- 每张表只能有一个主键,用于保证记录的唯一性,同时便于查询;
- 添加主键约束后,默认添加非空约束和唯一约束
- 自增约束(AUTO_INCREAM)
- 配合主键使用,默认情况下,起始值为1,后每添加一条记录依次递增加一;
- 也可以手动添加,下一次自动添加则为上一条记录的值加1;
- 外键约束(FOREIGN KEY)
- 用于实现表与表之间一对一、一对多以及多对多的关系;
- 值必须指向表的主键值;
- 父表以及子表使用相同的存储引擎,并且数据类型形同;
- 默认约束(DEFAULT)
- 用于实现数值的自动辅助,即使添加记录时缺少此字段,也会默认添加对应字段;
- 非空约束(NOT NULL)
- 用于实现字段记录的非空性,若不添加,则字段记录可为空;
- 唯一约束(UNIQUE)
- 用于实现记录的唯一性,避免字段记录的重复性;
- 在此约束中字符记录可以为null,可以有多个null;一张表中可以有多个唯一约束
- 无符号约束(UNSIGNED)
- 用于实现数字的正向性,在此约束下,整数不能为负数
# 用法例子
create table db_test(
id INT PRIMARY KEY AUTO_INCREAM UNSIGNED, # 主键约束,自增约束;
name CHAR(10) UNIQUE NOT NULL # 非空约束,唯一约束
d_id INT NOT NULL UNIQUE # 非空约束,唯一约束
salary DOUBLE UNSIGNED # 无符号约束
FOREIGN KEY(d_id) REFERENCES # 外键约束
# 此外主键约束也可以有另一种写法
# PRIMARY KEY(id,name) 内部可以有多个字段,此时组成的主键约束为复合主键
);
# 总结:约束用法
# 字段名1 字段类型 字段约束1 字段约束2 ....,
操作指令
数据库操作
# 1、查询当前所有数据库
SHOW DATABASES;
# 2、创建数据库
CREATE DATABASES 数据库名;
# 3、使用数据库
USE 数据库名;
# 4、显示当前所用数据库
SELECT DATABASE();
# 5、删除数据库
DROP DATABASE 数据库名;
表格结构操作
# 1、创建数据表
CREATE TABLE 数据表名(
字段名1 字段类型 字段约束。
字段名2 字段类型 字段约束.....
)
# 2、删除表
DROP TABLE 数据表名;
# 3、查看数据表结构
DESC 数据表名;
# 其他字段操作暂不做介绍......
数据操作
# 1、插入记录
# 写法1:此种写法,values包括的数据要和字段数量相同
INSERT [INTO] 表名 values(数值1,数据2,......);
# 写法2:写入某些字段的记录,注意非空约束;
insert [into] 表明(字段1,字段2,......) values(数值1,数据2..);
# 2、删除记录
delete from 数据表名 [where 条件语句]
# 此处where以及后面的条件不写则表示删除全部记录;
# 3、修改记录
update 数据表名 set 字段1 = 新记录值2,字段2,新纪录值2...[where 条件]
# 若无条件则修改全部的记录
# 4、查询数据
select 字段1,字段2,...(`*`则表示所有字段)from 数据表名 [where 条件][having 筛选]
.);
2、删除记录
delete from 数据表名 [where 条件语句]
此处where以及后面的条件不写则表示删除全部记录;
3、修改记录
update 数据表名 set 字段1 = 新记录值2,字段2,新纪录值2…[where 条件]
若无条件则修改全部的记录
4、查询数据
select 字段1,字段2,…(*
则表示所有字段)from 数据表名 [where 条件][having 筛选]