什么是数据库
- DB的全称是data base,即数据库的意思。DBA
- 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
- 数据库实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统;
- 数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;查询操作占所有操作的百分之八十
常见数据库的介绍
- Oracle 甲骨文公司,专门数据库厂商 收购SUN、MySQL ------- 收费 大型数据库 ,用于任何系统任何平台 ,市场排名第二
- MySQL 早期开源免费数据库产品,LAMP组合 Linux + Apache + MySQL + PHP 完全开源免费 ,自从mysql被oracle收购后,从6.0开始出现收费版本,市场排名第一
- DB2 IBM数据库产品 大型收费数据库 websphere服务器一起使用
- SYBASE 中等规模数据库 收费 PowerDesigner 数据库建模工具
- SQL Server 微软公司数据库产品 收费中等规模数据库 ,操作系统要求是windows 结合.net 一起使用 ,市场排名第三
- Java开发者主要使用 MySQL 、Oracle
数据库的分类
- 关系型数据库: 可以保存现实生活中的各种关系数据, 数据库中存储数据以表为单位;以上介绍的都是关系型数据库。
- 非关系型数据库:通常用来解决某些特定的需求如:数据缓存,高并发访问。 存储数据的形式有多种,举例:Redis数据库:通过键值对的形式存储数据;
- Nosql - not only sql - redis(k-v) - 缓存使用
MySQL数据库
- mysql是现流行的开源、免费的关系型数据库
- 免费、开源数据库
- 小巧、功能齐全
- 使用便捷
- 可运行于Windows或Linux操作系统
- 可适用于中小型甚至大型网站应用
安装与卸载
可视化工具的安装
- Navicat 是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及大中小企业的需要;
- 它可以用来对本机或远程的 MySQL、SQL Server、SQLite、Oracle 及 PostgreSQL 数据库进行管理及开发。
- Navicat适用于三种平台 - Microsoft Windows、Mac OS X 及Linux。它可以让用户连接到任何本机或远程服务器、提供一些实用的数据库工具如数据模型、数据传输、数据同步、结构同步、导入、导出、备份、还原、报表创建工具及计划以协助管理数据
mysql存储结构说明
数据库内部存储结构说明
数据库存储数据的结构说明
- mysql数据库服务器可以创建多个数据库 database每个database 都是独立的
- 每一个数据库可以创建多张数据表 table 开发中一般是一个工程对应一个数据库
- 每张数据表 用来保存 数据记录 表示数据库的基本单元 表 对应 java 对象
SQL语句 (简称: 结构化查询语句 )
- 特点:一条SQL语句一个执行结果
- 为了使用SQL 编写复杂程序,各个数据库厂商对SQL 进行增强
- SQL语句学习流程 :
- 库---> 表----> 表中记录/数据
SQL操作
- SQL全称是“结构化查询语言(Structured Query Language)”
- SQL是一种数据库查询和程式设计语言,用于存取以及查询、更新和管理关联式数据库系统。
- Sql对数据库操作可以分为一下几种
- Mysql: 不区分大小写
DDL对数据库操作
- 一条SQL语句一个执行结果,sql语句的结束使用分号 ;
- 注意:每一条sql语句结束,一定要加 ;
- 查看所有数据库:show databases;
- 新建数据库: create database dbname;
- 使用某一个库:use dbname;
- 查看当前使用的库 : select database();
- 切换使用库:use dbname;
- 删除数据库:drop database dbname;
对表操作
- 建表语法:create table 表名(列名 类型(长度),列名 类型(长度)... );
- 一个数据表可以存在很多列,每列具有类型和长度
- 注意:创建表之前 必须使用use db 语法指定操作数据库
- MySQL 常用数据类型:
- java 中 String char----- mysql 中字符串型 char varchar
- Username char(10) - 字符串 lili --- 不管给出的值是长多,都会为其分配10个字符的长度
- Username varchar(10) - 字符串 lili -- 根据实际的内容的长度去进行分配空间,赋值4个字符,为他分配4个字符
- 面试题:在mysql中char 和 varchar 有什么区别?
- * char是定长 varchar是变长
- 例如:char(8) 保存 lisi,因为lisi 只有四个字符,所有会补充四个空格,成为8个字符存入 char(8)中 ,如果有 varchar(8) lisi 自动根据存放内容改变长度
- java 中 byte short int long float double ----- mysql 中数值类型 TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
- java 中 boolean ---- mysql 逻辑性 bit 存放一位数值 0 或者1
- java 中 Date ----- mysql 日期类型 date (只有日期2022-2-2) time(只有时间 22:22:22) datetime(日期时间都有 2022-2-2 22:22:22)
- 说明:创建数据表时,只有字符串类型必须写长度,而其他类型都有默认长度
- Java中的一个对象会对应数据库中的一条记录
- 注意:一般表的主键都是int类型,并且是自增
- 查询表: show tables;
- 表结构修改
- 修改表名 rename table 旧表名 to 新表名
- 新增列 alter table 表名 add 列名 类型(长度)
- 修改列 alter table 表名 change 旧列名 新列名 类型(长度)
- 删除列 alter table 表名 drop 列名
- 查看表结构:desc tableName;
mysql数据类型及列类型说明
- 列类型:规定数据库中该列存放的数据类型
- 数值类型
- 字符串类型
- 日期和时间型数值类型
- NULL值
数值类型
字符串类型
日期类型和时间型数值类型
NULL值
字段属性和限制(约束)
- 在创建表的时候,表中字段可以拥有一些属性修饰
- 主键约束: 每一张表都需要有一个主键,和表的内容没有之间的关联,主要是用来提高查询的效率,确保数据的唯一性,方便数据统计
- 主键一定是非空的,一般是整数类型,一般都是数据库自己去维护,一般都是自增的
- 唯一约束:一般用在列上,添加一条数据时,要确保这一列的唯一性
- 外键约束 : 多表关联时
- 非空约束
数据表的存储位置
- MySQL数据表以文件方式存放在磁盘中包括表文件、数据文件以及数据库的选项文件
- 位置:MySQL安装目录\data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表
约束
- 主键约束 : - 必须的
- 每一张表都要有一个主键,一般的主键都是整数类型,而且是自增的, 一般主键和表都是没有关系的,主要是用来确认唯一性的、建立表与表之间的关系的,
- 学号:
- 部门编号:
- 订单号:
非空约束: - 不是必须的
- 用于具体的某一列,表示新增数据的时候,这个列一定要有值,不能为空
- 外键约束: - 不是必须的
- 用来维护表与表之间的关系的
- 员工表和部门表