mysql数据库

mysql入门(三)

空扰寡人 提交于 2020-03-28 18:15:35
1. 数据的完整性 实体:一个实体就是一条记录 域:就是一个字段 引用的完整性:两张表之间的关联的完整(不可避免的) 自定义完整性:自己定义的规则,可以保证各种规范不出现偏差. (1).保证实体完整性 1.自动增长的列( auto_increment) 2.主键的约束( primary key) 3.唯一键( unique) (2)保证域的完整性 1.数据类型的约束 2.默认值的约束 3.非空的约束 (3)保证引用的完整性 建立外键->只能先删除从表,才能删除主表 (4)自定义的完整性 1.存储过程 (是mysql当中的特殊自定义函数) 2.触发器 (是一个特殊的存储过程,不用调用) 2. 外键(foreign key) 外键:从表的关联字段。外键的约束是为了保证引用的完整性,外键和主表的关联字段名字可以不一样,数据类型要一致. 特点: 1.主表中不存在的记录,从表中也不允许插入 2.主表中存在的记录,从表中可以先行删除 3.先删除从表,在删除主表 --学校数据库,学生的信息是主表,成绩是从表 create table userinfo( id int auto_increment primary key comment'学号', stu_name char(64) ); insert into userinfo values(null,'小明'),(null,'小马'),

mysql入门(四)

左心房为你撑大大i 提交于 2020-03-28 18:15:22
数据库查询操作 关键字:select select 结果集 from 数据源 [where 条件] [group by(分组)] [having 条件] [order by(排序) asc|desc] [limit(限制) s,n] 结果集(字段,*代表所有字段);s start 从第几条开始,查询n条数据,s不写默认从第一条开始。 (1)字段表达式 select 除了可以做查询,还可以调用函数,也可以用来做计算。 select rand(); (2)from子句 from 子句后面跟的是数据源。 (3)dual表 dual不是一个真实的表,只是一个语法; ​ dual的主要作用是为了保证select语句的完整性而设计的。 (4)where子句 where子句的作用,筛选过滤数据; 一般跟在数据源的后面,位置不能乱放。 (5)is null | is not null 筛选数据是否为空或不为空; 放在where的后面,是where的判断条件之一。 (6)between | not between 筛选数据的范围,用在数字集上 select * from user where uid between 2 and 4; select * from user where uid>1 and uid<5; (7)MySQL中的运算符 a.算数运算符 + - * / % ++ -- b

一条SQL查询语句是如何执行的?

不想你离开。 提交于 2020-03-28 17:47:49
导读 Mysql在中小型企业中是个香饽饽,目前主流的数据库之一,几乎没有一个后端开发者不会使用的,但是作为一个老司机,仅仅会用真的不够。 今天陈某透过一个简单的查询语句来讲述在Mysql内部的执行过程。 select * from table where id=10;    撸它 首先通过一张图片来了解一下Mysql的基础架构,如下: 从上图可以看出,Mysql大致分为Server层和存储引擎层两部分。 Server层包括 连接器 、 查询缓存 、 分析器 、 优化器 等,其中包含了Mysql的大多数核心功能以及所有的内置函数(如日期,时间函数等),所有跨存储引擎的功能都在这一层实现,比如 存储过程 、 触发器 、 视图 等。 存储引擎层负责数据的存储和提取。它的架构是可插拔式的,支持 InnoDB 、 MyISAM 等多个存储引擎。Mysql中主流的存储引擎是InnoDB,由于它对事务的支持让它从Mysql5.5.5版本开始成为了默认的存储引擎。 大致了解了整体架构,现在说说每一个基础的模块都承担着怎样的责任。 1. 连接器 顾名思义,是客户端和Mysql之间连接的媒介, 负责登录、获取权限、维持连接和管理连接 。连接命令一般如下: mysql [-h] ip [- P] port -u [user] -p 在完成经典的TCP握手后,连接器会开始认证身份,要求输入密码。

MySQL数据库升级

折月煮酒 提交于 2020-03-28 13:49:07
当前不少系统的数据库依旧是MySQL5.6,由于MySQL5.7及MySQL8.0在性能及安全方面有着很大的提升,因此需要升级数据库。本文通过逻辑方式、物理方式原地升级来介绍MySQL5.6 升级至MySQL5.7的方法,并介绍其使用场景。 1. 逻辑方式升级 逻辑方式升级其实就是通过逻辑备份工具(例如mysqldump工具)将数据库、表、其他相关对象及数据逻辑备份成SQL脚本,再将其还原至MySQL5.7的实例中。 详细步骤如下: 1.1 备份数据库 当前数据库的版本为MySQL5.6.27,现在准备备份 因为库比较小,因此使用mysqldump进行备份即可。mysqldump备份的方法可以参考历史文章进行了解 MySQL数据备份及还原(一) https://mp.weixin.qq.com/s/JbLThtgUq5RjkCuztSgBJg 或 https://www.cnblogs.com/gjc592/p/12505347.html 备份脚本: /* 备份所有库及相关对象 */ /usr/local/mysql/bin/mysqldump -uroot -p --socket=/app/data/mysql3307/tmp/mysql.sock --master-data=2 --default-character-set=utf8 --routines --triggers

NodeJs mysql 开启事务

房东的猫 提交于 2020-03-28 12:55:10
如题;node后台使用mysql数据库,并使用事务来管理数据库操作。 这里主要讲一个事务的封装并写了一个INSERT 插入操作。 code: 基础code: db.config.js const mysql = require('mysql') const pool = mysql.createPool({ connectionLimit: 20, //连接池连接数 host: 'localhost', //数据库地址,这里用的是本地 database: 'xxxx', //数据库名称 user: 'xxxxx', // username password: '*****' // password }) //返回一个Promise链接 const connectHandle = () => new Promise((resolve, reject) => { pool.getConnection((err, connection) => { if(err) { console.error('链接错误:' + err.stack + '\n' + '链接ID:' + connection.threadId) reject(err) } else { resolve(connection) } }) }) module.exports = connectHandle 事务操作

MySQL-安装mysql8

元气小坏坏 提交于 2020-03-28 12:34:51
1. 安装配置 # 解压 tar -xf mysql-8.0.18-el7-x86_64.tar.gz -C /ups/app/mysql/ cd /ups/app/mysql/ mv mysql-8.0.18-el7-x86_64 mysql8 cd mysql8 mkdir -p {config,logs} mkdir -p /ups/data/mydata/mysql8 chown -R mysql:mysql . chown -R mysql:mysql /ups/data/mydata/mysql8 chmod 700 /ups/data/mydata/mysql8 cat> config/my.cnf <<-EOF [mysqld] basedir = /ups/app/mysql/mysql8 datadir = /ups/data/mydata/mysql8 log-error = /ups/app/mysql/mysql8/logs/mysql6033.err pid-file = /ups/app/mysql/mysql8/logs/mysql6033.pid socket = /ups/app/mysql/mysql8/logs/mysql6033.sock port = 6033 default-storage-engine = INNODB

知名网站的技术发展历程

非 Y 不嫁゛ 提交于 2020-03-28 10:03:35
互联网已经发展多年,其中不乏脱颖而出者,这些网站多数都已存在了接近 10 年或 10 年以上,在如此长时间的发展过程中,除了业务上面临的挑战,在技术上也面临了很多的挑战。 我挑选了一些 Alexa 排名较前的网站 ( 排名截止到 2012 年 4 月 21 日),看看它们在技术上是如何应对业务发展过程中的挑战的。 Google 目前 Alexa 排名第 1 。它诞生于 1997 年,当时是一个研究性项目,每个月 build 一次索引, build 出来的索引通过 sharding ( shard by doc )的方式分散到多台服务器( Index Server )上,具体的网页数据同样通过 sharding 的方式分散到多台服务器( Doc Server )上,当用户提交请求时,通过前端的一台服务器将请求提交给 Index Server 获得打了分的倒排索引,然后从 Doc Server 提取具体的网页信息(例如网页标题、搜索关键词匹配的片段信息等),最终展现给用户。 随着索引的网页增加,这个结构可通过增加 Index Server 以及 Doc Server 来存储索引以及网页的数据,但仍然会面临其他很多方面的问题,于是在这之后的十多年的时间里, Google 做了很多事情来改进上面的结构。 1999 年, Google 增加了一个 Cache Cluster ,用来

logstash-5.0同步mysql

泪湿孤枕 提交于 2020-03-28 07:56:04
环境 Windows10企业版X64 安装logstash-input-jdbc插件 进入logstash/bin/目录,命令: logstash-plugin install logstash-input-jdbc 执行效果如下: 注:删除插件命令: logstash-plugin remove logstash-input-jdbc 查看可用插件列表命令用: logstash-plugin list mysql存在的数据库及表 数据库名为m8,测试数据有8张表,约38万条数据。 需要两个文件:1)jdbc.conf,2)jdbc.sql。 在logstash/bin目录下新建jdbc.conf文件,内容如下: input { stdin { } jdbc { # mysql jdbc connection string to our backup databse jdbc_connection_string => "jdbc:mysql://localhost:3306/m8" # the user we wish to excute our statement as jdbc_user => "xuxy03" jdbc_password => "xuxy03" # the path to our downloaded jdbc driver jdbc_driver

mysql常见面试题目

北城余情 提交于 2020-03-28 04:48:47
1, mysql的复制原理以及流程。 (1)先问基本原理流程,3个线程以及之间的关联。 (2)再问一致性,延时性,数据恢复。 (3)再问各种工作遇到的复制bug的解决方法 2,mysql中myisam与innodb的区别,至少5点。 (1) 问5点不同 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>.InnoDB支持MVCC, 而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持 5>.InnoDB不支持全文索引,而MyISAM支持。(X) (2) 问各种不同mysql版本的2者的改进 (3)2者的索引的实现方式 3,问mysql中varchar与char的区别以及varchar(50)中的30代表的涵义。 (1)varchar与char的区别 char是一种固定长度的类型,varchar则是一种可变长度的类型 (2)varchar(50)中50的涵义 最多存放50个字符 (3)int(20)中20的涵义 int(M)中的M indicates the maximum display width (最大显示宽度)for integer types. The maximum legal display width is 255. (4)为什么MySQL这样设计? 4

MySQL索引查询原理

烂漫一生 提交于 2020-03-28 00:02:14
什么是索引? “索引”是为了能够更快地查询数据。比如一本书的目录,就是这本书的内容的索引,读者可以通过在目录中快速查找自己想要的内容,然后根据页码去找到具体的章节。 数据库也是一样,如果查询语句使用到了索引,会先去索引里面查询,取得数据所在行的物理地址,进而访问数据。 索引的优缺点 优势:以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序; 劣势:索引本身也是表,因此会占用存储空间。索引的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表。 索引的分类 在MySQL中,常见的索引类型有:主键索引、唯一索引、普通索引、全文索引、组合索引。创建语法分别为: 其中,组合索引又称为多列索引,上述代码中最后一个例子就是建立了3列的索引。MySQL在根据索引查询时,会遵循“最左匹配”原则,即先根据col1的条件查,再根据col2的条件查,然后再根据col3的条件去查。 如果跳过了一个列直接查后面的列,比如下面的语句,就不能使用上面创建的索引了: 这里有一个小技巧,如果你前面的列是一个简单的枚举类型,比如性别等,可以用在where语句中加 col1 in(MALE, FEMALE) 来“跳过” col1 列,并使用上述索引。 对于某列如果是字符串且比较长(比如UUID