1、MYSQL入门

这篇博客是关于MySQL入门的指南,涵盖了数据库的基础知识,包括关系型数据库(如MySQL)和非关系型数据库(NoSQL)的分类。接着介绍了数据库管理系统的作用,强调了MySQL作为关系型数据库管理系统的特性。内容还包括了SQLyog,一个用于管理MySQL数据库的图形化工具。接下来,博客详细讲解了如何操作数据库,如创建、删除数据库,数据类型,以及基本的SQL指令。此外,还介绍了数据管理,包括DML语言(Insert、Update、Delete)以及DQL查询数据,重点讨论了查询语句和条件子句的使用。最后,博客提到了MySQL的一些常见函数和聚合函数,以及数据库级别的MD5加密。
摘要由CSDN通过智能技术生成

1、MYSQL入门

1.1、什么是数据库

百度百科的介绍:数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。 [2]

数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:

(1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。

(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

总而言之 数据库就是用来存放数据的仓库

1.2、数据库的分类

关系数据库(SQL)

关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有MysqlSqlServer等。在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。

非关系型数据库(NoSQL)

指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。NoSQL数据库技术与CAP理论、一致性哈希算法有密切关系。所谓CAP理论,简单来说就是一个分布式系统不可能满足可用性、一致性与分区容错性这三个要求,一次性满足两种要求是该系统的上限。而一致性哈希算则指的是NoSQL数据库在应用过程中,为满足工作需求而在通常情况下产生的一种数据算法,该算法能有效解决工作方面的诸多问题但也存在弊端,即工作完成质量会随着节点的变化而产生波动,当节点过多时,相关工作结果就无法那么准确。这一问题使整个系统的工作效率受到影响,导致整个数据库系统的数据乱码与出错率大大提高,甚至会出现数据节点的内容迁移,产生错误的代码信息。但尽管如此,NoSQL数据库技术还是具有非常明显的应用优势,如数据库结构相对简单,在大数据量下的读写性能好;能满足随时存储自定义数据格式需求,非常适用于大数据处理工作。

1.3、数据库管理系统

数据库管理系统是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQLXQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。 [1]

数据库管理系统是数据库系统的核心组成部分,主要完成对数据库的操纵与管理功能,实现数据库对象的创建、数据库存储数据的查询、添加、修改与删除操作和数据库的用户管理、权限管理等。

1.4、MySQL简介

MySQL是一个关系型数据库管理系统

前世:瑞典MySQL AB 公司

今生:属于 Oracle 旗下产品

MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件

之一。

开软的数据库软件~

体积小、速度快、总体拥有成本低,招人成本比较低,所有人必须会~

中小型网站、或者大型网站,集群!

官网:https://www.mysql.com

官网下载地址:https://dev.mysql.com/downloads/mysql/

1.5、SQLyog 简介

SQLyog 是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库,由业界著名的Webyog公司出品。

使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。

2、操作数据库

2.1、数据库的基本指令

  • 创建数据库

CREATE DATABASE IF NOT EXISTS 小菜一碟 :如果这个数据库不存在 就创建名为“小菜一碟的数据库”

  • 删除数据库

DROP DATABASE IF EXISTS 小菜一碟:如果该数据库存在就删除这个数据库

使用数据库

USE `肺炎患者库

2.2、数据库的数据类型

数值型:

tinyint 十分小的数据 1个字节

smallint 较小的数据 2个字节

mediumint 中等大小的数据 3个字节

int 标准的整数 4个字节 常用的 int

bigint 较大的数据 8个字节

flfloat 浮点数 4个字节

double 浮点数 8个字节 (精度问题!)

decimal 字符串形式的浮点数 金融计算的时候,一般是使用decimal

常用的为 int

字符串型 :

char 字符串固定大小的 0~255

varchar 可变字符串 0~65535 常用的变量 String

tinytext 微型文本 2^8 - 1

text 文本串 2^16 -1 保存大文本

常用的 varchar

时间日期型

date YYYY-MM-DD , 日期格式

time HH:mm:ss 时间格式

datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式

timestamp 时间戳, 1970.1.1 到现在的毫秒数! 也较为常用!

year 年份表示

2.3、字符串的字段属性

Unsigned :

无符号的整数

声明了该列不能声明为负数

zerofifill

0填充的

不足的位数,使用0来填充, int(3) , 5 — 005

自增:

通常理解为自增,自动在上一条记录的基础上 + 1(默认)

通常用来设计唯一的主键~ index,必须是整数类型

可以自定义设计主键自增的起始值和步长

非空 NUll not null

假设设置为 not null ,如果不给它赋值,就会报错!

NUll ,如果不填写值,默认就是null!

默认

设置默认的值!

sex,默认值 为 男,如果不指定该列的值,则会有默认的值![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WHXp2C7H-1581176508409)(C:\Users\磊酱嘤~1\AppData\Local\Temp\1581174068443.png)]

2.4、创建数据库中的表

创建表的格式如下

CREATE TABLE [IF NOT EXISTS] 表名(

‘字段名’ 列类型 [属性] [索引] [注释],

‘字段名’ 列类型 [属性] [索引] [注释],

‘字段名’ 列类型 [属性][索引] [注释]

)[表类型][字符集设置][注释]

示例如下

CREATE TABLE IF NOT EXISTS 确诊患者表(
姓名 VARCHAR(20) NOT NULL ,
性别 VARCHAR (8) NOT NULL DEFAULT ‘男’,
年龄 INT(4) NOT NULL ,
确诊日期 DATETIME NOT NULL,
家庭住址 VARCHAR (20) NOT NULL ,
PRIMARY KEY (姓名)
)ENGINE =INNODB DEFAULT CHARSET = utf8

通过上述一句 我们就能创建一个名叫“确诊患者表”的表格

其中表格有 姓名、性别、年龄、确诊日期、家庭住址、这五个字符段。

其中表的主键设置为姓名,引擎默认为INNODB 默认字符集 为utf8.

2.5、修改和删除表

修改:

– 修改表名 : ALTER TABLE 旧表名 RENAME AS 新表名

实例:ALTER TABLE 确诊患者表 RENAME AS 重症病人表 :把确诊患者表改名为重症病人表

– 增加表的字段 : ALTER TABLE 表名 ADD 字段名 列属性

实例:ALTER TABLE 重症病人表 ADD id INT(4) :给重症病人表加一个 名为id 的int型字段

3、MySQL数据管理

3.1、DML语言

数据库意义:数据存储,数据管理

DML 语言: 数据操作语言

Insert :添加

update 更改

delete 删除

3.2、添加

添加语句 INSERT INTO

作用: 给指定字段添加指定的值

INSERT INTO 重症病人表 (性别,年龄,确诊日期,家庭住址) VALUES(‘男’,‘21’,‘2020-02-04 20:58:12’,‘北影’)(‘女’,‘22’,‘2020-02-04 20:58:12’,’西安‘)

语法: insert into 表名([字段名1,字段2,字段3])values(‘值1’),(‘值2’),(‘值3’,…)

注意事项:

\1. 字段和字段之间使用 英文逗号 隔开

\2. 字段是可以省略的,但是后面的值必须要要一一对应,不能少

\3. 可以同时插入多条数据,VALUES 后面的值,需要使用,隔开即可 VALUES(),(),…

3.3、修改

修改语句 UPDATE

update 修改谁 (条件) set 原来的值 = 新值

UPDATE 重症病人表 SET 年龄=90 WHERE 姓名= ‘丁象’ :(在重症病人表中把名字叫丁象的人的年龄修改成九十岁)

语法:

– UPDATE 表名 set colnum_name = value,[colnum_name = value,…] where [条

件]

3.4、删除

delete 命令

语法: delete from 表名 [where 条件]

TRUNCATE 命令

作用:完全清空一个数据库表,表的结构和索引约束不会变!、

4、DQL查询数据(最重要的)

4.1、DQL

(Data Query LANGUAGE : 数据查询语言)

所有的查询操作都用它 Select

简单的查询,复杂的查询它都能做~

数据库中最核心的语言,最重要的语句

使用频率最高的语句

4.2、查询指定字段

语法: SELECT 字段 FROM 表

从表中查询字段

– 查询全部的学生 SELECT 字段 FROM 表

SELECT * FROM student

– 查询指定字段

SELECT StudentNo,StudentName FROM student

去重 :distinct

SELECT DISTINCT 年龄 FROM 重症病人表 : 从重症病人表中查询年龄字段 去除重复年龄的

4.3、where 条件子句

作用:检索数据中 符合条件 的值

逻辑运算符 语法 描述

and && a and b a&&b 逻辑与,两个都为真,结果为真

or || a or b a|| b 逻辑或,其中一个为真,则结果为真

Not ! not a !a 逻辑非, 真为假,假为真!

从表格中查询年龄在21到89岁之间的病人!

SELECT 年龄,姓名,性别 FROM重症病人表
WHERE 年龄>=21 AND 年龄<=89

从表格中查询名字不叫王虫的病人资料

SELECT 姓名,年龄,性别 FROM 重症病人表
WHERE 姓名!= ‘王虫’

比较运算符

运算符 语法 描述

IS NULL a is null 如果操作符为 NUll, 结果为真

IS NOT NULL a is not null 如果操作符不为 null,结果为真

BETWEEN a between b and c 若a 在 b 和c 之间,则结果为真

Like a like b SQL 匹配,如果a匹配b,则结果为真

In a in (a1,a2,a3….) 假设a在a1,或者a2…. 其中的某一个值中,结果为真

– =================== 模糊查询 ======================

– 查询姓刘的同学

– like结合 %(代表0到任意个字符) _(一个字符)

SELECT StudentNo,StudentName FROM student

WHERE StudentName LIKE ‘刘%’

– 查询姓刘的同学,名字后面只有一个字的

SELECT StudentNo,StudentName FROM student

WHERE StudentName LIKE ‘刘_’

– 查询姓刘的同学,名字后面只有两个字的

SELECT StudentNo,StudentName FROM student

WHERE StudentName LIKE ‘刘__’

– 查询名字中间有嘉字的同学 %嘉%

SELECT StudentNo,StudentName FROM student

WHERE StudentName LIKE ‘%嘉%’

– ====== in (具体的一个或者多个值) =====

– 查询 1001,1002,1003号学员

SELECT StudentNo,StudentName FROM student

WHERE StudentNo IN (1001,1002,1003);

– 查询在北京的学生

SELECT StudentNo,StudentName FROM student

WHERE Address IN (‘安徽’,‘河南洛阳’);

– ==== null not null====

– 查询地址为空的学生 null ‘’

SELECT StudentNo,StudentName FROM student

WHERE address=’’ OR address IS NULL

– 查询有出生日期的同学 不为空

SELECT StudentNo,StudentName FROM student

WHERE BornDate IS NOT NULL

– 查询没有有出生日期的同学 为空

SELECT StudentNo,StudentName FROM student

WHERE BornDate IS NULL

4.4、联表查询

通过两张表中相同的一个字段来查询出其关联的字段

SELECT s.studentNO,studentName,SubjectNo,StudentResult

FROM student AS s

INNER JOIN result AS r

ON s.studentNO = r.studentNO

– Right Join

SELECT s.studentNO,studentName,SubjectNo,StudentResult

FROM student s

RIGHT JOIN result r

ON s.studentNO = r.studentNO

– Left Join

SELECT s.studentNO,studentName,SubjectNo,StudentResult

FROM student s

LEFT JOIN result r

ON s.studentNO = r.studentNO

4.5、分页和排序

排序

: 升序 ASC , 降序DESC

– ORDER BY 通过那个字段排序,怎么排

– 查询的结果根据 成绩降序 排序

SELECT * FROM 重症病人表
ORDER BY 年龄 ASC

按照年龄的升序排列 重症病人表

分页

为什么要分页? :缓解数据库压力,给人的体验更好, 瀑布流

语法: limit 起始值,页面的大小

SELECT * FROM 重症病人表
ORDER BY 年龄 ASC
LIMIT 0,6

从第零页分页查询 页面大小为 6

5、MySQL函数

5.1、常用函数

– ==================== 常用函数 =============================

– 数学运算

SELECT ABS(-8) – 绝对值

SELECT CEILING(9.4) – 向上取整

SELECT FLOOR(9.4) – 向下取整

SELECT RAND() – 返回一个 0~1 之间的随机数

SELECT SIGN(10) – 判断一个数的符号 0-0 负数返回-1,正数返回 1

– 字符串函数

SELECT CHAR_LENGTH(‘即使再小的帆也能远航’) – 字符串长度

SELECT CONCAT(‘我’,‘爱’,‘你们’) – 拼接字符串

SELECT INSERT(‘我爱编程helloworld’,1,2,‘超级热爱’) – 查询,从某个位置开始替换某个长

SELECT LOWER(‘KuangShen’) – 小写字母

SELECT UPPER(‘KuangShen’) – 大写字母

SELECT INSTR(‘kuangshen’,‘h’) – 返回第一次出现的子串的索引

SELECT REPLACE(‘狂神说坚持就能成功’,‘坚持’,‘努力’) – 替换出现的指定字符串

SELECT SUBSTR(‘狂神说坚持就能成功’,4,6) – 返回指定的子字符串 (源字符串,截取的位置,截

取的长度)

SELECT REVERSE(‘清晨我上马’) – 反转

– 查询姓 周的同学,名字 邹

SELECT REPLACE(studentname,‘周’,‘邹’) FROM student

WHERE studentname LIKE ‘周%’

– 时间和日期函数 (记住)

SELECT CURRENT_DATE() – 获取当前日期

SELECT CURDATE() – 获取当前日期

SELECT NOW() – 获取当前的时间

SELECT LOCALTIME() – 本地时间

SELECT SYSDATE() – 系统时间

SELECT YEAR(NOW())

SELECT MONTH(NOW())

SELECT DAY(NOW())

SELECT HOUR(NOW())

SELECT MINUTE(NOW())

SELECT SECOND(NOW())

– 系统

SELECT SYSTEM_USER()

SELECT USER()

SELECT VERSION()

5.2、聚合函数

1.COUNT() 计数函数

2.SUM() 求和函数

3.AVG() 求平均值函数

4.MAX() 求最大值函数

5.MIN() 求最小值函数

5.3、数据库级别的MD5加密

主要增强算法复杂度和不可逆性。

MD5 不可逆,具体的值的 md5 是一样的

SELECT CURRENT_DATE() – 获取当前日期

SELECT CURDATE() – 获取当前日期

SELECT NOW() – 获取当前的时间

SELECT LOCALTIME() – 本地时间

SELECT SYSDATE() – 系统时间

SELECT YEAR(NOW())

SELECT MONTH(NOW())

SELECT DAY(NOW())

SELECT HOUR(NOW())

SELECT MINUTE(NOW())

SELECT SECOND(NOW())

– 系统

SELECT SYSTEM_USER()

SELECT USER()

SELECT VERSION()

5.2、聚合函数

1.COUNT() 计数函数

2.SUM() 求和函数

3.AVG() 求平均值函数

4.MAX() 求最大值函数

5.MIN() 求最小值函数

5.3、数据库级别的MD5加密

主要增强算法复杂度和不可逆性。

MD5 不可逆,具体的值的 md5 是一样的

MD5 破解网站的原理,背后有一个字典, MD5加密后的值 ,加密的前值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值