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,一经查实,立即删除!

相关文章

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(*) …

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

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

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

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

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

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

deepin安装java_Deepin安装Eclipse

Deepin安装Eclipse系统环境:Deepin 15.5软件环境:Eclipse 4.7官网下载最新版elipse(4.7)安装板或压缩版均启动失败(弹框报错),原因是deepin默认安装的openjdk1.9的版本,而eclipse支持的最低版本为jdk1.8版本,本机又需要jdk1.7版本的,因此需要修改eclipse启动vm参数才…

简述java在安卓开发中的应用_Java 自定义注解在安卓开发中的简单运用

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、接口、枚举、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说…

java正则表达式 分词_[Java]使用正则表达式实现分词

手工分词稍嫌麻烦,不好维护,而利用正则表达式就利索多了。Java提供了java.util.regex.Matcher,java.util.regex.Pattern类来帮助我们实现此功能。例一:以下程序将把"This is a farm that that raises dairy cattle."中的…

as和java什么关系_深入理解happens-before和as-if-serial语义

概述本文大部分整理自《Java并发编程的艺术》,温故而知新,加深对基础的理解程度。指令序列的重排序我们在编写代码的时候,通常自上而下编写,那么希望执行的顺序,理论上也是逐步串行执行,但是为了提高性能&a…

java atomiclong 使用_Java并发AtomicLongArray类

全屏java.util.concurrent.atomic.AtomicLongArray类提供了可以原子读取和写入的底层long类型数组的操作,并且还包含高级原子操作。 AtomicLongArray支持对基础long类型数组变量的原子操作。 它具有获取和设置方法,如在变量上的读取和写入。 也就是说&am…

我的世界java版刷雪球机,我的世界手机版怎么刷雪球 无限刷雪球机

随着全球变暖,厄尔尼诺现象加剧,一些生活在亚热带的孩子越来越感受不到下雪的喜悦,雪场的票子也是难求!不过不要着急,Minecraft给你模拟了一个生存的环境,在这里,你可以和好友联机打雪仗&#x…

php如何随机显示图片,php中随机显示图片的函数代码_php

/*********************************************** Filename : img.php* Author : freemousehttp://www.gaodaima.com/?p49284php中随机显示图片的函数代码_php* web : www.cnphp.info* email :freemouse1981gmail.com* Date : 2010/12/27* Usage:* * **********************…

oracle 8i漏洞渗透,一次通过Oracle8i入侵系统之旅(组图)

最近看了些有关Oracle的安全资料,看后随手做了一个渗透测试,把过程记录下来方便日后查阅.先用SuperScan4.0扫描下要测试的主机,速度很快,结果如图1所示:图 1端口 1521 是 Oracle 的 TNS Listener 默认监听的端口,通过扫描报告还可以看到Oracle的版本为8i.现在还不知道对方的操作…

linux系统安装serv u,建立第一个可用的FTP服务器

二、建立第一个可用的FTP服务器1、比如本机IP地址为“192.168.0.48”,已建立好域名“ftp.bbc.com”的相关DNS记录。2、打开Serv-U管理器。选上图的“Serv-U Administrator”,即出现“Setup Wizard”(设置向导)。此向导可以帮你轻松地完成基本设置&#x…