数据库是什么,和数据结构有什么关系?
数据库是一个软件,数据结构是一个学科,数据库软件在实现过程中,是非常依赖数据结构的
数据已组织并存储数据的软件,一般是存储在硬盘上,(也有些是存储在内存中)
数据库主要可以分为两大类:
- 关系型数据库(MySQL):数据的组织形式使用“表”作为结构,类似于excel,首先得有一个表头,表头中约定了有很多列,以及每一列的类型,插入的数据就是表中的一行,这一行里的每一个列都需要和表头结构对应,对于数据的“约束”(对于数据合法性的校验)比较强、
- 非关系型数据库:数据的组织形式使用“键值对”作为结构,类似于Map。存储的时候都是需要指定 key 和 value。
每组数据的 value 中都需要包含哪些字段?没有明确要求,对于数据中的约束性更低 。
相比于关系型数据库,牺牲了一部分的功能,但是换来了更高的效率以及更强的水平扩展能力,更适用于分布式系统中。
SQL是一种编程语言,“结构化的查询语言”,操作数据库时主要就是使用 SQL 这种编程语言
进入数据库:
在CMD中输入:
mysql -uroot -p
库操作
1、查看数据库
MySQL 服务器是一个数据库软件,这个软件运行过程中可以维护多个“逻辑”上的数据库--->若干个标的集合可以理解为一个“逻辑”上的数据库
show databases;
2、创建数据库
create database XXX;
当我们再次创建名称为java_0523 的数据库时就会报错
此时我们可以运用如下命令:
create database if not exists java_0523;
此时就命令成功:
3、使用数据库
use XXX;
当前有多个数据库,通过“使用”操作,就能选中某个数据库
cmd 中的复制粘贴:选中内容,enter 复制鼠标右键粘贴
4、删除数据库
drop database XXX;
先显示一下全部数据库:
删除该数据库后:
有了数据库之后,要想真的去存储组织数据,还需要数据表,创建表的时候就需要指定表结构,
int |
double |
decimal |
varchar |
test |
表操作
1、创建表
create table student( -> id int, -> name varchar(20) -> );
2、查看表结构
desc XXX;
创建表的时候,如果名称和关键字冲突了可以使用反引号 ``引起来,就可以解决这个问题
3、删除表操作
drop table [表名];
MySQL 是一种一种客户端-服务器版本
1、数据库的地位
对用户来说:
库——IDEA的一个工程
表——类
表里一行——对象
表里一列——属性
对文件系统来说(硬盘管理文件):
库——文件夹
表——一组文件
2、DDL/DML(Insert增/Delete删/Select查/Update改)
3、SQL语句:
库:
1、CREATE DATABASE 库名
2、SHOW DATABASES 查看哪些库
3、DROP DATABASE 删除
4、SHOW CREATE DATABASE 库名 查看建库语句
5、USE 库名 设置默认库
表:
1、CREATE TABLE 表名 (列定义); //建表
2、SHOW TABLES ; //查看哪些表
3、DROP TABLE 表名; //删表
4、SHOW CREATR TABLE 表名;
DESC 表名 ; //查看表结构
增删改查(CRUD)
1、插入数据
insert into [表名] values (内容);
指定列插入
insert into student (id,name) values (2,'蔡');
2、查看数据
select * from [表名];
* 是一个通配符,意思是吧所有列都查找出来
UNIQUE VS PRIMARY KEY
相同点:不允许重复
不同点:UNQUE 可以为 NULL ,同时 NULL 不视为重复
PRIMARY 不允许为空,MySQL实际存储是,依赖主键存储
表的设计
表的三大范式:
1、表中的每个字段含义是独立的,不可再分的(业务相关的)
2、字段和完整主键有关系
3、字段和主键是直接关系