MySql的使用方法

一.什么是MySql

MySql是一种数据库管理系统,是用来存储数据的,可以有效的管理数据,数据库的存储介质为硬盘和内存。

和文件相比,它具有以下优点:

文件存储数据是不安全的,且不方便数据的查找和管理,在程序中控制不方便,不利于海量存储数据。所以数据库的水平用来衡量一个程序水平的重要指标。

二.数据库的基本使用语法

连接数据库

输入:mysql -h 127.0.0.1 -P 3306 -u root -p

没有-h 默认的是本地连接,没有-p 默认是3306端口号。

退出数据库:quit

创建数据库:

语法:

create database [if not exists] db_name [create_specification ,[create_specification]...]

create_specification:
[delault] character set charset_name
[delault] collate collation_name

说明:

小写的表示关键字
[] 是可选项
character set: 指定数据库采用的字符集
collate: 指定数据库字符集的校验规则

db_name:数据库的名字

创建数据库的案列:

        creatre database sss;

说明:

        当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci

创建一个使用utf8字符集的数据库:

        create database sss charset=utf8;

创建一个使用utf字符集,并带校对规则的数据库:

        create database sss charset=uft8 collate_utf8_general_ci;

查看数据库的字符集和效验规则

查看系统默认字符集以及校验规则:

show variables like "character_set_database";

show variables like "collaiton_database";

查看数据库支持的字符集:

show charset;

字符集主要是控制用什么语言。比如utf8就可以使用中文

查看数据库支持的字符集校验规则

show collation;

效验规则对数据库的影响:

  • 不用区分大小写

        创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]:

        create database sss collation utf8_general_ci;

  • 区分大小写:

        创建一个数据库,校验规则使用utf8_ bin[区分大小写]:

        createdatabase sss collation utf8_bin;

操作数据库:

查看数据库:

show databases;

显示创建语句:

show create database 数据库名字;

实例:

说明:

        MySQL 建议我们关键字使用大写,但是不是必须的。
        数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
        /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

修改数据库

语法:

alter database db_name

[alter_spacification [,alter_spacification]...]

alter_spacification:
[default] character set charset_name
[default] collate collation_name

说明:

        对数据库的修改主要指的是修改数据库的字符集,校验规则。

数据库的删除

drop database db_name;

执行删除之后的结果:
      数据库内部看不到对应的数据库
      对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

注意:不能随便删除数据库!!!

备份和恢复

备份

语法:

# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

示例:将mytest库备份到文件(退出连接)

# mysqldump -P3306 -u root -p123456 -B sss > D:/mytest.sql;

这时,可以打开看看mytest.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

还原

语法:

mysql> source D:/mysql-5.7.22/mytest.sql;

注意:

如果备份的不是整个数据库,而是其中的一张表,怎么做?

# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql;

同时备份多份数据库

# mysqldump -u root -p -B 数据库名1 数据库名2 ... > D:/mytest.sql;

如果备份一个数据库时,没有带-B参数,在恢复数据库时,需要先创建一个空的数据库,然后使用数据库,在使用source来还原。

查看连接情况:

show processlist

  • Id列:一个标识,可以在MySQL中通过kill id杀死指定id的线程。
  • User列:显示当前用户,如果不是root,这个命令就只显示你权限范围内的SQL语句。
  • Host列:显示这个语句是从哪个IP的哪个端口上发出的,可用来追踪出问题语句的用户。
  • db列:当前执行的命令是在哪一个数据库上,如果没有指定数据库,则该值为NULL。
  • Command列:显示当前连接执行的命令,一般就是休眠(Sleep)、查询(Query)和连接(Connect)。
  • Time列:表示该线程处于当前状态的时间,单位是秒。
  • State列:显示使用当前连接的SQL语句的状态。
  • Info列:一般记录的是线程执行的语句,默认只显示前100个字符,如果要看全部信息,需要使用show full processlist

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

三.数据库表的操作

创建表

语法:

create table db_name(

        field1 datatype,
        field2 datatype,
        field3 datatype

)character set 字符集 collate 校验规则 engine 存储引擎;

说明:

field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

engine 存储引擎(后面说明)

案例:

create table user(

        name varchar(20),

        age int,

        birday varchar(20),

        sex char(4)

)character set utf8 engine MyISAM;

说明:

不同的搜索引擎·,创建表的文件不一样,user表存储引擎是MyISAM ,在数据目中有三个不同的文件,分别是:
user.frm:表结构
users.MYD:表数据
users.MYI:表索引

备注:创建一个engine是innodb的数据库,观察存储目录

create table person(

        name varchar(20),

        age int,

        birday varchar(20),

        sex char(4)

)character set utf8 engine innodb;

查看表结构:

desc db_name

案例

修改表:

添加类型

alter table table_name add(column datatype [default expr].....)

修改类型

alter table table_name modify(column datatype)

删除类型

alter table table_name drop (column);

删除表

drop [temporary]] table [if exits] table_name

插入内容

insert  into table_name values ()

四.表的类型

说明:

  • 在mysql中插入数据时一定不能越界,否则就会导致插入错误。
  • 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。
  • 可以通过UNSIGNED来说明某个字段是无符号的。
  • 注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不
    下,与其如此,还不如设计时,将int类型提升为bigint类型。
  • bit字段在显示时,是按照ASCII码对应的值显示,如果我们有这样的值,只存放0或1,这时可以定义bit(1)。这样可以节省空间。
  • decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。建议:如果希望小数的精度高,推荐使用decimal。
  • 关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:
    varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。当我们的表的编码是utf8时,varchar(n)的参数n最大值65532/3=21844[因为utf中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766,在gbk中一个字符大小为2。

如何选择定长或变长字符串?

如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5

  • 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
  • 定长的磁盘空间比较浪费,但是效率高。
  • 变长的磁盘空间比较节省,但是效率低。
  • 定长的意义是,直接开辟好对应的空间。
  • 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多。

五:表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。
表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary
key,auto_increment,unique key。

空属性:

两个值:null(默认的)和not null(不为空)
数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算。

默认值:

某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。

默认值的生效:数据在插入的时候不给该字段赋值,就使用默认值。

注意:只有设置了default的列,才可以在插入值的时候,对列进行省略。

列描述:

comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。

注意:not null和defalut一般不需要同时出现,因为default本身有默认值,不会为空。

zerofill:

如果宽度小于设定的宽度(这里设置的是5),自动填充0。要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是1。

主键:

primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。

创建表的时候·直接在字段上指出主键。

主键约束:主键对应的字段中不能重复,一旦重复,操作失败。

当表创建好以后但是没有主键的时候,可以再次追加主键,也可以删除主键。

在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键。

自增长:

auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。
自增长的特点:

  • 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
  • 自增长字段必须是整数
  • 一张表最多只能有一个自增长

索引:
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。
数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。、

唯一键(unique):

一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题。
唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。
关于唯一键和主键的区别:
我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息出现重复。

外键:

外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。
语法:

foreign key (字段名) references 主表(列)

如何理解外键约束:

首先我们承认,这个世界是数据很多都是相关性的。
理论上,上面的例子,我们不创建外键约束,就正常建立学生表,以及班级表,该有的字段我们都有。此时,在实际使用的时候,可能会出现什么问题?
有没有可能插入的学生信息中有具体的班级,但是该班级却没有在班级表中?
比如比特只开了比特100班,比特101班,但是在上课的学生里面竟然有比特102班的学生(这个班目前并不存在),这很明显是有问题的。
因为此时两张表在业务上是有相关性的,但是在业务上没有建立约束关系,那么就可能出现问题。

解决方案就是通过外键完成的。建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

六.内置函数

日期函数:

字符串函数:

数学函数:

其他函数:

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

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

相关文章

【3分钟开服】幻兽帕鲁服务器一键部署保姆教程,PalWorld开服联机教程

在帕鲁的世界,你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活,也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活,也可以为你在工厂工作。你也可以将它们进行售卖,或肢解后食用。 想要部署属于自…

从零开发短视频电商 Tesseract OCR识别增强

文章目录 概要图像预处理阶段默认反转图像重新缩放二值化噪音消除膨胀/腐蚀旋转/偏移校正边框缺少边框边框太大扫描边框去除 透明度/Alpha通道 引擎处理阶段语言模型配置提高识别速度词典、单词列表和模式表格识别 使用 Tesseract OCR 的 GUI 和其他项目 原文如下: …

TypeScript实战系列之合理运用类型

目录 介绍any 和 unknownerve 的用途断言type 和 interfacedeclare 关键字的作用联合类型 和 类型守卫交叉类型 介绍 这篇主要介绍下ts 常用的基本类型和一些常用的技巧性技能 any 和 unknow any 和 unknown 是两个类型关键字,它们用于处理类型不确定或未知的情况…

【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

力扣日记1.28-【回溯算法篇】93. 复原 IP 地址

力扣日记:【回溯算法篇】93. 复原 IP 地址 日期:2023.1.28 参考:代码随想录、力扣 93. 复原 IP 地址 题目描述 难度:中等 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0&…

IP地址定位技术的巧妙运用:企业网络安全的坚实防线

在当今数字时代,企业网络安全成为了至关重要的议题。面对不断增长的网络威胁,企业不得不采用创新性技术来保护其机密信息和关键系统。IP地址定位技术作为一种强大的工具,为企业提供了一种新颖而高效的网络安全保护手段。 IP地址定位技术简介 …

前端Vue v-for 的使用

目录 ​编辑 简介 使用方式 基本使用 v-for"(item, index)中item和index作用 示例 迭代对象 示例 结果 前言-与正文无关 生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入…

证券公司怎么选择?福州开股票账户佣金最低是多少?怎么开低佣金账户?

股票交易佣金是指投资者在进行股票交易时,需要向券商支付的手续费。具体的佣金费用根据券商的政策而有所不同,一般分为固定佣金和按比例佣金两种方式。 固定佣金是指交易每一笔固定收取一定金额的佣金,通常适用于较小交易量的投资者&#xf…

github ssh ssh-keygen

生成和使用 SSH 密钥对是一种安全的身份验证方式,用于在你的本地系统和 GitHub 之间进行身份验证。以下是在 GitHub 上生成和使用 SSH 密钥对的基本步骤: 1. 生成 SSH 密钥对 在命令行中执行以下命令来生成 SSH 密钥对: ssh-keygen -C &q…

ATT汇编

指令后缀 AT&T格式的汇编指令有不同的后缀 其中 b表示byte,字节 w表示word,字/两字节 l表示long,32位系统下的long是4字节 q表示quad,意味四重,表示4个字/8字节 寄存器用途 参见 AT&T的汇编世界 - Gemfield…

把数组中的key都取出来然后去重

今日接到一个小需求,一张表有类似这样的数据:(下面是一行) 但是每行的数据,主要是key不一样,我们想把所有的key取出来,并且做个去重。 首先我先在mysql中, SELECT GROUP_CONCAT(RE…

蓝桥杯---九数组分数

1,2,3 ... 9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码。 注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。 代码 public class _05九数组分数 {public static void test(int[] x){int a …

Linux, Certbot快速申请免费https证书

linux环境. 更新apt,为了能正确的下载certbot apt update 安装certbot apt install certbot 如果之前nginx已经开启着了,先关掉,防止端口占用 nginx -s stop 运行certbot开始获取证书文件 certbot certonly 输入1直接回车,意思就是让certbot模拟一个web服务器执行下面的…

探秘Photoshop | 一站式了解所有相关信息

Photoshop是迄今为止世界上最强大的图像编辑软件,它已成为许多涉及图像处理的行业标准。软件技术一天行千里, Photoshop也在不断更新,从1990年开始发布, photoshop1.0到最新的 2018Photoshop... 几乎每隔一年,Photosho…

Apache 辅助系统工具

一丶Apache Sqoop 1.Sqoop的介绍: Sqoop的工作机制是将导入或者导出的命令翻译成MapReduce实现,Sqoop可以理解为:SQL到Hadoop或者Hadoop到SQL 2.Sqoop的安装 配置文件修改: cd $SQOOP_HOME/conf mv sqoop-env-template.sh sqo…

Dubbo Consumer 对Provider的protocol选择逻辑

一、简介 dubbo consumer 如果没有指定protocol参数,默认会将provider注册的protocol provider url都获取并转换为Invoker放到Directory中。如果consumer指定了protocol则会在Directory中选择相应的protocol provider url转换为Invoker放在Directory中。 二、代码分…

力扣hot100 柱状图中最大的矩形 单调栈

Problem: 84. 柱状图中最大的矩形 文章目录 思路复杂度Code 思路 👨‍🏫 参考地址 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public static int largestRectangleArea(int[] height){Stack&l…

【英语趣味游戏】填字谜(Crossword)第1天

谜题出处 柯林斯字谜大全(6),Collins——Big Book of Crosswords(Book 6) Puzzle Number: 114 本期单词 横向 1、Situation involving danger (4) 包含危险的情境,4个字母 答案:Risk&#xff…

shell

目录 一.运行方式 二.编程习惯 三.变量 3.1变量的命名 3.3普通变量(局部变量) 3.4特殊变量 3.5变量子串 3.6变量赋值 四.运算方式 4.1$(( )) 4.2let 4.3expr 4.4bc(小数运算) 4.5$[ ] 4.6awk 4.7总结运算方式 五.条件测试语句 5.1文件 5.2条件测试表达式…

揭秘IP地址定位:了解如何通过IP地址追踪你的位置

在互联网时代,我们的每一次在线活动都留下了痕迹,而IP地址则是其中一个关键的标识。IP地址定位技术的发展使得我们能够通过IP地址追踪设备的位置,这在某些情况下对于服务提供商、广告商和甚至研究人员来说可能是有用的。本文将深入探讨IP地址…