首页 > 数据库 >mysql快速学习

mysql快速学习

时间:2023-09-01 15:11:46浏览次数:41  
标签:name -- WHERE column 学习 player mysql 快速 SELECT

MySQL

简介

MySQL是关系型数据库(即通过外键关联来建立表与表的连接)

补充一下非关系数据库

NoSQL:非关系型数据库,常见的有Redis、mongoDB、CouchDB、cassandra等等

特点:

  • 免费 , 开源数据库
  • 小巧 , 功能齐全
  • 使用便捷
  • 可运行于Windows或Linux操作系统
  • 可适用于中小型甚至大型网站应用

官网:


软件下载(压缩版)

mysql5.7 64位下载地址:


DBMS

DBMS:数据库管理系统

数据库管理软件 , 科学组织和存储数据 , 高效地获取和维护数据

image-20230831233057447

MySQL就是一个DBMS


使用Navicat可视化工具


使用SQLyog管理工具自己完成以下操作 :

  • 连接本地MySQL数据库
  • 新建MySchool数据库
    • 字段
    • GradeID : int(11) , Primary Key (pk)
    • GradeName : varchar(50)
    • 数据库名称school
    • 新建数据库表(grade)

开始学习


结构化查询语句分类

名称 解释 命令
DDL(数据定义语言) 定义和管理数据对象,如数据库,数据表等 CREATE、DROP、ALTER
DML(数据操作语言) 用于操作数据库对象中所包含的数据 INSERT、UPDATE、DELETE
DQL(数据查询语言) ⽤来查询数据库表中的记录/数据 SELECTWHERE
DCL(数据控制语言) ⽤来定义数据库的访问权限和安全级别 GRANT、REVOKE
TCL(事务控制语言) ⽤来管理事务 COMMITROLLBACK

MySQL的数据类型

  • 大概分为三类:数值、日期/时间、字符串(字符)
  • char、varchar一定要指定长度
  • float会自动提升为double
  • timestamp是时间的混合类型,理论上可以存储时间格式和时间戳

//数值类型

类型 说明 取值范围 存储需求
tinyint 非常小的数据 有符值:-2^7 ~ 27-1
无符号值:0 ~ 28-1
1 字节
smallint 较小的数据 有符值:-2~2 - 1
无符号值:0 ~ 216-1
2 字节
mediumint 中等大小的数据 有符值:-223 ~ 223-1
无符号值:0 ~ 224-1
3 字节
int 标准整数 有符值:-231 ~ 231-1
无符号值:0 ~ 232-1
4 字节
bigint 较大的整数 有符值:-263 ~ 263-1
无符号值:0 ~ 264-1
8 字节
float 单精度浮点数 士1.1754351e-38 4 字节
double 双精度浮点数 +2.2250738585072014e -308 8 字节
decimal 字符串形式的浮点数 decimal(m,d) 9 字节

//字符串类型

类型 说明 最大长度
char[(M)] 固定长字符串,检索快但费空间,
0 <= M <= 255
M 字符
varchar[(M)] 可变字符串
0 <= M <= 65535
变 长度
tinytext 微型文本串 28-1 字节
text 文本串 216-1 字节

//日期和时间型数值类型

类型 说明 取值范围
DATE YYYY-MM-DD,日期格式 1000-01-01 ~ 9999-12-31
TIME Hh:mm:ss,时间格式 -838:59:59 ~ 838:59:59
DATETIME YY-MM-DD hh:mm:ss 1000-01-01 00:00:00至
9999-12-31 23:59:59
TIMESTAMP YYYYMMDDhhmmss格式表示的时间戳 197010101000000 ~ 2037年的某个时刻
YEAR YYYY格式的年份值 1901 ~ 2155

数据库相关

数据库操作

-- 语法:
SHOW datebases;-- 查看数据库

use 数据库名;-- 使用数据库

mysqldump -u root -p 数据库名 [表名] >数据库名.sql  -- 表示将数据库名.sql 导入到数据库名中

mysql -u root -p 数据库名 < 数据库名.sql  -- 导入数据

创建数据库

  • CREATE DATABASE IF NOT EXISTS game -- 指定数据库名为game
    
    DEFAULT CHARACTER SET utf8mb4 -- 指定数据库字符集为utf8mb4 MySQL8.0后默认
    
    COLLATE utf8mb4_0900_ai_ci; -- 指定排序规则 MySQL8.0后默认
    
    - uft8mb4 表示使用UTF-8编码,每个字符最多占4个 Byte.
    - 0900 是UNICODE 校对算法版本
    - ai 表示口音不敏感
    - ci 表示不区分大小写
    

(以上等价为)

create  databese 数据库名;

删除数据库

DROP DATEBASE 数据库名;

表相关

表操作

-- 语法:
DESC 表名;-- 查询表结构

创建表

CREATE [TEMPORARY] TABLE[ IF NOT EXISTS] -- [库名]表名 ( 表的结构定义 )[ 表选项]

CREATE TABLE player (

​	id int DEFAULT NULL

​	name varchar(45) DEFAULT NULL

​	level int DEFAULT NULL

​	exp int DEFAULT NULL

​	gold decimal(10,2) DEFAULT NULL

)ENGINE=InnODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4 0900_ai ci;
CREATE TABLE 表名(

字段1,

字段2,

.......,

字段n;

)

数据类型汇总


数值类型:

​ 整型类型: INTEGER/INT, SMALLINT, TINYINT MEDIUMINT. BIGINT

​ 定点类型: DECIMAL.NUMERIC

​ 浮点类型: FLOAT, DOUBLE


日期类型:

DATE, DATETIME, TIMESTAMP ,TIME,YEAR


字符串类型:

CHAR, VARCHAR,BINARY, VARBINARY, BLOB,TEXT, ENUMSET


修改表

ALTER TABLE 表名 MODIFY COLUMN 列名 数据类型; -- MODIFY COLUMN表示修改列

ALTER TABLE 表名 RENAME COLUMN 旧列名 to 新列名 -- RENAME COLUMN表示修改列名

ALTER TABLE 表名 ADD COLUMN 列名 数据类型;-- ADD COLUMN表示添加列

ALTER TABLE 表名 DROP COLUMN 列名; -- DROP COLUMN表示删除列

删除表

DROP TABLE 表名;

清空表

TRUNCATE TABLE player;

SQL基础

基本语法

	USE 数据库名;

​	SELECT  * -- 这里写需要返回的查询结果 *是全返回 

​	FROM 表名 -- 查询什么表(可以是多个,中间逗号隔开)

​	WHERE 条件 -- 查询条件

​	ORDER BY  排序要求 -- DESC是降序,ASC是升序(默认升序)

​	LIMIT 限制要求; -- 限制要求,limit 3; 表示只记录三条数据; 
				  -- limit 6,3(表示从第7行开始记录三条数据)

通常LIMIT用来处理分页:

select * from table limit (start-1)*pageSize,pageSize;

其中start是页码,pageSize是每页显示的条数


== MySQL不区分大小写,但是按照规范来说关键字大写,表名等小写以方便可读性 ==

每个SQL语句需要以分号;结尾。

-- 两个中横线表示注释


MySQL-Shell

常⽤命令:

mysqlsh # **登录**

\> \connect root@localhost. # **连接服务**

\> \js or \py or \sql # **切换语⾔**

\> \status or \s # **显示当前**MySQL Shell**的状态**

\> \help or \? or # **帮助**

\> \source or \. # **使⽤活动语⾔执⾏脚本⽂件**

\> \quit or \q or \exit # **退出**

下面开始用实例进行理解!

SELECT⼦句

-- 基本语法
SELECT name, level 

FROM player

WHERE level = 1

ORDER BY gold

LIMIT 3;
-- 功能为:查询player表中level为1的name和level,按照gold字段升序排序,并只返回前三条数据

SELECT⼦句中可以使⽤*表示所有字段,也可以使⽤各种表达式或者函数。

SELECT DISTINCT column FROM player;
-- 去除重复列

WHERE

-- 基础语法
SELECT column1, column2, ... 

FROM table_name

WHERE condition;

WHERE:⽤来按照condition指定的条件过滤数据。

SELECT * FROM player WHERE level >= 10;
-- 查询player中level大于等于10的所有信息

DISTINCT

-- 基本语法
SELECT DISTINCT column1, column2, ... 

FROM table_name;

-- 检索table_name表中字段column1, column2, ...中不重复的数据
-- DISTINCT:去掉重复值。

 SELECT DISTINCT sex FROM player;
 -- 检索player中sex字段的不同数据

AND OR NOT

-- 基本语法
SELECT column1, column2, ... 

FROM table_name

WHERE condition1 AND condition2 AND condition3;
WHERE condition1 OR condition2 OR condition3;

SELECT column1, column2, ... 

FROM table_name

WHERE NOT condition;

⽤于组合WHERE⼦句中的多个条件。优先级: NOT > AND > OR


IN

-- 基本语法
SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1, value2, ...);
-- 检索table_name表中字段column_name是value1, value2, ...值的column_name(s)

-- IN可以指定WHERE⼦句中的多个值。

SELECT * FROM player WHERE level IN (1,3,5);
-- 检索player表中level在1,3,5中的所有信息

BETWEEN

-- 基本语法
SELECT column1, column2, ... 

FROM table_name

WHERE column BETWEEN value1 AND value2;

BETWEEN:⽤来选取介于value1和value2之间的数据范围内的值。

 SELECT * FROM player WHERE level BETWEEN 1 AND 10;
 -- 查询player中level在1和10之间的所有信息

LIKE

-- 基本语法
SELECT column1, column2, ... 

FROM table_name

WHERE column LIKE pattern;

/*
%代表一个或多个字符的通配符
_代表仅仅一个字符的通配符
*/
-- LIKE:⽤于在WHERE⼦句中搜索满⾜指定pattern模式的值。

SELECT * FROM player WHERE name LIKE '_五%';
-- 取player表中第二个字是五的所有name

REGEXP

-- 基本语法
SELECT column1, column2, ... 

FROM table_name

WHERE column REGEXP pattern;
/*
正则表达式 常用通配符有:
.表示任意一个字符
^表示开头,$表示结尾
[abc]表示其中任意一个字符
[^abc]表示不匹配abc
[a-z]表示范围内的任意一个字符
a|b表示a或者b
*/

REGEXP:⽤于在WHERE⼦句中搜索满⾜指定pattern模式的值。

 SELECT * FROM player WHERE name LIKE '^张';
-- 查询player中姓张的所有数据

GROUP BY

-- 基本语法
SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE condition

GROUP BY column_name -- 分组

HAVING aggregate_function(column_name) operator value; -- 分组后的数据再进行条件判断

GROUP BY:结合聚合函数aggregate_function,根据⼀个或者多个列队结果集进

⾏分组。常⽤的聚合函数包括COUNT、SUM、AVG、MIN、MAX等等

HAVING:⽤于筛选分组后的数据

SELECT * FROM player 

GROUP BY SUBSTR(name,1,1)   
-- substr()函数,代表姓名这个字符串中第一个位置开始取步长为1的字符串

HAVING COUNT(*) >=5;
-- 在player表中 按照姓氏开始分组,并统计行数大于5的返回(同姓大于5个的数据)

ORDER BY

-- 基本语法
SELECT column1, column2, ... 

FROM table_name

ORDER BY column1, column2 ... ASC|DESC;

ORDER BY:⽤于按照column1,column2 ...来升序或者降序排序结果集。

SELECT * FROM player ORDER BY level DESC;
-- 查询在player表中的所有信息,按照level降序排序。

LIMIT

-- 基本语法
SELECT column1, column2, ... 

FROM table_name

LIMIT number;

LIMIT:⽤于限定返回记录的条数。

 SELECT * FROM player LIMIT 3;
 -- 返回player中的前三条记录

UNION

-- 基本语法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

UNION:⽤于 两个或多个SELECT⼦句的结果(并集),默认去重复,如果允

许重复值,请使⽤UNION ALL****。

SELECT * FROM player WHERE level BETWEEN 1 AND 5
UNION
SELECT * FROM player WHERE gold BETWEEN 1 AND 5;
-- 返回player中level在1-5之间或gold在1-5之间的记录

INTERSECT

-- 基本语法
SELECT column_name(s) FROM table1

INTERSECT

SELECT column_name(s) FROM table2;

INTERSECT:⽤于合并两个或多个SELECT⼦句的结果(交集

-- 基本语法
SELECT * FROM player WHERE level BETWEEN 1 AND 5

INTERSECT

SELECT * FROM player WHERE gold BETWEEN 1 AND 5;
-- 查询player表中level在1-5之间且gold也在1-5之间的数据

EXCEPT

-- 基本语法
SELECT column_name(s) FROM table1

EXCEPT

SELECT column_name(s) FROM table2;

EXCEPT:⽤于合并两个或多个SELECT⼦句的结果(差集

SELECT * FROM player WHERE level BETWEEN 1 AND 5

EXCEPT

SELECT * FROM player WHERE gold BETWEEN 1 AND 5;
-- 查询player中level在1-5之间且gold不在1-5之间的记录

INNER JOIN

-- 基本语法
SELECT column_name(s) FROM table1

(INNER) JOIN table2

ON table1.column_name = table2.column_name;

INNER JOIN:内连接

SELECT * FROM player 

INNER JOIN equip

ON player.id = equip.player_id;
-- 左表和右表所匹配的数据
-- 返回玩家信息以及玩家对应装备的信息

1693549403273


LEFT JOIN

-- 基本语法
SELECT column_name(s) FROM table1

LEFT JOIN table2

ON table1.column_name = table2.column_name;

LEFT JOIN:左连接

SELECT * FROM player 

LEFT JOIN equip

ON player.id = equip.player_id;
-- 返回左表中所有的数据和右表中匹配的数据,没有匹配数据的话NULL填充
-- 返回玩家表中的所有数据和玩家对应的装备信息,没有装备的话用NULL填充

1693549999507


RIGHT JOIN

-- 基本语法
SELECT column_name(s) FROM table1

RIGHT JOIN table2

ON table1.column_name = table2.column_name;

RIGHT JOIN:右连接

SELECT * FROM player 

RIGHT JOIN equip

ON player.id = equip.player_id;
-- 返回右表中所有的数据和左表中匹配的数据,没有匹配数据的话NULL填充
-- 返回包含装备表的所有数据以及装备所对应的玩家信息,没有匹配到的玩家信息就用NULL来填充

1693549745474


FULL JOIN

-- 基本语法
SELECT column_name(s) FROM table1

FULL JOIN table2

ON table1.column_name = table2.column_name;

FULL JOIN:全连接

SELECT * FROM player 

FULL JOIN equip

ON player.id = equip.player_id;
-- 左连接和有链接的并集(会删除重复行)
-- 返回两个表中的符合条件的所有行

image-20230901144331151


索引 (INDEX)

【创建】:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name

ON table_name (column_name(s));

【查询】:

SHOW INDEX FROM table_name;

【删除】:

DROP INDEX index_name ON table_name;

==补充=

视图与表的使用方式是一致的,只是视图是动态数据,可以随着表的修改而发生变化!!

标签:name,--,WHERE,column,学习,player,mysql,快速,SELECT
From: https://www.cnblogs.com/wangshow/p/me_MySQL_studynote.html

相关文章

  • 学习aop以及nginx
    苍穹外卖第一天搭建前端后端环境先将代码提交到本地然后在git上创建仓库https://gitee.com/lh03062021/sky-take-out.git点击push定义远程仓库把复制好的粘贴上去就可以推送成功了。导入sql文件,编译父项目nginx反向代理,将前端发送的动态请求由nginx转发到后端服务器好......
  • 不再受限于学历!学习华为认证,实现财富与事业双丰收!
    学习华为认证会有哪些疑问呢?学习华为技术方向不知从哪开始有什么学习的推荐思路呢?可以看看我接下来的讲解1.确定认证项目你需要确定你想要获得哪个华为认证项目的认证。华为认证包括多个领域,如网络、云计算、存储等。选择一个你感兴趣且适合你职业发展的项目。主要还是以HCIE、HCIP......
  • Playwright轻松保存抓取的内容,快速整理数据
    作为一名爱好编程的程序员,你是否曾经遇到过需要抓取网页上的数据却无从下手的情况?Playwright是一款优秀的自动化测试工具,可以帮助你轻松地抓取网页上的内容,并且还可以将抓取到的数据进行保存。本文将详细介绍如何使用Playwright保存抓取的内容,希望对大家有所帮助。一、安装Playwr......
  • WPF使用Blazor的快速案例
    下面我们将讲解在WPF中使用Blazor,并且使用Blazor做一些文件编辑操作,下面是需要用到的东西WPFBlazorMasaBlazorMonaco安装MasaBlazor模板使用CMD指令安装模板dotnetnewinstallMASA.Template新建MasaBlazorWPFApp找到如图的模板,然后点击下一步下一步,新建......
  • 243.mysql 内存统计相关
    1.查看mysql是否打开了关于innodb内存相关的监控SELECT*FROMperformance_schema.setup_instrumentsWHERENAMELIKE'%memory/innodb%';2.没有打开的话开一下(自己判断:重启数据库会恢复原有设置)#updateperformance_schema.setup_instrumentssetenabled='yes'wher......
  • Python-3.10.5学习笔记
     Linux系统-部署-运维系列导航pip源初始化pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simplepipconfigsetinstall.trusted-hostpypi.tuna.tsinghua.edu.cn VSCode插件安装语法检查flake8代码格式化yapf文件及文件夹图标vscode-icon......
  • Oracle数据迁移MySQL的三种简单方法
    Oracle数据迁移MySQL的三种简单方法更新时间:2023年06月05日10:58:16  作者:牛牛的笔记 对于许多企业而言,迁移数据库时最大的挑战之一是如何从一个数据库平台顺利迁移到另一个平台,下面这篇文章主要给大家介绍了关于Oracle数据迁移MySQL的三种简单方法,需要的朋友可以参......
  • MySQL InnoDB 是怎么使用 B+ 树存数据的?
    这里限定MySQLInnoDB存储引擎来进行阐述,避免不必要的阅读歧义。首先通过一篇文章简要了解下B树的相关知识:你好,我是B树。B+树是在B树基础上的变种,主要区别包括:1、所有数据都存储在叶节点,其它几点作为索引存储。2、数据节点添加链指针,便于横向检索。数据是怎么......
  • mysql字符集批量修改
    修改所有数据库字符集SELECTCONCAT('ALTERDATABASE',SCHEMA_NAME,'CHARACTERSETutf8mb4COLLATEutf8mb4_bin;')as'Fanrncho'FROMinformation_schema.`SCHEMATA`WHEREDEFAULT_CHARACTER_SET_NAMERLIKE'utf8mb4'ANDSCHEMA_NAME......
  • Python 深度学习目标检测评价指标
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......