mysql初级数据库_MYSQL初级数据库操作

MYSQL是个好东西啊,只是比较会折腾人,所以我先记录一下MySQL 数据备份的基础知识,省得以后又去东找西找

Windows文件名、目录名不区分大小写,Linux区分大小写

查看MySQL中的数据库

fda99b07e5f14968b8cd6c9b7b603a27.png

这里有一个shop的数据库,

information_schema(系统数据库定义了所有数据库对象的元数据信息)、

mysql(记录MySQL账号信息以及账户的访问权限)、

performance_schema(收集MySQL服务器的性能数据)、

sys(这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据存储过程可以可以执行一些性能方面的配置,也可以得到一些性能诊断报告内容存储函数可以查询一些性能信息)

查看数据库放置路径

路径下的shop文件夹中的db.opt记录着当前数据库默认字符集及字符序等信息,可直接对其修改,或者 MySQL命令行:alter database shop character set gbk;

1e89fffd22e1fe299bfa63aa85a740e8.png

查看shop数据库信息

7d3a1fe6e99f48368bb5c4520fa8acd7.png

删除shop,再来创建一个shop

a4844c5cc1f8e4faf3d5d11c48068f20.png

创建表(记得先指明数据库:use shop;)

执行sql脚本,使用的资料可以去这里下载

957423eaa1ab13ecf39089703164606d.png

查看表

bca7f5e914e80f1733cddab03bbe58c5.png

指明要查看表的结构

a8380bd15c86718ed7cf9f622ce3bc32.png

查看存储引擎

c79fa03a1ce45a38d537802213afcc88.png

可以看到InnoDB是默认的存储引擎,如果想临时修改会话的引擎可以使用

cb4dc3a5b9449f518cb6ac331e83744b.png

如果想要更改表的存储引擎可以使用

4529c08f544f7551dd7472faec85bf38.png

以shop数据库,shohin表为例

MyISAM的文件结构

shop文件夹中

shohin.frm 记录了表的结构

shohin.MYD 表数据文件

shohin.MYI 表索引文件

工作原理

MyIASM

记录首先在MySQL服务器内存上产生,然后写入到外存中的MYD中,最后将索引信息写入到MYI中,产生时间延迟主要是缓存的原因

MyIASM备份很简单,直接复制shop文件夹即可

InnoDB的文件结构

shop文件夹中

shohin.frm 记录了表的结构

db.opt 数据库的字符集和字符序等信息

table_name.ibd 独享表空间存放另一个表的数据文件

shop文件同级目录下

ibdata1 表空间文件存放数据(共享的)后面还有独享的

ib_logfile0、ib_logfile1 重做日志文件信息

不知道重做日志,故百度内容如下:

重做日志redo log file是LGWR进程从Oracle实例中的redo log buffer写入的,是循环利用的。就是说一个redo log file(group) 写满后,才写下一个。

归档日志archive log是当数据库运行在归档模式下时,一个redo log file(group)写满后,由ARCn进程将重做日志的内容备份到归档日志文件下,然后这个redo log file(group)才能被下一次使用。

不管数据库是否是归档模式,重做日志是肯定要写的。而只有数据库在归档模式下,重做日志才会备份,形成归档日志。

一般来说,归档日志结合全备份,用于数据库出现问题后的恢复使用。

重做日志是循环使用的。比如说,有三个重做日志组A、B、C。那么,当A写满后,系统就调用ARCn进程,将A备份为归档日志,同时B已经开始使用了。

工作原理

InnoDB

记录首先在MySQL服务器内存上产生,然后写入到外存中的ibdata1中,最后将重做日志信息写入到ib_logfile0、ib_logfile1中,基本没有时间延迟

InnoDB备份,首先复制shop文件夹,然后复制ibdata1、ib_logfile0、ib_logfile1文件

值得注意的是ibdata1是InnoDB的共享表空间,

InnoDB的表空间

共享表空间

存放了所有InnoDB表的数据信息、索引信息、各种元数据信息以及事务回滚信息,默认情况下存放在data根目录下的ibdata1中

独享表空间

存放的是该表的信息,一般命名为table_name.ibd,路径是:本文在shop数据库中

默认是关闭独享表空间,可使用set @@global.innodb_file_per_table=ON;开启

82d54efff6dae4d487893dac58693a76.png

但操作独享表空间依然会影响到ibdata1、ib_logfile0、ib_logfile1文件,

变量

分为系统变量(全局变量、会话变量)、用户自定义变量(以后有时间再说)

查看系统变量

全局变量(393个): show global variables;

会话变量(393+12):show session variables;

@@能标记会话系统变量,若会话系统变量不存在则标记全局变量,查看会话变量不存在时,返回全局变量

备份时:

flush tables with read lock; 可以禁止更新,但无法禁止查询

unlock tables; 可以解锁前面的禁止

表结构

先来看看MySQL的数据类型

3daebc6f5b7b7a602024e73cdef84bcd.png

好家伙,还挺多。。。

日期时间型的datetime和timestamp区别

每次启动前记得. E:\mysql\init.sql设置一下字符集,如有不懂可参照MYSQL之字符问题探究

创建一个表实验一下

ab1b214a5a71bd53344b8ce17f5d3d85.png

插入数据(数据只能一行一行的插入):

008e86564c09c87fb02795e0783dfea4.png

timestamp是记录当前服务器的时间,所以即使插入null,它也是会记录当前时间的,事实上日期时间型属于数值类型可进行简单加减运算

通过show variables like ‘time_zone%’;可查看当前MySQL的时间设置

c906d851f7c7a1245370cfdada2b3c59.png

MySQL复合类型(set、enum)

enum只能从集合中取一个值,set可以取多个值

例子:

创建一个含set、和enum集合的表

0764490ced2f14206745348d84bf93eb.png

插入数据(报错:ERROR 1265 (01000): Data truncated for column ‘interest’ at row 1)

解决: MySQL默认strict mode,即严格sql语句模式,可以临时修改为”ansi”模式,语句:set sql_mode=’ansi’;

32fb8ff999bf038de4ec2983d7d74ce9.png

修改成功

1686a589c497bf6165303a27316bf9d6.png

选择

fb4aeac5ee9ea8a97c3d085adf220bcb.png

因为只能选择set集合里面的东西,所以上面的音乐就忽略掉了。

MySQL约束(6种)

1、主键约束

字段名 数据类型[其他约束条件] primary key

若为复合主键:primary key(字段名1,字段名2)

2、非空约束

字段名 数据类型 not null

3、检查约束

MySQL事实上不支持检查约束

若为字符串类型,则可用enum或set实现检查约束

若为数值类型,则用触发器实现

若为其他类型,最好用触发器实现

4、默认值约束

字段名 数据类型[其他约束条件] default 默认值

5、唯一性约束

字段名 数据类型 unique

6、外键约束

外键约束只要用于定义表与表之间的关系,表A外键字段要么是NULL,要么函数依赖于表B主键字段的值,(此时将表A称为表B的子表,表B称为表A的父表)

constraint 约束名 foreign key (表A字段名或者字段名列表) references 表B (字段名或字段名列表)[on delete级联选项][on update级联选项]

级联选项4种取值如下:

cascade:父表记录的删除或者更新操作会自动删除或更新子表中与之对应的记录

set null:父表记录的删除(delete)或者更新会将子表中与之对应记录的外键值自动设置为null值

no action:父表记录的删除或更新操作如果子表存在与之对应的记录那么删除或更新操作将失败

restrict :与no action功能相同,且为级联选项的默认值

注意: 如果某个字段存在多种约束条件,则约束条件的顺序是任意的。

自增型字段

字段名 数据类型 auto_increment

注意 自增型字段的数据类型必须为整数,若向自增型字段插入一个NULL值或0,字段值会被自动设置为比前一个值大1,即字段值总是比前一个字段值大,最好将自增型字段设置为主键,否则可能将出现一些错误

创建表时,可以在表的括号外面设置engine=存储引擎类型 default charset=字符集类型 (若省略则将沿用character_set_database的默认值)

ps: 仅对MyISAM存储引擎有用的选项

pack_keys=压缩类型

0 取消所以索引中所以关键字的压缩

1 将压缩索引中所有关键字的存储空间

default 表示只压缩索引中字符串类型的关键字,但不压缩数值类型的关键字

复制一个表结构

法一:

create table new_table like old_table;

284a1424907cc5488716ae480de4ab25.png

法二:

create table new_table select * from old_table

dba2e4421a070498c74a3695caf33704.png

小结

MySQL确实很实在,对我而言命令行操作也确实十分的带劲,各种炫酷的语句,很快,好使,不错,加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

odp 加固 mysql_creator是一款为php框架odp的脚手架工具

creator项目介绍creator是一款为php框架odp的脚手架工具,主要用于生成dao层,dataService层,pageService层,controller层,action层,避免重复性劳动和提高工作效率软件架构软件架构说明使用说明(ps:配置已支持当前项目组文件路径,放置在app同级…

java中的mod运算_Java中的运算符与控制语句

运算符与控制语句是Java语言中运用最为基础也是最为广泛的,所以今天就详细的介绍下运算符与控制语句。一、运算符1.算数运算符1).单目运算符: 、- 、 、-- A: 表示 a.正号(一般省略);b.加法运算&#xff1b…

mysql如何查看表拥有的键_如何查看表或列的所有外键?

白板的微信表:SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGEWHEREREFERENCED_TABLE_SCHEMA ANDREFERENCED_TABLE_NAME TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFER…

laravel 自带的用户登录视图路径_Laravel实现找回密码及密码重置,详细操作

Laravel实现找回密码及密码重置功能在php实现与在这里实现会有什么区别呢,下面我们来看看Laravel中的例子,在php中就不介绍了大家都懂的。忘记密码是应用中常见的场景之一,Laravel5也提供了对密码重置的支持,我们只需稍微做一下配…

yii不能没有提示验证错误信息_安装Mac系统时提示”应用程序副本不能验证 它在下载过程...”的解决方法...

在安装旧版本macOS系统时,比如macOS Mojave 10.14、macOS Sierra、OS X El Capitan、OS X Yosemite、OS X Mavericks等系统,会出现错误无法安装:“应用程序副本不能验证 它在下载过程中可能已遭破坏或篡改”,“This copy of the I…

mysql hugepage_因未配置Hugepage会话数添增悲剧案例

今天一朋友反馈他们的一个数据库hang住了,通过ssh也不能登录系统,他们没有办法重启系统解决问题,现在想让我帮忙找出问题原因分析awr得出询问朋友,他们的库一般session保持在200个左右,这次突然飙升到750以上,属于异常情况分析监听日志看到在截图的时间内,整体访问较频繁,某个i…

ip地址自动切换器_网络IP切换器IPProviders下载_IPProviders官方版下载1.1.22

IPProviders官方版是非常强大的ip切换器助手,可以进行ip地址更换,网关和dns更改。使用方法很简单,用户只需要提前设置好ip地址,需要切换的时候就可以任意切换了,让你可以随意切换更改自己的IP地址,非常方便…

mysql心得体会一百字_MYSQL CPU 100%实例详解

MYSQL CPU 100%实例详解2011/7/2 11:19:19作者:xy我要评论(0)自己的一台主机(Windows 2003 IIS PHP MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 …

mysql联合索引like_MySQL全文索引、联合索引、like查询、json查询速度大比拼

查询背景有一个表tmp_test_course大概有10万条记录,然后有个json字段叫outline,存了一对多关系(保存了多个编码,例如jy1577683381775)我们需要在这10万条数据中检索特定类型的数据,目标总数据量:2931条SELECTCOUNT(*) …

mysql 代替分号_除了使用分号(;)终止符之外,还有其他可执行MySQL查询的内置命令吗?...

借助以下内置命令,即使不使用分号(;)终止符,MySQL也可以执行查询。自我我们可以通过使用\ G选项来使用此命令。这意味着将当前语句发送到要执行的服务器,并以垂直格式显示结果。当我们使用\ G并在一条语句(单行或多行)中省略分号(;)时&#x…

python在线包安装mysql_python安装mysql的依赖包mysql-python操作

一般情况下,使用pip命令安装即可:[rootdthost27 ~]# pip install mysql-python但是在实际工作环境中,往往会安装失败,这是因为系统缺少mysql的相关依赖组件。所以必须先安装mysql-devel类的包,而且必须要对应好mysql客…

python数组切片赋值后不改变原数组_js数组操作---改变原数组和不改变原数组的方法整理...

一、改变原始数组的方法:1、pop()删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不 改变数组,并返回 undefined 值。arrayObject.pop() 。2、push()push() 方…

收藏列表放入MySQL还是redis_mysql导入redis

程序遍历MySQL然后插入Redis,效率极低。利用redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。可以把Mysql查询的内容格式化成redis-cli可用数据格式。1, 根据表创建一个sql,将数据转换为redis可用的格式(1) 表…

java 虚拟机内存不足_JAVA虚拟机内存不够解决办法

软件152笪世海1. 查找matlab根路径.在matlab命令行中敲入:matlabroot显示根路径,如:C:\MATLAB72.查看当前Java虚拟机最大堆内存, 敲入:java.lang.Runtime.getRuntime.maxMemory3.查看Java虚拟机版本.敲入:version -java4.在 $MATLAB\bin\$ARCH 路径下新建java.opts文件.$MATLAB…

Java发送会议邮件 时区_【上海校区】基于JavaMail的日历(会议)邮件发送实现

[Java] 纯文本查看 复制代码/*** 发送会议邀请邮件** param toMailAddress 收件人(邀约人),支持多个* param mailSubject 邮件主题* param mailContent 邮件内容(建议传入velocity去构建生成的HTML内容)* param summary 摘要,即日历(日程)上显示的标题* …

java saxexception_SAXException

公布的WebService别人调用时出现org.xml.sax.SAXexception发布的WebService别人调用时出现org.xml.sax.SAXexception发布的webservice,返回的一个json,php调用的时候有一定几率出现org.xml.sax.SAXexception,不知道是什么原因3热度com.ibm.ws.jsp.JspCor…

fun函数python_Python函数

Python函数一般函数定义方式def sum(a, b): return ab##返回a与b的和123一些概念与特性嵌套Python的函数是可以嵌套定义的def Fun1(): print("Runing Fun1...") def Fun2(): print("Runing Fun2...") Fun2()12345但是要注意在内部定义就只能在内部使用&…

java 给对象创建实例_Java中创建(实例化)对象的五种方式

Java中创建(实例化)对象的五种方式1、用new语句创建对象,这是最常见的创建对象的方法。2、通过工厂方法返回对象,如:String str String.valueOf(23);3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance(…

java markdown转word_一键将 Word 转换为 Markdown

李缘 | | Stata 连享会 (知乎 | 简书 | 码云方法一:Writage Pandoc -- 双剑合璧!打开 Writage网页,点击Download,再点击Download Now完成下载网页下载运行安装程序,一般按照默认选项安装就好啦安装重启电脑&#xff0…

java盒图_java合成图片

package com.pbids.sanqin.util;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.net.URL;public class PicUtil {private Font font new Font("宋体", Font.PLA…