当前位置: 首页 > news >正文

全国建设建管中心网站外贸网站建站

全国建设建管中心网站,外贸网站建站,企业营销型网站类型,东莞网站制作企业网站今日内容介绍全天内容无需立马掌握MySQL 的高级功能应用数据库设计ER模型定义: E 代表实体(数据表), R 代表联系(数据表之间对应的字段)![image-20200530092701017](Linux 和数据库 day06 随堂笔记.assets/image-20200530092701017.png)关系常见分类一对一一对多多对多外键如果…

今日内容介绍

全天内容无需立马掌握
  • MySQL 的高级功能应用


数据库设计

ER模型
定义: E 代表实体(数据表), R 代表联系(数据表之间对应的字段)

![image-20200530092701017](Linux 和数据库 day06 随堂笔记.assets/image-20200530092701017.png)

关系常见分类
  • 一对一

  • 一对多

  • 多对多


外键

如果一个实体的某个字段指向另一个实体的主键,就称为外键。
被指向的实体,称之为主实体(主表),也叫父实体(父表)。
负责指向的实体,称之为从实体(从表),也叫子实体(子表)
作用: 对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则填
写成功,如果不存在则填写失败并报错
-- 主表
drop table if exists class;
create table class(
id int unsigned primary key auto_increment,
name varchar(10)
);-- 从表
drop table if exists stu;
create table stu(
name varchar(10),
class_id int unsigned,
-- stu 表的 class_id 指向 class 表的 id, class_id 是 stu 表的外键
-- foreign key(自己的字段名) references 目标表名(目标表的主键)
foreign key(class_id) references class(id)
);
扩展1 : 对应存在表添加外键
-- 扩展1 : 对于已经存在的表添加外键
-- alter table 从表名 add foreign key (从表字段) references 主表名(主表主键);
alter table stu add foreign key (class_id) references class(id);
扩展2 : 查看和删除外键
-- 扩展2 : 查看外键和删除外键
-- 查看外键
-- show create table 表名
show create table stu;
-- CREATE TABLE `stu` (
--   `name` varchar(10) DEFAULT NULL,
--   `class_id` int(10) unsigned DEFAULT NULL,
--   KEY `class_id` (`class_id`),
--   CONSTRAINT `stu_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`)
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8-- 删除外键
-- alter table stu drop foreign key 外键名称
alter table stu drop foreign key stu_ibfk_1;
利用 Navicat 查看外键
设计表

![image-20200530101959619](Linux 和数据库 day06 随堂笔记.assets/image-20200530101959619.png)

查看外键

![image-20200530102010111](Linux 和数据库 day06 随堂笔记.assets/image-20200530102010111.png)

结论 : 由于设置外键会极大降低对数据修改效率, 因此在实际工作中遇到使用外键的几率比较低


索引

定义: 类似于图书中的目录, 能够起到快速检索数据的作用
作用: 对于大量数据进行查询效率优化时, 可以采取添加索引的策略
-- 索引应用检验案例-- 开启时间监测
set profiling=1;-- 查询示例数据 num = 10000 的值
select * from test_index where num = 10000;-- 查看运行时间
show profiles;-- 添加索引
-- create index 索引名称 on 表名(目标字段)
create index num_index on test_index(num);-- 再次执行查询数据操作
select * from test_index where num = 10000;-- 再次查看运行时间
show profiles;

![image-20200530104630164](Linux 和数据库 day06 随堂笔记.assets/image-20200530104630164.png)

扩展1: 查看索引
-- 扩展1 : 查看索引
-- show index from 表名
show index from test_index;

![image-20200530111632908](Linux 和数据库 day06 随堂笔记.assets/image-20200530111632908.png)

扩展2 : 创表时添加
-- 扩展2 : 创表时添加
create table create_index(id int primary key,name varchar(10) unique,  -- unique : 设置端唯一值age int,key(age) -- 指定添加索引方法
);
-- 查看索引
show index from create_index;
扩展3 : 删除索引
-- 扩展3 : 删除索引
-- drop index 索引名称 on 表名;
drop index age on create_index;

![image-20200530111728027](Linux 和数据库 day06 随堂笔记.assets/image-20200530111728027.png)

结论 : 索引在使用的时候能提高查询效率, 但是在进行插入/更新/删除时, 索引会造成障碍, 因此需要在执行这些操作前, 先移除索引, 操作结束后, 重新添加索引即可


命令行中操作 MySQL

前提: 要进行操作系统环境中, 存在 MySQL 环境
登录 MySQL
mysql -u数据库用户名 -p数据库密码
例如:
mysql -uroot -p123456

![image-20200530113322869](Linux 和数据库 day06 随堂笔记.assets/image-20200530113322869.png)

数据库操作
查看所有数据库 : show databases;
使用数据库 : use 数据库名称;
查看当前使用的数据库 : select database();
创建数据库 : create database 数据库名称 charset=utf8;
删除数据库 : drop database 数据库名称;
查看所有数据库

![image-20200530114833294](Linux 和数据库 day06 随堂笔记.assets/image-20200530114833294.png)

使用数据库

![image-20200530114856547](Linux 和数据库 day06 随堂笔记.assets/image-20200530114856547.png)

查看当前使用的数据库名称

![image-20200530114911902](Linux 和数据库 day06 随堂笔记.assets/image-20200530114911902.png)

创建数据库

![image-20200530114935610](Linux 和数据库 day06 随堂笔记.assets/image-20200530114935610.png)

删除数据库

![image-20200530114947809](Linux 和数据库 day06 随堂笔记.assets/image-20200530114947809.png)


数据表操作
查看数据库中的所有数据表 : show tables;
查看表结构 : desc 表名;
查看创表语句 : show create table 表名;
注意 : 进入到数据库之后, 所有的 SQL 查询语句, 均可以正常使用!
查看所有数据表

![image-20200530120409185](Linux 和数据库 day06 随堂笔记.assets/image-20200530120409185.png)

查看表字段信息

![image-20200530120426735](Linux 和数据库 day06 随堂笔记.assets/image-20200530120426735.png)

查看创表语句

![image-20200530120446940](Linux 和数据库 day06 随堂笔记.assets/image-20200530120446940.png)


命令行和图形化页面操作步骤对比
连接数据库

![image-20200530141709512](Linux 和数据库 day06 随堂笔记.assets/image-20200530141709512.png)

查看数据库

![image-20200530141722101](Linux 和数据库 day06 随堂笔记.assets/image-20200530141722101.png)

选择数据库

![image-20200530141735111](Linux 和数据库 day06 随堂笔记.assets/image-20200530141735111.png)

新建查询

![image-20200530141747407](Linux 和数据库 day06 随堂笔记.assets/image-20200530141747407.png)

查看所有表

![image-20200530141804794](Linux 和数据库 day06 随堂笔记.assets/image-20200530141804794.png)

查看表结构

![image-20200530141831481](Linux 和数据库 day06 随堂笔记.assets/image-20200530141831481.png)

编写 SQL 查询语句

![image-20200530141846334](Linux 和数据库 day06 随堂笔记.assets/image-20200530141846334.png)

结论 : 命令行使用是为了在没有图形化工具的情况下, 应急使用操作数据库的手段


存储过程

定义 : 可以叫存储程序, 通过一定的代码逻辑, 将一句或多久SQL语句进行封装, 通过调用存储过程, 快速实现其内部封装SQL语句操作
用途 : 可以用来向数据库中, 快速插入大量测试数据时使用
基本语法格式
delimiter // -- 取消默认结尾标识符 ; 的作用
create procedure 存储过程名(参数列表)
begin -- 代码逻辑的开始SQL语句
end //
delimiter ; -- 还原默认结尾标识符 ; 的作用
调用方法
-- 在查询窗口中
call 存储过程名();
语法实现
-- 修改句尾标识符为'//'
delimiter //
-- 如果存在 test 存储过程则删除
drop procedure if exists test;
-- 创建无参数的存储过程 test
create procedure test()                 	
begin-- 声明变量 ideclare i int; -- 变量初始化赋值为 0set i = 0;-- 设置循环条件: 当 i 大于 10 时跳出 while 循环while i < 10000 do-- 往 datatest 表插入数据insert into datatest values (null, i);-- 循环一次, i 加一set i = i + 1; -- 结束 while 循环end while;-- 查看 datatest 表数据select * from datatest; 
-- 结束存储过程定义语句
end//
-- 恢复句尾标识符为';'
delimiter ;		

事务

定义 : 所谓事务可以称之一个操作序列, 一系列操作要么都执行, 要么就不执行. 对于数据库来讲, 对于数据的操作行为, 要么都实现, 要么都不实现, 最终需要确保写入到数据库的数据的一致性(原子性)!
事务实现案例
前提: 数据表的数据引擎类型必须是 InnoDB (可以通过查看创表语句来确认)

![image-20200530151924221](Linux 和数据库 day06 随堂笔记.assets/image-20200530151924221.png)

-- 注意 : 出发事务操作一般是由修改数据操作产生(插入数据insert/更新数据update/删除数据delete) -- 开启事务
begin;
-- 提交事务
commit;
-- 回滚事务
rollback;
案例实现步骤
1. 开启两个终端窗口(A窗口操作/B窗口查询)
2. A 窗口 begin 开启事务, 执行修改数据操作
3. B 窗口查询数据(此时B看不到A的修改结果)
4. A 提交事务 commit
5. B 再次查看(可以见到A的修改结果)
6. A 再次开启事务, 执行修改数据操作
7. A 执行回滚事务 rollback
8. B 查看不到A的修改操作结果

视图

场景 : 能够封装 SQL 语句, 以类似于表的形式存在
-- 创建视图语法
-- 注意: 视图命名一般以 v_视图名称 形式实现
-- create view 视图名称 as select 语句;create view v_goods as select goodsName 商品名称, price 价格, num 数量, company 公司 from goods;-- 视图的用法: 当成表查询使用即可
select * from v_goods;-- 复杂 SQL 语句视图封装
select go.goodsName, ca.cateName from goods go inner join category ca on go.typeId = ca.typeId;-- 封装连接查询语句时, 如果存在重名字段名称, 需要通过别名进行修改
create view v_goods_cate as select go.*, ca.id 序号, ca.typeId 类型, ca.cateName from goods go inner join category ca on go.typeId = ca.typeId;select * from v_goods_cate;-- 删除视图语句
-- drop view 视图名称
drop view v_goods_cate;

注意 : 视图可以起到隐藏真实数据表内容的作用

视图名称以 v 开头的原因

![image-20200530161517641](Linux 和数据库 day06 随堂笔记.assets/image-20200530161517641.png)


修改 MySQL 数据库密码

场景 : 遗忘数据库密码时使用
1. 修改数据库配置文件, 使之登录不需要密码
此操作需要具备服务器 root 账户权限
  • 查找配置文件并修改

切换 root 用户
su - 
定位配置文件位置
locate my.cnf
使用 vi 工具打开配置文件
vi /etc/my.cnf
在文件内容 [mysqld] 下方添加此内容, 保存后退出
skip-grant-tables
切换 root 用户

![image-20200530173030630](Linux 和数据库 day06 随堂笔记.assets/image-20200530173030630.png)

查看和获取 MySQL 配置文件

![image-20200530173010669](Linux 和数据库 day06 随堂笔记.assets/image-20200530173010669.png)

添加内容 跳过密码登录

![image-20200530172715882](Linux 和数据库 day06 随堂笔记.assets/image-20200530172715882.png)

保存文件修改内容退出

![image-20200530172643441](Linux 和数据库 day06 随堂笔记.assets/image-20200530172643441.png)

确认配置文件内容已经修改

![image-20200530172605509](Linux 和数据库 day06 随堂笔记.assets/image-20200530172605509.png)

  • 重新启动 MySQL 服务

systemctl restart mysqld
重启完成可以通过查看状态命令进行验证
systemctl status mysqld
重启和查看 mysqld 服务

![image-20200530172540813](Linux 和数据库 day06 随堂笔记.assets/image-20200530172540813.png)

  • 重新登录 MySQL 查看是否需要密码进行登录

确认不需要密码可以登录 MySQL

![image-20200530172506473](Linux 和数据库 day06 随堂笔记.assets/image-20200530172506473.png)

2. 登录数据库, 修改数据库账户密码
注意 : 本步骤为 SQL 语句, 需要在 mysql > 状态下执行
use mysql; -- 选择 mysql 数据库
-- 更新密码
-- 注意 : authentication_string 字段名需要根据 MySQL 版本就行对应修改
-- update user set authentication_string=password('新密码') where user = '用户名';
update user set authentication_string=password('123') where user = 'root';
-- 刷新权限
flush privileges;
3. 还原配置文件设置, 使之登录需要密码
还原配置文件设置与添加设置步骤基本相同
  • 查找配置文件并修改

切换 root 用户
su - 
定位配置文件位置
locate my.cnf
使用 vi 工具打开配置文件
vi /etc/my.cnf
使用 # 注释 [mysqld] 下方内容, 保存后退出
# skip-grant-tables
注释配置文件内容

![image-20200530172431871](Linux 和数据库 day06 随堂笔记.assets/image-20200530172431871.png)

  • 重新启动 MySQL 服务

systemctl restart mysqld
重启完成可以通过查看状态命令进行验证
systemctl status mysqld
  • 重新使用修改后的密码登录 MySQL 即可


MySQL 日志的获取

注意 : MySQL 自带日志功能, 但是开启日志功能, 极其消耗数据库性能, 因此默认情况下是不开启的

-- 查看日志功能是否开启
show variables like 'general%';-- 开启操作
set global general_log = 1;-- 关闭操作
set global general_log = 0;-- 注意: 日志功能使用完成, 需要记得马上关闭, 避免影响数据库性能!!!!!!
查看日志功能是否开启

![image-20200530172252210](Linux 和数据库 day06 随堂笔记.assets/image-20200530172252210.png)

开启日志功能

![image-20200530172311376](Linux 和数据库 day06 随堂笔记.assets/image-20200530172311376.png)

获取日志文件内容(注意: 要从服务器端获取)

![image-20200530172327241](Linux 和数据库 day06 随堂笔记.assets/image-20200530172327241.png)

关闭日志功能

![image-20200530172355424](Linux 和数据库 day06 随堂笔记.assets/image-20200530172355424.png)

http://www.khdw.cn/news/6997.html

相关文章:

  • 网站建设服务费如何做会计分录信息流投放平台
  • DZ做的网站百度发布信息的免费平台
  • 沙河口网站建设百度云引擎搜索
  • 广告业网站开发今日热搜排行第一名
  • 肇庆市场核酸检测怎么给网站做优化
  • 高端网站建设成都深圳网络推广团队
  • 婚纱摄影网站设计高端网站建设公司哪家好
  • 企业站群cms武汉seo首页优化报价
  • 免费做网站怎么做网站吗2常用的网络营销方法及效果
  • 广西城市建设学校手机官方网站网站seo分析报告案例
  • 零基础做网站怎么搭建属于自己的网站
  • 做调查问卷网站24小时网站建设
  • 网站建设服类开票税点网站设计公司模板
  • 新网站上线怎么做seo百度关键词优化首选667seo
  • 个人网站开发协议重庆今日头条新闻消息
  • 深圳企业网站制作公司营销案例网站
  • 武汉北京网站建设站长之家whois查询
  • 怎么做网站平台教程怎么网络推广
  • 网站模板 音乐ai智能搜索引擎
  • 政务版企业微信app下载安装安庆seo
  • 增城微网站建设长沙排名优化公司
  • 真人性做爰免费网站苏州百度推广排名优化
  • 空气过滤棉上海网站建设企业文化内容范本
  • 算命先生的网站怎么做临沂森拓网络科技有限公司
  • 洛阳网站的优化百度百科怎么创建自己
  • 做一个模板网站多少钱汕头网站建设方案开发
  • 如何网站防止采集网络推广员工资多少钱
  • 网站试运营广告推广媒体
  • 推广型的网站怎么做8大营销工具指的是哪些
  • 做网站是怎么赚钱的比较好的友链平台