Mysql快速入门,熟悉基本命令(在kali中使用)
了解数据库与mysql
数据库是一个有组织的数据集合,通常以电子方式存储和管理。数据库的主要目的是有效地存储、检索和管理数据。数据库可以根据不同的需求和结构进行分类。包括关系数据库、非关系数据库、对象数据库和图数据库,MySQL是一个开源的关系数据库管理系统(RDBMS),采用结构化查询语言(SQL)来管理和操作数据。它是最流行的数据库之一,广泛用于各种应用程序和网站。
官网安装
推荐安装在linux中
1 | https://dev.mysql.com/ |
详细安装教程参考文章Mysql超详细安装配置教程(保姆级)_mysql安装及配置超详细教程-CSDN博客
不同类型linux版本对应这不同类型的mysql版本,所需要下载的包也不同,当然你在下在的过程中,网页会自动检测你需要安装哪个版本的mysql
mysql社区版的安装网页MySQL :: Download MySQL Community Server
进去网页会自动的为你识别电脑需要用到哪个版本的mysql,直接无脑第一个就行
kali是自带MySQL的,所以这边直接用命令启动就行了
注意:你在使用MySQL的过程中,发现自己的启动服务是MariaDB,请不用慌张,因为MariaDB就是 MySQL 的一个分支,由 MySQL 的原始开发者创建,旨在提供一个开源的替代方案。所以不用觉得自己下载了一个假的MySQL,放心使用与学习
Windows安装MySQL
首先MySQL的下载地址MySQL :: Download MySQL Installer (Archived Versions)
然后这边推荐跟着视频安装,推荐手把手教你安装MySQL(最新版本安装)_哔哩哔哩_bilibili
如果安装错误,可能需要geek的卸载,下载地址为Geek Uninstaller - the best FREE uninstaller
使用图形化工具推荐navicat,激活教程【2024最新】navicat17 安装、激活、配置、破解、连接数据库、连接mysql、安装教程、激活教程、破解教程、使用教程_哔哩哔哩_bilibili
激活资源Navicat - 飞书云文档
注意:这里安装电脑名与路径都不能有中文
基本操作
启动MySQL服务
1 | sudo systemctl start mysql |
关闭MySQL服务
1 | sudo systemctl stop mysql |
重启MySQL服务
1 | sudo systemctl restart mysql |
检查MySQL的服务状态
1 | sudo systemctl status mysql |
SQL基础
概述:按照功能不同,SQL语句可以分为以下几类
DDL 数据库定义语言
概述:用来定义数据库对象,比如数据库、表、列等等,相关的关键之包括CREATE
、DROP
、ALTER
、TRUNCATE
等等
DML 数据库操作语言
概述:用于对数据库中的记录进行新增、删除或者修改,关键字包括INSERT、UPDATE、DELETE、CALL等等
DQL 数据库查询语言
概述:用来查询数据库中的记录,关键字包括SELECT、WHERE等等
DCL 数据控制语言
概述:用来定义数据库的访问权限和安全级别,以及创建用户等等,关键字包括GRANT、REVOKE
创建数据库
首先用root用户启动mysql
1 | mysql -u root -p |
显示当前存在的数据库
1 | SHOW DATABASES; |
创建数据库
1 | CREATE DATABASES 库名; |
删除数据库
1 | DROP DATABASES 库名 |
创建表
选择数据库
1 | USE 库名; |
创建表
1 | CREATE TABLE 表名 (); |
注意:括号中是字段的名称和数据类型,字段之间用逗号隔开,最后的字段后面不用加逗号
示例:创建一个玩家数据的表
1 | create table player( |
mysql数据类型
数值类型
整数类型
1 | 根据空间储存1-8分为 |
浮点数类型
1 | Float 4字节 |
日期和时间类型
1 | DATE 日期 |
字符串类型
1 | CHAR 定长字符串 |
查看表的结构
1 | DESC 表名; |
修改表结构
修改表中列的数据类型
1 | ALTER table 表名 MODIFY COLUMN 列名 新的数据类型; |
修改表中列名的名称
1 | ALTER TABLE 表名 RENAME COLUMN 原列名 to 新列名; |
添加新列
1 | ALTER TABLE 表名 ADD COLUMN 列名 数据类型; |
删除列
1 | ALTER TABLE 表名 DROP COLUMN 列名; |
删除表
1 | DROP TABLE 表名; |
数据的增删查改
插入数据
1 | INSERT INTO 表名(想加入数据的列) VALUES (对应数据) |
注意:如果values括号中包括了所有列,并且顺序结构与表的结构一致,就可以省略表名后面的括号
注意:如果想要插入多条数据,可以在values后面添加多个括号
查询数据
1 | select 列名或者* from 表名; |
条件约束
1 | DEFAULT 默认值 |
修改数据
1 | UPDATE 表名 set 列名 = 值 where 条件子句(列:name='王五'); |
注意:修改多列可以用逗号隔开列举的列,如果没加where会修改整个列的值
删除数据
1 | DELETE FROM 表名 where 条件子句; |
数据库的导入与导出
导出
1 | mysqldump -u root(用户名) -p 库名 表名 > 文件名.sql |
注意:表名可以省略,省略之后就会导出里面全部的表
导入
1 | mysql -u root(用户名) -p 库名 < 文件名.sql |
常用语句
where
概述:用于提取满足标准的记录,它可以同select、update、delete一起使用,后面加上条件语句即可,根据条件的复杂程度配合NOT、AND、OR和括号,如果同时使用需要注意他们的优先级NOT>AND>OR
IN
概述:可以指定多个值
BETWEEN…AND…
概述:可以用于指定一个连续的范围
NOT
概述:表示取反
LIKE
概述:用于模糊查询,其中用到两个字符,%
与_
,%表示任意个字符,_表示任意一个字符
REGEXP
概述:使用正则表达式
NULL
概述:表示空值,查询中不能用某某=null语句,应该用某某 IS NULL,这条语句可以搭配NOT。
注意:NULL需要使用IS NULL来判断,而空字符串用等号判断
ORDER BY
概述:指定某个字段来排序,如果不指定默认升序(ASC),在列名后面加DESC可以指定降序,如果需要指定多个字段,可以使用逗号连接
注意:字段或列可以通过数字表示,即第几列
聚合函数
概述:对某列进行一些计算
1 | 常用聚合函数 |
GROUP BY
概述:对查询结果进行分组,后面接列名
HAVING
概述:一般对分租后的结果筛选,后面接条件语句
LIMIT
概述:对结果限制数量,如果后面只接一个数字,就是限制出现几条结果,如果后面出现两个数字并用逗号隔开,第一数字表示偏移量,结果会从这个数字列之后开始显示,第二个数值表示显示几条数据
UNION
概述:用来合并两个查询的结果,把两个语句用UNION连接即可,此命令会默认清除重复的记录,用UNION ALL就不会清楚重复数据
示例:
1 | SELECT name, email |
INTERSECT
概述:用来取两个查询结果的交集
示例:
1 | SELECT name, email |
AS
概述:给一个结果的列取别名
EXCEPT
概述:用于取两个查询结果的差集
示例:
1 | SELECT name, email |
EXISTS
概述:判断一个查询是否有结果,返回1或0
示例:
1 | SELECT department_name |
JOIN
概述:可以根据一个或多个列之间的关系来组合这些表的行。
示例:
1 | SELECT e.name, d.department_name |
DISTINCT
概述:可以与 SELECT
语句一起使用,以确保返回的结果集中的每一行都是唯一的。
示例:
1 | SELECT DISTINCT department_id |
子查询
概述:一个查询的结果作为另个一查询的条件
表关联
内连接
概述:只返回两个表中都有的数据
左连接
概述:返回左表中的所有数据和右表中匹配的数据,右表中没有的数据用NULL填充
右连接
概述:返回右表中的所有数据和左表中匹配的数据,左表中没有的数据用NULL填充
索引
概述:可以提高查询速率
创建索引
1 | CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name |
查看索引
1 | show index from 表名 |
删除索引
1 | DROP INDEX 索引名 on 表名 |
视图
概述:是一种虚拟存在的表,本身并不包含数据,而是作为一个查询语句保存在数据字典中,当我们查询视图的时候,它会根据查询语句的定义来动态的生成数据
创建视图
1 | CREATE VIEW 视图名 |
修改视图
1 | alert VIEW 视图名 |
删除视图
1 | drop view 视图名; |
存储过程
概述:存储过程(Stored Procedure)是一种在数据库中存储的预编译的 SQL 代码块,可以被多个应用程序或用户重复调用。存储过程在数据库中以一种独立的方式存在,可以接受参数并执行一系列的 SQL 语句。存储过程是一种强大的工具,可以帮助开发者更高效地管理数据库操作,封装复杂的业务逻辑,提升性能和安全性。在大型应用中,合理使用存储过程可以显著提高开发效率和系统的可维护性。
查看库里的存储过程
1 | SHOW PROCEDURE STATUS WHERE Db = 'your_database_name'; |
使用
示例:在pubs数据库中创建存储过程max_price,根据指定的图书类型(输入参数)返回该类图书的最高单价(输出参数)。要求在创建存储过程前要先判断该存储过程是否已存在,如果存在,则将其删除。
在sql server中语句表达
1 | use pubs |
示例:在MySQL语句表达
1 | USE pubs; |