MySQL简介及安装

2023-10-14  本文已影响0人  扶光_

一,JAVAweb

就是用java的技术来开发网站

流程

二,数据库

2.1 安装

[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

将上述文本创建名为my.ini文本文件放在mysql安装目录中

配置文件

2.2 卸载

2.3 mysql数据模型

它是一个关系型数据库 也就是二维表组成的数据库。
如果不是表结构组成的数据库那就是非关系型数据库


mysql创建的数据库就是磁盘中的文件夹

2.4 SQL的通用语法

sql语句可以以单行或多行书写,以;结尾。且不区分大小写,关键字建议大写
单行注释--
多行注释`/**/

各种

DDL(数据定义语言)

操作数据库的
1.查询
show databases
2.创建
create databases 数据库名称
3.删除
drop database 数据库名;
drop database if exists 数据库名;如果存在则删除
操作表的
1.创建表

create table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
    );
创建表
2.查询表
show tables查询一共有哪些表
desc 表名查询表结构 如字段
3.修改表
alter table 表名 rename to 新表名 //修改表名
alter table 表名 add 列名 数据类型 //添加一列
alter table 表名 drop 列名//删除一列
alter table 表名 modify 列名 数据类型//修改列
alter table 表名 modify 列名 新列名 数据类型

4.删除表
drop table 表名
drop table if exists 表名 如果存在删除

DML(数据操纵语言)

对表中数据进行增删改查操作
1.增加数据
insert into 表名(列名1,列名2) values(值1,值2); 指定列添加数据
insert into 表名 values(值);//给全部列添加数据
INSERT INTO user values(2,'李四'),(3,'王五');//批量添加多列数据
2.修改数据
update 表名 set 列名=值1,列名=值2 where条件
如将张三性别改为女
update user sex='女' where name = '张三';
3.删除数据
delete from 表名 where 条件

DQL(数据库查询语言)

对表中数据进行查询


语法

1.基础查询
select 字段名 from 表名;//查询多个字段
select * from 表名;//查询所有数据
select distinct 字段列表 from 表名;//去除重复记录
as 起别名 可以省略as
2.条件查询
select 字段列表 from 表名 where 条件列表;

符号 功能
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
<>或!= 不等于
between and 范围内(包括)
in 多选一
like 模糊查询 _代表一个字符 % 代表多个字符
is null 是null
is not null 不是null
and或&& 并且
or或两个竖线 或者
not或! 非 不是

3.排序查询
select 字段列表 from 表名 order by 排序字段名1 方式,排序字段名2 方式;
如有多个排序条件,当第一个条件值为相同时,执行第二个默认升序 desc 降序
查询学生信息,按照数学降序排序,如数学成绩一样安装英语升序排序
select * from student order by math desc,english asc;

4.分组查询
如一张学生表中都有男同学和女同学 ,那么我想查询男同学的平均分和女同学的平均分是多少.这是就需要分成两组 一男一女
在此之前需要先学习聚合函数,以便计算求和,平均分等
聚合函数(将一列作为整体纵向计算)

函数名 功能
count(列名) 统计数量
max(列名) 最大值
min(列名) 最小值
sum(列名) 求和
avg(列名) 平均值

select 聚合函数(列名)from 表名;

语法select 字段列表 from 表名 where 分组前条件限定 group by 分组字段名 having 分组后条件过滤
where和having的区别:
1 执行时机不同,where是分组前判断,不满足则不参与分组.having是对分组之后的结果进行过滤
2where不能对聚合函数进行判断,having可以

例 查询男同学和女同学各自数学的平均分,以及各自人数,分数低于70分的不参与,分组之后大于两个人
select sex,avg(math),count(sno) from student where scoure< 70 group by sex having count(*)>2;
执行顺序 where>聚合函数>having

5 分页查询


分组查询

为了提高用户体验
语法
select 字段名 from 表名 limit 起始索引,显示条目;
起始索引等于(当前页数-1 * 显示条目)
oracle使用rownumber
SQL server分页查询使用top

2.5 约束

对表中数据进行一些限制.作用于表中列上的规则,限制表中加入的数据

2.6 数据的设计

数据用什么表保存,表和表之间的关系。
软件研发步骤
需求分析(产品经理设计产品原型) ->设计(架构师和工程师 包括软件结构设计 数据库设计 接口设计 过程设计) 编码(开发工程师) 测试(测试工程师) 安装部署(运维工程师)
数据库设计概念:
建立数据库中表结构以及表和表之间的关系
数据库设计步骤
1 需求分析(根据产品原型分析)
数据是什么,数据有哪些属性,数据和属性的关系
2 逻辑分析(通过ER(实体关系)图进行逻辑建模)

ER图
实体用方块表示 属性用椭圆表示,实体就是数据库中的每一个表而属性就是表中的字段
3 物理设计(逻辑设计转换为物理设计)
4 维护设计(对新的需求进行建表,表优化)

2.7 多表查询

业务系统中有很多表 ,多张表之间查询数据。
笛卡尔积:就是有A和B两个集合,取所有的组合情况就是笛卡尔积
如a有2个数据,b有3个 那么所有组合情况就是有2*3=6种情况

多表查询
因为孙悟空这个人不能又是研发部又是市场部的.所有我们需要条件进行筛选,在这基础上消除一些无效数据
所以要写成
SELECT * from emp,dept WHERE emp.dep_id = dept.did;
所以这也是连接查询(内连接),属于多表查询的一种

多个条件可以放在in中去查询


image.png

多表查询的时候 你要了解他们的ER图 关系 ,比如一对多就需要连接查询


对象模型

2.8 事务

就是一组数据库操作命令,事务当成一个整体来提交要么同时成功要么同时失败
好比如银行系统的转账操作,首先先查询自己的余额够不够,然后转账给自己的账户扣除掉钱,同时对方的账户增加了钱,这一系列操作可以称为一个事务。

但如果在执行对方账户增加钱的时候出错了,所以就没有加钱。
预防方法:转账之前开启事务,出现异常回滚事务,成功之后提交事务
BEGIN开启
ROLLBACK回滚
COMMIT 提交
只要开启事务,所有的操作都是临时的,只有commit命令输入之后才是持久化存储。

事务的四大特征

图形化工具 Navicat

Navicat官网

图形化
上一篇 下一篇

猜你喜欢

热点阅读