数据库基础+重置root密码


测试工程师在测试软件过程中,不仅仅需要在界面进行操作,还需要检查数据库中的数据是否正确,从而在软件出现问题时候,能够定位到问题原因。


 

数据库

  1. 定义:数据库是按照数据的结构来组织,存储,和管理数据的仓库。

  1. 数据库和SQL是什么关系?

SQL:结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

关系:数据库里面放着数据,而SQL是用来操作数据库里数据的语言(工具)。例如有一碗米饭(碗就是mysql,里面放的米是数据),你要吃碗里的米饭,拿什么吃?拿筷子(sql)。用筷子(sql)操作碗里(mysql)的米饭(数据)

 

 

  1. 数据库有哪些?

  1. Oracle:最挣钱的数据库,出自甲骨文公司,市场占有率非常高,功能非常强大,被一些大型企业,电信,银行,证券公司所使用

 

  1. MySQ:一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL目前最流行的开源数据库,被甲骨文公司所占用,威胁着老大Oracle的地位,开源,免费,支持多平台,易用

 

  1. SQLServer:微软开发的数据库,仅支持Windows操作系统,号称是windows上最好用的数据库。数据库的天下不仅仅是MySQL和Oracle的,SQLServer也正在慢慢崛起,微软网罗了不少数据库的专家,推出了不少重磅功能。

 

  1. MongoDB:最好用的文档型数据库,是NOSQL类型数据库的领导者之一,也是当前最成功的NoSQL类型数据库,数据存储格式采用JSON形式,非常灵活。

 

  1. Redis:最好的内存级数据库,查询效率极高,并且在Redis 3.0之后,支持多种数据类型,String,Set,List,Hash等类型,开始支持集群,弥补了自身短板。是目前做缓存最流行的数据库

 

  1. Neo4J:最好的图形化数据库,流行话较低,但是图形化数据库的绝对领导者。

 

  1. SQLite:最流行的嵌入式数据库,占领手机行业的绝对领导者地位,Android和IOS两大手机系统,都内嵌了SQLite数据库,SQLite是一个完整的关系型数据库,支持标准SQL,支持事务操作,程序包非常小,是嵌入式设备的最佳选择。

 

  1. MYSQL安装

    1. 安装及配置:参考文档:https://kdocs.cn/l/s3IygVMGm

    2. 卸载:参考文档:https://www.cnblogs.com/sunzzc/p/13030676.html

    3. 实在不行重启后再安。一定要注意端口占用问题。

    4. 重置MySQL root密码:

     

  2. 数据库语言的分类:

    DDL: 数据库定义语言 对的增删改

    DML: 数据操作语言 对的增删改

    DQL : 数据库查询语言 对库和表的查询(模糊查询,分页查询,子查询,多表查询 聚合函数 分类 分组 排序等)

    DCl: 数据控制语言

     

  3. 表中字段基本数据类型

    1. MySQL支持多种类型,大致可以分为三类:数值日期/时间字符串(字符)类型

       

    2. 一个汉字占多少长度与编码有关:

      1. UTF-8:一个汉字=3个字节,

      2. GBK :一个汉字=2个字节

 

 

  1. 表结构语句操作

     

     

    1. 整型
      类型大小范围(有符号)范围(无符号)用途
      TINYINT 1 字节 (-128,127) (0,255) 小整数值
      SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
      MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
      INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
      BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
      FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值
      DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度 浮点数值
      DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

      取值范围如果加了 unsigned,则最大值翻倍,如 tinyint unsigned 的取值范围为(0~256)。

      int(m) 里的 m 是表示 SELECT 查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个 m 有什么用。

       

       

    2. 浮点型(float 和 double)

    MySQL数据类型含义
    float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
    double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位

    设一个字段定义为 float(5,3),如果插入一个数 123.45678,实际数据库里存的是 123.457,但总个数还以实际为准,即 6 位。

    1. 定点数

      浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

      decimal(m,d) 参数 m<65 是总个数,d<30 且 d<m 是小数位。

       

    2. 字符串(char,varchar,_text)

      MySQL数据类型含义
      char(n) 固定长度,最多255个字符
      varchar(n) 固定长度,最多65535个字符
      tinytext 可变长度,最多255个字符
      text 可变长度,最多65535个字符
      mediumtext 可变长度,最多2的24次方-1个字符
      longtext 可变长度,最多2的32次方-1个字符

      char 和 varchar

      1. char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串末尾不能有空格,varchar 不限于此。

      2. char(n) 固定长度,char(4) 不管是存入几个字符,都将占用 4 个字节,varchar 是存入的实际字符数 +1 个字节(n<=255)或2个字节(n>255),所以 varchar(4),存入 3 个字符将占用 4 个字节。

      3. char 类型的字符串检索速度要比 varchar 类型的快。

      varchar 和 text

      1. varchar 可指定 n,text 不能指定,内部存储 varchar 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节(n>255),text 是实际字符数 +2 个字节。

      2. text 类型不能有默认值。

      3. varchar 可直接创建索引,text 创建索引要指定前多少个字符。varchar 查询速度快于 text, 在都创建索引的情况下,text 的索引似乎不起作用。

       

    3. 二进制数据(_Blob)

      1. _Blob和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而 _Blob是以二进制方式存储,不分大小写。

      2. _BLOB 存储的数据只能整体读出。

      3. TEXT可以指定字符集,_Blob不用指定字符集。

       

    4. 日期时间类型

      MySQL数据类型含义
      date 日期 '2008-12-2'
      time 时间 '12:25:36'
      datetime 日期时间 '2008-12-2 22:06:44'
      timestamp 自动存储记录修改时间

      若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

       

    5. 数据类型的属性
      MySQL关键字含义
      NULL 数据列可包含NULL值
      NOT NULL 数据列不允许包含NULL值
      DEFAULT 默认值
      PRIMARY KEY 主键
      AUTO_INCREMENT 自动递增,适用于整数类型
      UNSIGNED 无符号
      CHARACTER SET name 指定一个字符集

      常用约束

      1. primary key 主键

      2. auto_increment 自增

      3. not null 非空

      4. foreign key 外键

      5. unique 唯一

      6. default 默认

      7. decimal 浮点

 


方法一:

my.ini的[mysqld]字段加入:skip-grant-tables

重启mysql服务,这时的mysql不需要密码即可登录数据库 进入mysql:

 mysql>更新 user set password=password('新密码') WHERE User='root';
 mysql>flush privileges;

运行之后最后去掉my.ini中的skip-grant-tables,重启mysqld即可。

方法二:

不使用修改my.ini重启服务的方法,通过非服务方式加skip-grant-tables运行mysql来修改mysql密码

  1. 停止mysql服务

  2. 打开命令行窗口,在bin目录下使用mysqld-nt.exe启动,即在命令行窗口执行: mysqld-nt --skip-grant-tables

  3. 然后另外打开一个命令行窗口,登录mysql,此时无需输入mysql密码即可进入。

按以上方法修改好密码后,关闭命令行运行mysql的那个窗口,此时即关闭了mysql,如果发现mysql仍在运行的话可以结束掉对应进程来关闭。

启动mysql服务

 

没有结果就是最好的结果。 -Linux哲学
原文地址:https://www.cnblogs.com/Stubbornlyn/p/13158619.html