02>>>配置文件、SQL基本语句
配置文件、SQL基本语句
在学习之后的内容之前还需补充一个小点:在MySQL中SQL语句的结束符是分号(;)。
修改密码与破解密码
修改密码
在学会如何登陆管理员账号之后便迎来了一个问题:该怎么给账号换个更安全的密码呢?
方法1:
首先,先用cmd登陆管理员账号。

随后输入:
set password=password('111'); # 引号中的内容就是新密码。

当然了,用该命令修改的是当前登录用户的密码。
方式2:
接下来尝试一下极客版的修改方法
mysqladmin -u用户名 -p原密码 password 新密码

忘记密码如何解决?(仅限本地)
有时候时间一长,忘记了密码该怎么办?难道只能坐以待毙吗?当然不是,如果是忘记了公司账户的密码,可以直接向管理员申请更改密码。而安装在本地的MySQL还有另一种方法可以解决问题。
1.先停止MySQL服务(以管理员身份运行)
net stop mysql

2.以取消校验授权表的形式启动服务端
mysqld --skip-grant-tables

3.另起一个管理员cmd,登录管理员账号
mysql -uroot -p

4.修改对应用户的密码(去存储用户数据表中修改密码数据)
update mysql.user set password=password(123) where user="root" and host="localhost";
如显示下图红框中的字样便成功。

5.停止服务并正常启动
上述步骤完成之后,先要按Ctrl+C或者在cmd中输入"net stop mysql"命令停止MySQL,停止之后再输入"net start mysql"启动。
当然也可以在服务对话框里找到MySQL服务,右键点击重新启动。

这时候密码已被替换了,输入旧密码无效,新密码可用。
这番操作的实质就是绕过校验用户名密码的步骤,直接强行登录。

需要强调的是,这种方法只有本地可用,若客户端和服务端分离,就没法用这招了。
字符编码与配置文件
查看基本信息
在讲正事之前先缓一下,如果想要查看当前MySQL服务端基本信息应该输入什么命令?
\s
接下来就会反馈服务器的基本命令,现在需要注意到一个问题

服务端和数据库用的是latin1编码,而客户端用的却是gbk编码。两端不一样,如果贸然存储数据势必会引发乱码现象。
所以需要统一使用一种编码,就选用现在通行的utf8码好了。
配置文件
打开mysql文件的根目录,可以看到那个叫my-defalut.ini的默认配置文件。

.ini就是就是典型的配置文件后缀,另外还有.xml等后缀。
通过修改.ini文件,我们就可以设置MySQL的许多属性,包括统一字符编码。
双击打开它,能看见一行全大写的警告语

MySQL默认的配置文件不要去修改,贸贸然改动可能会引发杯具性后果。如果想修改配置,可以拷贝一份再做修改。
之后打开用来修改的配置,在里面写入几行配置命令。
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
写好后保存退出,完事后记得一定要重启服务端!
然后调出基本信息来看看:

全部统一成了utf8码,妈妈再也不用担心文件会乱码了!
基本SQL语句
接下来终于可以讲到基本语句了。
首先,先了解一个概念,CURD增删改查。
CURD就是四个英语单词的缩写:创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)
打开淘宝,它会给你推荐很多商品,这便是查询数据,也就是读取(Retrieve)。
挑中了想要的商品便下单购买,于是支付宝中的用户余额就减去了相应的金额,这就是修改数据,即更新(Update)。
不想剁手,并且以后也不想用淘宝了,删号删端还我六根清净,这就是删除数据,字面意义的删除(Delete)。
没几天又后悔了,把淘宝应用下载回来又注册一个新账号,注册账号就是创建数据,即创建(Create)。
不光是淘宝,所有软件的底层运作逻辑都是这样,程序员的工作也是围绕着这四个基础功能展开。
了解了CURD,现在就可以从外到里来学习一下有哪些语句。
针对库
1.查
show databases; # 查看所有的数据库名称

显示出五个库,也就是五个文件夹,打开data文件夹对照着看一下:

五比四,少了information_schema,因为他保存在内存中,所以data目录里没有。
如果想要查看指定的库,可以下面这条语句:
show create database db1; # 查看指定的数据库

2.增
若想要创建新的库,可以用下面的语句:
create database joe; #创建新数据库(joe)

3.改
想要修改库使用的字符编码,可以:
alter database joe charset='gbk'; # 修改指定的数据库(joe)编码为gbk
之后再查看一下数据库joe:

4.删
如果想删掉某个数据库,使用该语句:
drop database joe; #删除指定的数据库(joe)


注意:不要删除系统自带的库!!!
针对表
如何查看当前在哪个库下?
在操作表之前,首先要知道自己现在在那个库下。
select database();

显示null表示目前在data目录。
如何切换数据库?
知道了自己在哪,那么操作起来就方便了,不过应该怎么切换库呢?
如果是直接打开文件,鼠标双击就可以了,在MySQL里就要稍微复杂点。
use 数据库名; # 切换至该数据库

现在可以说表的语句了。
1.查
概览库下的所有文件
show tables; # 查看某个库下所有的表名(只显示名称,多个同名不同格式的文件只显示一个)

可以看见,文件夹中显示的项目数量和MySQL中显示的对不上。
这是因为该命令只显示名称不显示后缀名,表内如果有多个同名不同格式的文件,在"show tables"只显示一次。
查看指定的表信息
这一段需要先了解创建表的语句,所以先看《2.增》
可以查看一下t2的信息
show create table t2; # 查看表t2信息

显示出了文件名、id字段及其数据类型、name字段及其数据类型,还有默认的编码是latin1。
不过这个命令使用频率不高,更常用的是下一个:
describe t2; # 用于查看表结构(常用),也可简写为 desc t2;

该命令会将参数分类排列好,字段都归在Field列,数据类型归在Type列,另外一些参数暂不介绍。
2.增
create table 新表(xx,xx); # 创建表(必须要有字段名和类型)
在创建表之前,一定要注意当前在哪个库中。
来建一个表t2:
create table t2(id int,name char); # 创建表t2;定义id字段,存储整数;定义name字段,存放char字符类型数据(类似python中的str)
show tabels; # 查看joe库下所有的表名

t2赫然在列~
强调:MySQL是关系型数据库,所以创建表时一定要定义表的结构
3.改
现在轮到修改表了,先来个简单的,如何修改表内某个字段的类型?
alter table t2 modify 字段名 数据类型;
如果想要把表t2中name字段的数据类型改成varchar类型,则:
alter table t2 modify name varchar(16); # 将表t2中name字段修改为varchar类型

红框中的char(1)被替换成了varchar(16),替换成功。
4.删
最后自然是删数据。
drop table t2; # 删除表t2

这时候去文件夹里寻找t2的话就会发现已经删除了。
同样的,不要删除系统自带库中的表,不然可能会引发各种问题。
针对记录
现在是数据化时代,最值钱最重要的资源是数据。而在数据库中,含金量最高的就是记录。
首先需要明确一点,是先有库和表,随后才有数据。
在使用数据库时,最好使用自己创建的文件夹,默认自带的不要动。
1.查
首先创建一个新的库db1,然后在里面创建新的表ti,最后在里面输入一些数据。
create database db1; # 创建库db1
use db1; # 切换至库db1
create table ti(id int,name varchar(16),pwd int) # 创建表ti;定义id字段,整数类型;定义name字段,varchar类型;定义pwd字段,整数类型
接下来就是查看表ti的代码:
select * from 表名;# 查看t1表中所有的数据(*表示所有的字段)
带入到表中看一下:

因为表中什么数据都没有,所以自然就反馈empty了。
这种方式用的不多,更常见的是下面这种方式:
select id,name from ti; # 查看表ti内指定字段id和name对应的数据
2.增
既然表是空的,那么我们应该往里面填充些记录。
insert into ti values(1,'joe',123); # 插入数据(表中有几个字段就需要插入几条数据)
然后调取一下看看:

成功加入数据了。
需要注意的是,表中定义了多少个字段,添加时就要填写多少个值。
insert into ti values(2,'kevin',456),(3,'tony',789); # 也可以多段连写
3.改
现在我想把1号的名字joe改成victor,应该如何做?
update ti set name='victor' where id=1; #将id为1的name字段改为victor

4.删
现在又到了大快人心的删除时刻!
delete from ti where id=3; #删除表ti中id为3的这条记录

3号tony的资料被删除掉了!
想要玩得更疯一点,还有一条指令:
delete from ti; # 删除表ti中所有的记录

正所谓删库跑路,深藏功与名是也!

浙公网安备 33010602011771号