mysql

【笔记】MySQL的基础学习(二)

蓝咒 提交于 2021-02-18 04:00:40
【笔记】MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1、创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS SELET nid, name FROM A WHERE nid > 4 2、删除视图 格式:DROP VIEW 视图名称 DROP VIEW V1 3、修改视图 格式:ALTER VIEW 视图名称 AS SQL语句 ALTER VIEW v1 AS SELET A.nid, B. NAME FROM A LEFT JOIN B ON A.id = B.nid LEFT JOIN C ON A.id = C.nid WHERE A.id > 2 AND C.nid < 5 4、视图的使用 视图就是虚拟表,只能用作查询 SELECT * FROM v1 二 触发器 当对某张表做:增删改操作时,可以使用触发器自定义关联行为 1、创建基本语法 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN ... END 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN ... END

k8s-部署mysql集群

时间秒杀一切 提交于 2021-02-18 03:51:23
临时操作后续细化补充 1.创建存储目录: mkdir -p /server/yaml/app/mysql;cd /server/yaml/app/mysql 2.创建pv cat mysql.pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs-mysql01 #创建的pv名称可创建多个. namespace: mt-math #属于的命名空间 spec: capacity: storage: 5Gi #创建的pv容量为1G accessModes: - ReadWriteOnce #pv的访问模式:可读可写可挂在多个节点 persistentVolumeReclaimPolicy: Retain #回收策略 #storageClassName: pv-nfs-mysql nfs: #创建的pv数据来源 path: /NFS/mysql/pv01 #数据源目录 server: 192.168.0.14 #数据源ip --- apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs-mysql02 #创建的pv名称可创建多个. namespace: mt-math #属于的命名空间 spec: capacity: storage: 5Gi

[NewLife.XCode]功能设置

谁说胖子不能爱 提交于 2021-02-18 01:57:35
NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中,代表作有百亿级大数据实时计算项目。 开源地址: https://github.com/NewLifeX/X (求star, 652+) 连接字符串 XCode支持SqlServer、SQLite、MySql、Oracle、PostgreSQL、Access、SqlCe等多种数据库,常用连接字符串模板如下: < add name ="SQLite" connectionString ="Data Source=test.db;" providerName ="Sqlite" /> < add name ="MySql" connectionString ="Server=.;Port=3306;Database=mysql;Uid=root;Pwd=;" providerName ="MySql.Data.MySqlClient" /> < add name ="MSSQL" connectionString ="Server=.;User ID=sa;Password=sa;Database=Test;datapath=~\App_Data"

mysql用户操作

纵饮孤独 提交于 2021-02-18 01:30:14
MySQL创建用户与授权 一. 创建用户 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username:你将创建的用户名 host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符% password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器 例子: CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456'; CREATE USER 'pig'@'%' IDENTIFIED BY '123456'; CREATE USER 'pig'@'%' IDENTIFIED BY ''; CREATE USER 'pig'@'%'; 二. 授权: 命令:GRANT privileges ON databasename.tablename TO 'username'@'host' 说明: privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL databasename:数据库名

技术分享 | MySQL 查询优化

爱⌒轻易说出口 提交于 2021-02-18 01:20:42
文章转载自公众号:MySQL解决方案工程师 , 作者 徐轶韬 本文中具体内容,可以关注公众号:爱可生开源社区,观看 网络研讨会的视频 。 上周徐轶韬老师在 MySQL 团队的网络研讨会上,分享了 MySQL 查询优化相关内容,以下是相关内容整理,供各位参考。 内容分为如下几个方面: 基于成本的 MySQL 查询优化。 监视、分析和查询优化的工具有哪些? 数据访问方法与如何选择索引。 如何对连接进行优化。 如何影响优化器。接下来,简明介绍一下相关内容。 1. 基于成本的 MySQL 查询优化: MySQL 的优化器将 SQL 查询作为输入,并产生一个计划来执行该查询。 例如,应该按什么顺序连接表以及应该使用哪些索引。目标是能够从众多可能的执行计划中找到最佳的执行计划。 MySQL 使用基于成本的优化器。计划的成本大致反映了查询所需的资源,其中主要因素是计算查询时将要访问的行数。在优化过程中,优化器会选择连接顺序,决定使用哪个索引等等。同时,优化器还会根据从存储引擎获取的数据的统计信息作出决定。并且还依赖于数据字典中的元数据信息。 因此,查询优化的总体思路如上图所示。 基于成本的查询优化器将为不同的操作分配成本,如表扫描和索引查找。 成本单位是从磁盘读取随机数据页的成本。所有其他成本数字都与此成本单位有关。基于这些成本,优化器将计算可供选择的计划的成本。最终它将选择成本最低的计划。

新年Aliyun面经分享:基础+项目+源码+高阶

≡放荡痞女 提交于 2021-02-18 01:12:36
眼看着春招就来了!所以就让我想起去年秋招之路,现在跟大家分享一下我的面试路程,希望也能帮助大大家!原本秋招差不多顺利结束了,几乎阿里、百度、美团、字节、滴滴等等的大厂我都有疯狂投岗面试。虽然结果是比较圆满的,不过Aliyun倒是给我留下了深刻的印象。原因?请往下看... Aliyun一面:MySQL+Redis+JUC+Kafka+项目 Aliyun二面:项目+Java+数据库+网络+高并发+基础 Aliyun三面:项目+源码 Aliyun四面:基础+项目+缓存+锁 问的是还挺多的,个人觉得也挺广泛的(毕竟面试造火箭,工作拧螺丝),还有一些没记住(脑容量有限~哈哈哈~)。以上只是大块方向,我们一起来看看具体的问题如何吧... 【文末有相关问题的解析】 Aliyun一面:MySQL+Redis+JUC+Kafka+项目 1. MySQL (1)MySQL数据量太大怎么办,如何分库分表 (2)binlog,读写分离,主从复制 (3)MySQL里的锁了解吗 2. Redis (1)主从复制 (2)分布式锁 (3)哈希槽,一致性哈希 3. JUC (1)锁 4. Kafka (1)高性能的原因 Aliyun二面:项目+Java+数据库+网络+高并发 1. 项目 (1)为什么选Flume (2)为什么选Kafka (3)数据哪来的 (4)如何给出推荐算法 2. JAVA (1

How to insert data to multiple tables with foreign key dependencies involved (MySQL)

馋奶兔 提交于 2021-02-18 00:49:36
问题 I am looking for the best-practice way to insert data to multiple MySQL tables where some columns are foreign key dependencies. Here is an example: Table: contacts -------------------------------------------------------------------- | contact_id | first_name | last_name | prof_id | zip_code | -------------------------------------------------------------------- The 'contacts' table has PRIMARY KEY (contact_id) which simply auto_increments, and FOREIGN KEY (prof_id) REFERENCES 'profession'

Laravel系列之环境搭建 — VirtualBox+Vagrant+Homestead

怎甘沉沦 提交于 2021-02-17 22:56:40
一、为啥需要搭建环境   为了解决环境不统一问题,所以要搭建这么个玩意儿 二、步骤    Laravel对环境有所要求(不使用Homestead情况下),具体参考 官网    使用Homestead步骤   1. Homestead、VirtualBox、Vagrant     摘要:     Laravel 致力于让整个 PHP 开发体验变得愉快, 包括你的本地开发环境。 Vagrant 提供了一种简单,优雅的方式来管理和配置虚拟机。 Laravel Homestead 是一个官方预封装的 Vagrant box,它为你提供了一个完美的开发环境,而无需在本地机器安装 PHP 、Web 服务器和其他服务器软件。不用担心会搞乱你的操作系统!Vagrant boxes 是一次性的。如果出现问题,你可以在几分钟内销毁并创建 Box! Homestead 可以运行在任何 Windows,Mac,或 Linux 系统,它包括了 Nginx web 服务器, PHP 7.2,PHP 7.1,PHP 7.0,PHP 5.6, MySQL,PostgreSQL,Redis,Memcached, Node,以及开发 Laravel 应用程序所需要的东西。——摘自后盾人向军大叔(网站升级中,后期补链接)    1. 1 VirtualBox     VirtualBox 是 Oracle

使用Canal实现redis和mysql的同步

ⅰ亾dé卋堺 提交于 2021-02-17 22:18:07
使用Canal实现redis和mysql的同步 canal 工作思路 Canal 会将自己伪装成 MySQL 从节点(Slave),并从主节点(Master)获取 Binlog,解析和贮存后供下游消费端使用。Canal 包含两个组成部分:服务端和客户端。服务端负责连接至不同的 MySQL 实例,并为每个实例维护一个事件消息队列;客户端则可以订阅这些队列中的数据变更事件,处理并存储到数据仓库中。下面我们将mysql同步到 redis mysql版本 5.6 canal版本 1.1.0 安装 mysql 后修改自己mysql配置 vim /etc/my.cnf # 开启mysql的binlog模块 log-bin=mysql-bin binlog-format=ROW # server_id需保证唯一,不能和canal的slaveId重复 server_id=121 # 需要同步的数据库名称 binlog-do-db=test_canal # 忽略的数据库,建议填写 binlog-ignore-db=mysql # 启动mysql时不启动grant-tables授权表 skip-grant-tables 创建一个mysql用户 canal 并且赋远程链接权限权限,和测试库 test_canal , CREATE USER canal IDENTIFIED BY 'canal';

mysql 通过测试'for update',深入了解行锁、表锁、索引

喜夏-厌秋 提交于 2021-02-17 22:15:38
mysql 通过测试'for update',深入了解行锁、表锁、索引 参考:https://www.cnblogs.com/wangshiwen/p/9837408.html 条件 FOR UPDATE 仅适用于InnoDB存储引擎,且必须在事务区块(BEGIN/COMMIT)中才能生效。 mysql默认情况下每个sql都是单独的一个事务,并且是自动提交事务。 测试之前需要设置成非自动提交事务,不然无法模拟并发访问: mysql> select @@autocommit; + --------------+ | @@autocommit | + --------------+ | 1 | + --------------+ 1 row in set ( 0.00 sec) mysql> set autocommit = 0; Query OK, 0 rows affected ( 0.00 sec) mysql> select @@autocommit; + --------------+ | @@autocommit | + --------------+ | 0 | + --------------+ 1 row in set ( 0.00 sec) 此修改只针对当前窗口有效,重新打开的新窗口依然是自动提交事务的 所以要就需要两个窗口,窗口a:非自动提交事务,用于for