数据库的安装和使用

        现在企业中使用数据库,一般就是oracle和mysql。oracle收费,提供技术支持,一般是安全性要求高的企业 比如银行,大型公司等才用的。 中小型企业一般用的就是mysql。  

        但也不用担心觉得我们没钱买oracle来练习,以后进不了大厂,因为数据库的操作语句都是统一的,这意味着在mysql能使用的语句,oracle都能用。也因为oracle要钱,我们就安装mysql来使用就好了。

mysql的安装        

        我是去官网安装的。MySQL8.0.26版本。

大家有baidupan会员的话就点这个地址下载:

链接:https://pan.baidu.com/s/1K4TWkssZUTBsuc4VCFLFBw?pwd=8hgb
提取码:8hgb

官网地址:

MySQL :: Download MySQL Community Server (Archived Versions)

下载回来后进行解压,

设置环境变量.

control sysdm.cpl,,3

后面的步骤我都是跟着别人的博客走的。 我做成功了。下面贴这个博客出来

MySQL8.0.26下载、安装和环境配置教程(2023年6月9日)_mysql8.0.26安装教程-CSDN博客

后面说两个注意点。 博主在最后打了show databases 来展示数据库,但是他没说的是,还要打一个;号,不然mysql会以为我们没有输入完,一直在等待输入。

数据模型

        mysql是一个关系型数据库(RDBMS),建立在关系模型基础上,有多张二维表连接起来组成的数据库。

        简单点说就是,一个数据库有多张excle表格,这些表格是有相互联系的。这些有相互联系的excle表格共同组成了这个数据库。

        为什么用表格这个形式来存储? 格式统一,便于维护。

        为什么用的是SQL语言?  ……一个语言总要有个名字把,SQL语言是关系型数据库的统一规范语言。Oracle也是关系型数据库

        客户端发送sql语句给数据库管理系统(DBMS),DBMS就开始对对应的表进行操作,然后返回操作结果给客户端。

SQL语句的分类        

        DDL:数据库定义语言 用来定义数据库对象。 (数据库 表 字段)框架上的东西

        DML:数据库操作语言  用来对表中的数据操作    框架中内容的操作

        DQL: 查询语句  查询表中的记录

        DCL:数据控制语言 对数据库的用户 用户对数据库访问的权限

主要还是前面三条,最后一个语句不是天天都用的到

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

图形化工具市面上有很多。主流也有几款,Navicat挺好用的。 其实这些都大差不差。 这次试试新的东西,捷克公司的图形化工具DataGrip。这个工具不用我们下载,直接集成到Idea当中啦。

整个操作也是研究一下就差不多知道常用的那些功能了

表约束以及数据库的数据类型

        值得注意的是,图片的存储,企业一般不用数据库来存,而是另外有一个专门的服务器来存储图片,而这里我们练习的时候,是用字符串的形式存储的图片的地址。

        标红的部分是重点,是经常使用的几种类型。

        数值类型中 tinyint  int float double decimal 都是常用的,剩下那些就比较少用 。如果要用到这些类型的无符号类型,只需要在后面加上 unsigned即可。

DDL表操作

insert tb_emp (username,name,gender) values ('JoneyB','JB',1);

update tb_emp set username='JoneyB'  where id=52;

update tb_emp set update_time='2023-12-10',create_time=now();

update tb_emp set entrydate='2023-12-10'

delete from tb_emp where id=52;

下面就是DQL的基本练习了。

DQL

        查询username为Joneyb的用户信息

select id, username, password, name, gender, image, job, entrydate, create_time, update_time from tb_emp where username = 'JoneyB';

查询id小于等于5的用户信息

select id, username, password, name, gender, image, job, entrydate, create_time, update_time from tb_emp where id <= 5;

查询job字段为空的用户信息

select id, username, password, name, gender, image, job, entrydate, create_time, update_time  from tb_emp where ISNULL(JOB);

查询job字段为空的用户信息


select id, username, password, name, gender, image, job, entrydate, create_time, update_time  from tb_emp where !ISNULL(JOB);

查询password字段为123456的用户信息

SELECT ID, USERNAME, PASSWORD, NAME, GENDER, IMAGE, JOB, ENTRYDATE, CREATE_TIME, UPDATE_TIME FROM tb_emp where password != '123456';

查询entrydate在某个日期段,并且gender为1的用户信息

SELECT ID, USERNAME, PASSWORD, NAME, GENDER, IMAGE, JOB, ENTRYDATE, CREATE_TIME, UPDATE_TIME FROM tb_emp WHERE entrydate BETWEEN '2000-01-01' AND  '2010-01-01' AND gender=1;

分组查询

找出男女性别,并给出对应数量
select  gender,count(*) from tb_emp group by gender;

这里加了过滤条件,先找某一日期前的用户,再进行job类型人数大于等于2的过滤。
select job,count(*) from tb_emp where entrydate <= '2015-01-01' group by job having count(*) >=2

分页查询

前端一般只发给我们一个page,我们自己计算该返回些数据给他, 返回的就是 page -1 * 每页显示数

外键

这个外键是物理外键,实际开发一般使用逻辑外键,这里不进行演示。

两张表之间的关系

有三种关系:

  1. 一对一
  2. 一对多
  3. 多对多

一对一的情况:

只需要在任意一方加入对方的主键即可

一对多:

只需要在多的一方加入 “一” 的一方的主键。

多对多:

这种情况双方都不用在自己这边写对方的主键,而是再创建一个第三方表,进行记录两方的主键,进行一个映射即可。

练习素材保存:

create table tb_emp
(
    id          int unsigned primary key auto_increment comment 'ID',
    name        varchar(10) not null unique comment '员工名称',
    dept_id     int unsigned comment '归属的部门ID',
    create_time datetime    not null comment '创建时间',
    update_time datetime    not null comment '更新时间'
) comment '员工表';

INSERT INTO tb_emp (name, dept_id, create_time, update_time)
VALUES ('张三', 1, '2023-07-06 12:00:00', '2023-07-06 12:00:00'),
       ('李四', 2, '2023-07-07 13:00:00', '2023-07-07 13:00:00'),
       ('王五', 1, '2023-07-08 14:00:00', '2023-07-08 14:00:00'),
       ('赵六', 3, '2023-07-09 15:00:00', '2023-07-09 15:00:00'),
       ('钱七', 2, '2023-07-10 16:00:00', '2023-07-10 16:00:00'),
       ('孙八', 1, '2023-07-11 17:00:00', '2023-07-11 17:00:00'),
       ('周九', 3, '2023-07-12 18:00:00', '2023-07-12 18:00:00'),
       ('吴十', 2, '2023-07-13 19:00:00', '2023-07-13 19:00:00'),
       ('郑十一', 1, '2023-07-14 20:00:00', '2023-07-14 20:00:00'),
       ('冯十二', 3, '2023-07-15 21:00:00', '2023-07-15 21:00:00');

create table tb_dept
(
    id int unsigned primary key auto_increment comment 'ID',
    name varchar(10) not null unique comment '部门名称',
    create_time datetime not null comment '创建时间',
    update_time datetime not null comment '更新时间'
)comment '部门表';


INSERT INTO tb_dept (name, create_time, update_time)
VALUES ('学生部', '2023-07-06 12:00:00', '2023-07-06 12:00:00'),
       ('学工部', '2023-07-07 13:00:00', '2023-07-07 13:00:00'),
       ('人事部', '2023-07-08 14:00:00', '2023-07-08 14:00:00'),
        ('步步部', '2023-07-09 15:00:00', '2023-07-09 15:00:00'),
        ('布布部', '2023-07-10 16:00:00', '2023-07-10 16:00:00')

其实大家可以下载阿里云的人工智能插件 通译灵码, 让AI给我们生成测试的数据即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值