隔壁弟弟十篇博客node入门而且写了个前后端分离项目,我怎么还在打游戏?—1篇博客教你搞定Mysql数据库

前言

参考: Mysql 必知必会 菜鸟教程
友情链接:
臭弟弟的十篇博客
大佬的SQL语句快查,非常实用
憨憨的Mysql安装教程

数据库和Mysql

基本概念
数据库

数据库是一个以某种有组织的方式存储的数据集合

表是一种结构化的文件,可用来存储某种特定数据类型的数据
数据库中的每个表都有一个名字,用来标识自己。这个名字是唯一的。

模式

模式可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)

列和数据类型

表由列组成。列中存储着表中某部分的信息
数据库中的每个列都有相应的数据类型。数据类型定义列可以存储的数据种类
数据类型限制可存储在列中的数据种类

表中的数据是按行存储的

主键

表中的每一行都应该有可以唯一标识自己的一列(或一组列),唯一标识表中每行的这个列称为(或这组列)称为主键。

列作为主键需满足的条件
  • 任意两行都不具有相同的主键值
  • 每个行都必须具有一个主键值(主键不允许NULL值)
    注意
    可以一起使用多个列作为主键,但所有列值的组合必须是唯一的(但单个列的值可以不唯一)

Mysql

SQL

SQL是结构化查询语言(Structured Query Language)的缩写,它是一种专门用来与数据库通信的语言。
SQL优点

  • SQL不是某个特定数据库供应商专有的语言。
  • SQL简单易学。
  • SQL是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。
Mysql

Mysql是一种数据库软件

使用Mysql

开启Mysql服务和关闭Mysql服务

一般来说 ,在安装好Mysql之后,Mysql 服务会默认开机自启的
如图示
在这里插入图片描述

net start mysql;  //  开启Mysql服务

net stop mysql;  //  关闭Mysql服务
注意 start 和 stop 后面都要跟服务名哦

在这里插入图片描述

连接Mysql

连接到Mysql,需要以下信息:

  • 主机名(计算机名)— 如果连接到本地Mysql服务器,为localhost;
  • 端口(默认端口3306)
  • 合法用户名
  • 用户口令(也就是密码)
mysql -h 主机名 -u 用户名 -p

参数说明:
-h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
-u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:
mysql -u root -p
按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:
Enter password:
若密码存在, 输入密码登录, 不存在则直接按回车登录。登录成功后你将会看到 Welcome to the MySQL monitor... 的提示语。
然后命令提示符会一直以 mysql> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。

举个栗子:这里我登陆本地的Mysql服务器
在这里插入图片描述
我登录我虚拟机的Mysql服务器

在这里插入图片描述
注意哦:
这里的红色的的部分是我的虚拟机的ip,如果想要连接其他的主机的Mysql服务器,需要在那边授予相应的权限,然后还要把Mysql服务和防火墙打开,这里就不在赘述了,这里只是说明一下连接到Mysql的方法。

选择数据库

在连接到Mysql时,没有任何数据库打开让我们使用,在对数据库进行操作前,我们需要选择一个数据库,需要使用use关键字
在这里插入图片描述

数据库和表
show databases;  返回可用数据库的一个列表。
show tables;  返回当前选择的数据库内的可用表的列表。
show columns from 表名 返回选择的表的信息
describe 表名  可以理解为与 show columns from 表名 等价

drop database 数据库名;  //  删除数据库
drop table 表名;  //  删除表
安全管理
访问控制

需要给用户提供他们所需要的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制需要创建和管理用户账号。

管理用户

MySQL用户账号和信息存储在名为mysql的Mysql数据库中。

use mysql;
select user from user;  //  获得所有用户账号列表

在这里插入图片描述

create user 用户名
create user 用户名 identified by 密码;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

rename user 用户名(修改之前) to 用户名(修改之后)   //  重命名用户账号

drop user 用户名  //  删除用户账号

在这里插入图片描述
在这里插入图片描述

访问权限

新创建的用户账号没有访问权限,不能执行任何数据库操作。

show grants for 用户名;  //  查看用户账号权限

在这里插入图片描述
USAGE表示根本没有权限。

grant 用法(设置权限)

grant 要求至少给出以下信息:

  • 要授予的权限
  • 被授予访问权限的数据库或表
  • 用户名
grant 权限 on 数据库名(或表名) to 用户名

在这里插入图片描述
注意:
这里的S_T.*代表S_T数据库上的所有表。

revoke用法(撤销权限)

用法与grant类似

revoke 权限 on 数据库名(或表名) from 用户名

在这里插入图片描述

修改密码
set password for 用户名 = '密码';  //修改指定用户名的密码

在这里插入图片描述

数据插入(insert)

Insert 关键字

顾名思义,Insert是用来插入(或添加)行到数据库表的。

插入完整的行
insret into 表名
values
(数据,数据,数据...)

注意:如果某个列没有数值,应该使用NULL值,虽然这种语法很简单,但并不安全,应该避免使用。
编写insert语句的更安全方法如下:

insert into 表名
(列名,列名,列名...)
values
(数据,数据,数据...)

使用这种语法,可以省略列,意思就是说可以只给某些列提供值,给其他列不提供值。省略的列必须满足以下某个条件:1、该列定义为允许NULL值2、在表定义中给出默认值

插入多个行

1、可以使用多条Insert语句

2、只要每组Insert语句中的列名(和次序)相同,可以使用下面的组合语句,这种语句可以提高数据库处理的性能

insert into 表名
(列名,列名,列名...)
values
(数据,数据,数据...),
(数据,数据,数据...),
(数据,数据,数据...),
(数据,数据,数据...),
...
(数据,数据,数据...);
插入检索出的数据(select稍后会介绍到)

可以将通过select检索出的数据插入到表中,具体语法如下

insert into 表名
(列名,列名,列名...)
select
列名,列名,列名...
from
表名

删除数据(delete)

从表中删除特定的行(按条件查找)
delete from 表名
where 条件(要删除的数据)

注意
delete 语句从表中删除行,甚至是删除表中所有行,但是,delete不删除表本身

从表中删除所有的行
truncate  表名

注意
使用truncate table 语句完成相同的工作,但速度比delete语句更快,truncate 语句实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据

更新数据(修改数据)

更新表中特定行(按条件修改表中的数据)
update 表名
set 数据(修改后的数据)
where 条件(要修改的数据)

检索数据(select)

select: 从一个或多个表中检索信息。
为了使用 select 检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择

无条件检索
检索单个列
select 列名 from 表名

在这里插入图片描述
注意

  • 这里要注意,多条SQL语句必须以分号(;)间隔,如果使用的是mysql 命令行,必须加上分号来结束Sql语句。
  • SQL语句是不区分大小写的,但要注意,数据库名、表名、列名是区分大小写的。
检索多个列

要想从一个表中检索多个列,使用相同的SELECT语句。唯一的不同
是必须在SELECT关键字后给出多个列名,列名之间必须以逗号分隔。

select 列名,列名,列名...  from 表名

在这里插入图片描述

检索多个列

给定一个通配符(*),则返回表中所有列。列的顺序一般是列在表定义中出现的顺序。但有时候并不是这样的,表的模式的变化(如添加或删除列)可能会导致顺序的变化。

select *from 表名

在这里插入图片描述
注意:

  • 使用*通配符,通常会降低检索和应用程序的性能,因为需要列出表中的每个列。使用通配符一大优点就是可以检索出名字未知的列。
检索不同的行

使用distinct 指示MySQL只返回不同的值

SELECT DISTINCT 列名 from 表名

在这里插入图片描述

(有条件检索) 限制结果

SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。

select 列名 from 表名 limit 行数  
select 列名 from 表名 limit 开始位置, 检索的行数  

在这里插入图片描述
在这里插入图片描述
总结如下:
带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。

排序检索数据(Order by 子句)(按顺序检索)

子句: SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。

使用order by 语句子句 对检索出的数据进行排序

SELECT 列名,列名... from 表名  order by 列名,列名...

在这里插入图片描述
注意:
order by 子句默认升序排序,若要使用降序排序,必须指定desc关键字
desc 关键字只应用到直接位于其前面的列名。
如果想在多个列上进行降序排序,必须对每个列指定desc关键字。
在这里插入图片描述

过滤数据(Where 子句)(按条件检索)

数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件( search criteria),搜索条件也称为过滤条件(filter condition)。‘

在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。

select 列名 
from 表名
where 条件 

在这里插入图片描述

Where 子句操作符

在这里插入图片描述
注意
在创建表时,表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时,称其为包含空值NULL
SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句

and/or操作符

为了通过不止一个列进行过滤,可使用and/or操作符给WHERE子句附加条件。

select 列名
from 表明
where 条件1 and/or  条件2 

注意:
and 与 or 的区别这里就不详细介绍了,学过C/C++的我们应该对他们很熟悉了,但要注意一点,就是操作符的优先级问题,这里的话建议使用括号明确地分组相应地操作符

in操作符

IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。

not 操作符

WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。

通配符

LIKE 操作符

select 列名
from 表名
where 列名  like 通配符

通配符(wildcard) 用来匹配值的一部分的特殊字符。

百分号通配符

%表示任何字符出现任意次数。
举个栗子
在这里插入图片描述

下划线通配符

这里要注意一点,下划线通配符的用途与%是一样的,但下划线只能匹配单个字符而不是多个字符。

用正则表达式搜索(更新中)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walkerrev_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值