【数据库】
永久保存数据的仓库
本质:文件系统加服务器
和保存在内存的数据(java中定义一个变量)相比,断电不会丢失,无法线程共享
常见数据库产品:
oracle:mysql,oracle
微软:sql server
sqlite
db2
库 - 文件夹 , 存放的是表
表 - 文件, 存放的是真正的数据
【名次解释】
数据库:管理数据的仓库
关系型数据库:以表为单位来保存和管理数据
关系:一张二维表,每个关系必须有关系名
字段/属性:二维表中的一列
记录/元祖:二维表中的一行
超键:在关系中能唯一标识元祖的属性集
候选键:不含有冗余属性的超键
主键:用户选作作为记录唯一标识的候选键
外键:用于关键两个表的属性
范式:符合某一种级别的关系模式的集合,构造数据库表必须遵循一定的范式
【三大范式】
1. 第一范式(1NF):
数据库表中的每一列都是不可分割的数据项,
一列中不允许有多个值
2. 第二范式(2NF):
满足1NF的基础上,
每一条记录都有唯一标识,
非主关键字要完全依赖于主关键字
完全依赖 <-> 部分依赖
3. 第三范式(3NF)
满足2NF的基础上,
每个表中不能出现其他表中已出现的非主关键字字段。
【安装mysql】
1.常规方式
https://download.csdn.net/download/qq_36194262/10735565
2.安装wampserver(模拟mysql运行环境)
【SQL】
结构化查询语言
相当于数据库中的“普通话”
每种数据库可能会有自己特殊的命令 - "方言"
1. DDL: 数据定义语言, 建表建库
2. DML: 数据操纵语言, 增删改,
- DQL 查
3. DCL: 数据控制语言, 新增用户 赋予权限
【操作】
桌面运行mysql方法
修改环境变量,path的值后面加’;’(分隔符)加mysql.exe的父目录
用户环境变量和系统环境变量的区别:一个对当前用户有效,另一个对所有用户有效
桌面shift+右键在当前界面运行cmd,或者进入安装目录的bin文件夹(存放可执行文件)打开mysql.exe
帮助文档:http://tool.oschina.net/apidocs/apidoc?api=mysql-5.5-en
文档查看教学:建库
大括号"{ }"表示不能改,带“|”表示或,中括号表示"[ ]"可以不写,黑体表示抽象名,写的时候要写具体
1. 进入
mysql -u root -p
Password:
2. 查看库
show databases;
3. 建库
create database bwf;
4. 使用库
use bwf;
5. 查看库中的表
show tables;
6. 建表
学生表
表名:student
字段名:id name age
create table student(
id INT PRIMARY KEY AUTO_INCREMENT,
name varchar(20) NOT NULL,
age INT NOT NULL DEFAULT 18);
3大范式:
第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;
第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情
第三范式(3NF):必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键)