目录
目录
数据和信息
Data
数据
任何描述事物的文字或符号都可以称为数据。
软件开发就是为了收集数据,从中筛选出有用的信息。
信息就是进过分析筛选后的数据。
数据需要保存,保存的介质有内存或硬盘。
内存中的数据是临时的,随着系统的关闭,数据也会消失。
硬盘中的数据是永久,就算系统关闭,数据依然保留。
excel
等文件保存数据是一种保存到硬盘中的途径,
如果需要大量数据保存,文件系统就不再方便。
使用一个系统化的数据仓库才能高效地管理数据。
数据库
DataBase
,
称为数据库,简称
DB
运行在操作系统上,按照一定的数据结构,保存数据的仓库。
是一个电子化的文件柜。
数据永久保存在硬盘中。
数据库管理系统
DataBase Manager System
,简称
DBMS
通常所说的数据库,其实是指数据库管理系统,如
MySQL
、
SQLServer
、
Oracle
等。
是一种操作和管理数据库的大型软件,用于建立、使用和维护数据库。
总结
数据
Data
需要永久保存在数据库中
数据库
DB
是运行在操作系统上的一个软件
数据库管理系统
DBMS
是管理数据库的一个软件
学习数据库就是学习如何使用
DBMS
创建、使用数据仓库来管理数据
常见的数据库管理系统
关系型数据库
关系型数据库是主流的数据库类型。
数据通过
行
row
和
列
column
的形式
(
表格
)
保存。
每
行
称为一条
记录
。
每
列
称为一个
字段
。
字段通常为
Java
中某个实体类的属性,通过这个类创建的对象,就是一条记录。
如
class Employee
,有员工编号、部门、工资等属性,
对应数据库中有一张
Employee
员工表,这张表中有员工编号、姓名、部门等字段。
关系型数据库中,数据表中间进行关联,能快速地查询想要的数据。
优点
易于维护:数据都是以表的结构存储,格式一致
使用方便:
SQL
语句通用,可用于不同的关系型数据库
支持复杂查询:可以通过
SQL
语句在多个表之间查询出复杂数据
缺点
读写性能差,在处理海量数据时, 频繁读写效率略低
表结构不易改动,灵活度稍欠佳
高并发读写时,硬盘
I/O
决定了读写速度
非关系型数据库
数据通过对象的形式保存,对象可以是一个键值对、文档、图片等。
非关系型数据库的特点
保存数据的格式多样
对于海量数据的读写性能高
不支持复杂查询
数据库管理系统图形化管理工具
如果只是使用控制台操作数据库系统很不方便,所以在
windows
下有很多图形化的管理工具。
如
navicat
、
datagrip
、
sqlyog
等。
Navicat的使用
连接mysql
连接后双击进入连接
创建数据库
在连接上右键,新建数据库,只需填写数据库名
切换数据库
只需双击对应的数据库
创建数据表
在展开后的数据库中,在表的选项上右键新建表
保存时输入表名
每张表需要一个编号
"id"
列,通常设置为主键,目的是为了区分每条记录。主键列中的数据不能重
复,通常还需将主键列设置为自增列。
由于
mysql
中大小写不敏感,字段名使用全部小写字母,多个单词用
_
隔开
数据类型和所占长度根据实际情况选择
如果某列数据必须要填写,将
"
不是
null"
勾选
如果某个字段有默认值,可以在设计表的时候设置,字符串用单引号引起来
最好加上注释
SQL
S
tructrued
Q
uery
L
anguage
结构化查询语言
用于操作关系型数据库的一门语言。可用来创建、维护数据库和数据。
操作数据库
创建数据库
create database 数据库名 ;
切换数据库
use 数据库名 ;
删除数据库
drop database 数据库名 ;
操作数据表
创建数据表
create table 表名 (字段名 1 数据类型 [ 字段特征 ],字段名 2 数据类型 [ 字段特征 ],...字段名 n 数据类型 [ 字段特征 ])
修改数据表
修改表时,要保证不影响现有数据
对表重命名
alter table 旧表名 rename to 新表名 ;
添加新字段
alter table 表名 add column 字段名 1 数据类型 [ 字段特征 ];
修改字段
alter table 表名 change 旧字段名 新字段名 数据类型 [ 字段特征 ];
删除字段
alter table 表名 drop 字段名 ;
添加约束
添加唯一约束
alter table 表名 add unique( 字段名 );
添加主键约束
alter table 表名 add primary key( 字段名 )
添加默认值约束
alter table 表名 alter 字段名 set default ' 默认值 '
添加外键约束
alert table 从表表名 add foreign key( 从表外键字段 ) references 主表表名 ( 主表主键字段 )
添加约束的操作通常是对已存在的表进行修改和维护时使用。如果是一张新表,最好在创建表的时候就设计好约束。
建表的同时添加约束
-- 创建游戏数据库 gamedbcreate database gamedb;-- 切换到 gamedbuse gamedb;-- 创建游戏人物表 herocreate table hero(-- 编号 id 主键 非空 自增id int not null primary key auto_increment comment ' 人物编号 ' ,-- 姓名 唯一 非空name varchar ( 20 ) unique not null ,-- 性别 默认男 非空sex char ( 1 ) not null default ' 男 ' ,-- 价格 非空price int not null ,-- 发布时间 可以为空make_time date)-- 添加 " 定位 "position 字段alter table hero add column position varchar ( 20 )-- 创建战斗表 battlecreate table battle(-- id ,主键字段id int not null primary key auto_increment,-- 出战人物编号 hero_id, 来自于 hero 表中的 id 字段 非空hero_id int not null ,-- 昵称 可以为空nick_name varchar ( 20 ),-- 分路 不能为空way varchar ( 20 ) not null ,-- 设置外键foreign key(hero_id) REFERENCES hero (id))
删除数据表
drop table 表名
如果要删除有外键关联的表,要先删除从表,再删除主表。
数据完整性
数据完整性是指数据精确可靠。不能保存无意义或无效的数据。
如不合理的年龄性别、全为空的记录、重复记录等。
为了保证保存在数据库中的数据是完整数据,就要在设计数据表的时候添加一些
约束
或
字段特征
来保证数据的完整性
MySQL中常见的数据类型
约束
操作数据
数据的操作,是指数据的增加
create
,修改
update
,查询
read
和删除
delete
。
简称
CURD
。
数据添加insert
数据添加时,都是整行添加。不能只给一个字段添加数据。
如果只给某个字段添加数据,实际是修改。
给所有字段赋值
insert into 表名 values ( ' 值 1' , ' 值 2' ...)
表名后无需添加字段名,添加时保证值的顺序和数量与表中字段的顺序和数量一致
遇到自增字段,不能省略不写,可以使用
0
、
null
或
default
让其填充自增值
遇到有默认值的字段,不能省略不写,使用
default
让其填充默认值
遇到允许为空的字段,不能省略不写,使用
null
让其设置为空
给指定字段赋值
insert into 表名 ( 字段 1, 字段 2...) values ( ' 值 1' , ' 值 2' ...)
至少需要将所有非空字段写出来
可以不用写出自增字段、有默认值的字段和允许为空的字段
表名后的字段顺序要和值的顺序一致
批量添加
insert into 表名 [( 字段 1, 字段 2...)] values( ' 值 1'