【MySQL】数据库基础一

  前端 得到用户输入的数据、渲染数据库中的数据。展示、收集数据。

  后端 处理从前端获取到的数据,保存到数据库中。中转、处理数据。

  数据库 永久保存数据。保存数据到硬盘。

数据和信息

Data数据

1、任何描述事物的文字或符号都可以称为数据。

2、软件开发就是为了收集数据,从中筛选出有用的信息。

3、信息就是经过分析筛选后的数据。

4、数据需要保存,保存的介质有内存和硬盘。

  • 内存中的数据是临时的,随着软件或系统的关闭,数据也会消失。

  • 硬盘中的数据是永久的,就算系统关闭,数据依然保留。

    • excel等文件保存数据就是一种保存到硬盘中的途径。

5、如果需要大量数据的保存,文件系统就不再方便。

6、使用一个系统化的数据仓库才能高效地管理数据。

数据库

DataBase,称为数据库,简称为DB

  运行在操作系统上,按照一定的数据结构,保存数据的仓库。是一个电子化的文件柜。

  数据永久保存在硬盘中。

数据库管理系统

DataBase Manager System,简称DBMS

  通常所说的数据库,其实是指数据库管理系统,如MySQL、SQLServer、Oracle等,

    是一种操作和管理数据库的大型软件,用来创建、使用和维护数据库。

总结

  1. 数据Data是一个软件的根本。数据要永久地保存到数据库中。

  2. 数据库DB是一个运行在操作系统上的软件。

  3. 数据库管理系统DBMS是管理数据库的一个软件。

  4. 学习数据库就是学习如何使用DBMS创建、使用数据仓库来管理数据。

常见的数据库管理系统

关系型数据库

​   关系型数据库是主流的数据库类型。

​    数据通过行row和列column的形式(表格)保存。

​      每称为一条记录

​      每称为一个字段

  字段通常为Java中某个实体类的属性,通过这个类创建的对象,就是一条记录

class Student{ 
    Integer id; 
    String name; 
    String major;
}
class Main{ 
    public static void main(String[] args){ 
        Student s1 = new Student(); 
        s1.id=1001; s1.name="小王"; 
        s1.major="计算机";
    } 
}

如上代码中,Student类对应学生表,其中的属性对应表中的字段。创建的对象s1对应表中的一条记录。

​ 关系型数据库中,数据表之间进行关联,能快速查询想要的数据。

优点:

1、易于维护:数据都是以表的结构保存,格式一致

2、使用方便:SQL语句通用,可以用于不同的关系型数据库

3、支持复杂查询:可以通过SQL语句在多个表之间进行关联查询

缺点:

1、读写性能由硬盘的读写速度相关。

2、海量数据处理时,如果要频繁读写,效率变低

3、表结构不易改动,灵活度欠佳

非关系型数据库

  数据通过对象的形式保存,对象可以是一个键值对、文档、图片等。

特点:

1、保存数据的格式多样

2、数据保存在内存中,对于海量数据的读写性能高

3、不支持复杂查询

MySQL8.x的安装和使用

1.下载

https://www.mysql.com/

在这里插入图片描述



在这里插入图片描述





在这里插入图片描述

  1. 安装

在这里插入图片描述




一直下一步直到,
输入密码:

在这里插入图片描述




.
  1. 使用

之后可以使用图形化界面方便操作。但最好了解纯命令行的形式使用MySQL。因为最终项目运行在Linux服务器上,无法使用图形界面。

在安装目录的bin文件夹中,输入cmd进入控制台。默认安装目录为C:\Program Files\MySQL\MySQL Server 8.0

在这里插入图片描述




常用指令

  1. show databases; 查看所有的数据库

  2. use数据库名; 进入指定数据库

  3. show tables; 在某个数据库中,查看其中的所有表

  4. create database数据库名;创建指定数据库

  5. drop database 数据库名**;** 删除指定数据库

数据库管理系统图形化管理工具

  如果只是使用控制台操作数据库系统很不方便,所以在windows下有很多图形化的管理工具。

​      如navicat、datagrip、sqlyog等。

Navicat的使用

创建mysql连接

在这里插入图片描述




点击后输入密码

在这里插入图片描述




等待创建连接成功后,双击连接表示进入mysql:

在这里插入图片描述




创建数据库

在连接上右键,点击新建数据库,只需填写数据库名

在这里插入图片描述




切换数据库

双击对应的数据库,表示"use 数据库"名指令



删除数据库

在对应的库上右键删除数据库

在这里插入图片描述




### 创建数据表

在展开后的数据库中,在表的选项上右键新建表

在这里插入图片描述




在这里插入图片描述




  保存时输入表名

建表时注意

  • 由于MySQL大小写不敏感,数据库名、表名、字段名全部使用小写字母,多个单词之间用下划线_隔开

  • 数据类型和所占长度根据实际情况选择

  • 如果某列数据必须要填写,将"不是null"勾选

  • 如果某个字段有默认值,可以在设计表的时候设置

  • 每张表通常会设置一个编号"id"列,将其设置为主键。目的是为了区分每条记录。主键列中的数据不能重复,通常还会将主键列设置为整型,自增。

  • 最好加上注释

数据的完整性

  • 数据完整性是指数据精确可靠,不能保存无意义或无效的数据。

    • 如不合理的年龄性别、全部为空的记录、重复记录等。
  • 为了保证保存在数据库中的数据是完整数据,就要在设计数据表的时候添加一些约束字段特征来保证数据完整性。

MySQL中常见的数据类型

整型
tinyint对应Java中的short短整型
int对应Java中的int整型
bigint对应Java中的long长整型



浮点型
float对应Java中的float单精度浮点型
double对应Java中的double双精度浮点型
decimal(宽度,精度)指定保留的小数位数和整体宽度如decimal(4,2) 如3.14159 --> 3.14



字符串
char(大小)定长字符串对应Java中的String。char(10)表示就算实际保存4个字符,也占10个长度。
varchar(大小)可变字符串对应Java中的String。varchar(10)表示如果实际保存4个字符,占4个长度。
text文本字符串长度过大时使用



日期
date日期yyyy-MM-dd
time时间HH:mm:ss
datetime日期时间yyyy-MM-dd HH:mm:ss
timestamp时间戳保存日期的毫秒数



约束

非空约束

  • 关键字:null

  • 不写或设置null表示允许为空

  • not null表示不能为空

  • 用于控制某个字段能否为null

主键约束

  • 关键字:primary

  • 主键primary key:也称为主关键字、主码。用于区分表中的每条记录。如果有现成的字段可以区分

  • 每条记录时,将该字段设置为主键,如身份证号、学号等;如果没有现成的字段可以区分每条记录时,通常会额外添加一个id字段设置为主键。

  • 通常一张表中只选择一个字段作为主键

在这里插入图片描述




唯一约束

  • 关键字:unique

  • 用于控制该字段不能重复

  • 可以在建表的时候设置唯一约束的字段

在这里插入图片描述




默认值约束

  • 关键字:default

  • 用于添加记录时,可以自动填充一个默认值

在这里插入图片描述




外键约束

  • 关键字:foreign key / references

  • 在主从关系的表中,给从表中的某个字段添加外键约束,引用主表中的某个字段。这样从表中的外键字段的值只能来自于主表中。

    • 如学院表为主表,学生表为从表,学生表中的学院编号只能来自于学院表中的学院编号

在这里插入图片描述




SQL

   SQL:Structrued Query Language 结构化查询语言

  用于操作关系型数据库的一门语言。可以用来创建、维护数据库和数据

操作数据库

1、创建数据库

create database 数据库名;

2、切换数据库

use 数据库名;

3、删除数据库

drop database 数据库名;

操作数据表

1、创建数据表

create table 表名(
    字段名1 数据类型 [字段特征],
    字段名2 数据类型 [字段特征], 
    ... 
    字段名n 数据类型 [字段特征],
)

2、修改数据表

  修改表时,要保证不影响现有数据

  • 对表重命名
alter table 旧表名 rename to 新表名;
  • 添加字段
alter table 表名 add column 字段名 数据类型 [字段特征];
  • 修改字段
alter table 表名 change 旧字段名 新字段名 数据类型 [字段特征];
  • 删除字段
alter table 表名 drop 字段名;

3、添加约束

  • 添加唯一约束
alter table 表名 add unique(字段名);
  • 添加主键约束
alter table 表名 add primary key(字段名);
  • 添加默认值约束
alter table 表名 alter 字段名 set default '默认值';
  • 添加外键约束
alter table 从表表名 add foreign key(从表外键字段) references 主表表名(主表字段)

    添加约束的操作通常是对已存在的表进行修改和维护时使用。如果是一张新表,最好在设计表的时候就设计好约束。

4、 删除数据表

drop table 表名;

如果要删除有外键关联的表。先删除从表,再删除主表

5、创建表的同时添加约束

-- 建表的同时添加约束
-- 创建hero表,包含 
create table hero( 
    -- 编号id 非空 主键 自增 注释 
    id int not null primary key auto_increment comment '编号', 
    
    -- 姓名name 非空 唯一 
    name varchar(20) not null unique comment '姓名',
    
    -- 性别sex 非空 默认 男 
    sex char(1) not null default '男' comment '性别', 
    
    -- 价格price 非空
    price int not null comment '价格', 
    
    -- 上架时间create_date 可以为空
    create_date date comment '上架时间',
    
    -- 定位position 
    position varchar(20) comment '定位'

)


-- 创建从表battle表,包含

create table battle( 
    -- 人物编号no 非空 
    no int not null comment '人物编号',
    
    -- 分路 非空 
    way varchar(20) not null comment '分路',
    
    -- 外键 no引用hero表中的编号字段id
    foreign key(no) references hero(id) 

)

练习

1、单表创建练习

  • 创建新库,创建员工表employee
  • 编号emp_no,主键,自增,非空
  • 姓名emp_name,非空
  • 联系方式emp_phone,非空
  • 入职时间join_date,非空
  • 部门dept,非空
  • 工资salary,非空
  • 邮箱email,可以为空
create database employee;
-- 创建新库,创建员工表employee
create table employee(
-- 编号emp_no,主键,自增,非空
emp_no int not null primary key auto_increment comment '编号',
-- 姓名emp_name,非空
emp_name varchar(20) not null comment '姓名',
-- 联系方式emp_phone,非空
emp_phone char(15) not null comment '联系方式',
-- 入职时间join_date,非空
join_date date not null comment '入职时间',
-- 部门dept,非空
dept varchar(20) not null comment '部门',
-- 工资salary,非空
salary double not null comment '工资',
-- 邮箱email,可以为空
email  varchar(30) comment '邮箱'
)

2、从表创建练习

  • 创建图书数据库db_book
  • 创建图书类型表book_type
  • 类型编号type_id,主键,非空,自增
  • 类型名称type_name,非空,唯一
  • 创建图书详情表book_info
  • 图书编号book_id 主键 自增 非空
  • 图书名称book_name 非空
  • 图书作者book_author 默认 ‘佚名’
  • 出版时间publish_date
  • 图书价格book_price 非空
  • 图书类型type_id 外键 关联图书类型表中的类型编号
-- 创建图书数据库db_book
create database db_book;
use db_book;
-- 创建图书类型表book_type
create table book_type(
-- 类型编号type_id,主键,非空,自增
type_id int not null primary key auto_increment comment '类型编号',
-- 类型名称type_name,非空,唯一
type_name varchar(20) not null comment '类型名称'
)
-- 创建图书详情表book_info
create table book_info(
-- 图书编号book_id 主键 自增 非空
book_id int not null primary key auto_increment comment '图书编号',
-- 图书名称book_name 非空
book_name varchar(20) not null comment '图书名称',
-- 图书作者book_author 默认 '佚名'
book_author varchar(20) default '佚名' comment '图书作者',
-- 出版时间publish_date
publish_date date comment '出版时间',
-- 图书价格book_price 非空
book_price double not null comment '图书价格',
-- 图书类型type_id 外键 关联图书类型表中的类型编号
type_id int comment '图书类型',
foreign key(type_id) references book_type(type_id)
)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值