zoukankan      html  css  js  c++  java
  • 91 Testing MySQL学习总结

    91 Testing MySQL学习总结

    ---------

    在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System
    什么是数据库?
    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,

    ----------
    什么是关系型数据库管理系统(RDBMS)

    所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

    RDBMS即关系数据库管理系统(Relational Database Management System)的特点:

    1.数据以表格的形式出现
    2.每行为各种记录名称
    3.每列为记录名称所对应的数据域
    4.许多的行和列组成一张表单
    5.若干的表单组成database

    -----------------
    数据库中的一些概念:
    数据库: 数据库是一些关联表的集合。.
    数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
    列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
    行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
    冗余:存储两倍数据,冗余可以使系统速度更快。
    主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
    外键:外键用于关联两个表。
    复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
    索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
    参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

    ----------------------
    Mysql数据库的特点:
    Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。
    32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
    Mysql是开源的,所以你不需要支付额外的费用。
    Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

    --------------
    安装Mysql
    下载Mysql
    https://www.mysql.com/downloads/

    在Linux系统上安装MySQL

    在Windows上安装MySQL

    ------------------------
    常用的基础命令:
    SHOW DATABASES;

    添加用户的的实例,用户名为guest,密码为guest123,并授权用户可进行 SELECT, INSERT 和 UPDATE操作权限:
    use mysql;

    INSERT INTO user
    (host, user, password,
    select_priv, insert_priv, update_priv)
    VALUES ('localhost', 'guest',
    PASSWORD('guest123'), 'Y', 'Y', 'Y');

    FLUSH PRIVILEGES;

    SELECT host, user, password FROM user WHERE user = 'guest';

    2.添加用户 zara ,密码为 zara123 。
    use mysql;
    GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
    -> ON TUTORIALS.*
    -> TO 'zara'@'localhost'
    -> IDENTIFIED BY 'zara123';
    以上命令会在mysql数据库中的user表创建一条用户信息记录。

    注意: MySQL 的SQL语句以分号 (;) 作为结束标识。

    ------------------------
    管理MySQL的命令
    USE 数据库名 :选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
    SHOW DATABASES: 列出 MySQL 数据库管理系统的数据库列表。
    SHOW TABLES: 显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
    SHOW COLUMNS FROM 数据表: 显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
    SHOW INDEX FROM 数据表: 显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
    SHOW TABLE STATUS LIKE 数据表G: 该命令将输出Mysql数据库管理系统的性能及统计信息。

    ---------------------
    登录进Mysql
    mysql -u root -p
    Enter password:******

    退出Mysql
    使用 exit 命令

    创建数据库

    删除数据库

    创建数据库表

    删除数据库表
    DROP TABLE table_name ;

    向数据库表中插入一条数据
    INSERT INTO

    数据查询
    Select 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
    SELECT 命令可以读取一条或者多条记录。
    你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
    你可以使用 WHERE 语句来包含任何条件。
    你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
    -----------------------

    mySQL任务13
    查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。

    查询某个表中的所有信息
    SELECT * from 要查询的表的名字

    查询中的where字句
    WHERE 子句类似于程序语言中的if条件,如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据。MySQL数据表中读取指定的数据,WHERE 子句是非常有用的。使用主键来作为 WHERE 子句的条件查询是非常快速的。

    ---------------------
    删除数据库中的数据:
    SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录
    通用的语句是:delete from 要删除的表 where 条件
    如果没有指定 WHERE 子句,MySQL表中的所有记录将被删除。
    你可以在 WHERE 子句中指定任何条件

    ----------------------
    数据库中的模糊查询like
    LIKE 通常与 % 一同使用
    可以使用AND或者OR指定一个或多个条件
    可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件

    -----------------------
    SQL的 ORDER BY 子句用来将查询的返回结果进行排序
    默认情况下,它是按升排列ASC。
    ASC 或 DESC 关键字来设置查询结果是按升序或降序排列

    ----------------------
    在多张表中查询数据
    即借助join 关键字来实现的联合多表查询
    1. LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。

    -----------------------
    SQL语句对Null值的处理
    IS NULL: 当列的值是NULL,此运算符返回true。
    IS NOT NULL: 当列的值不为NULL, 运算符返回true。
    <=>: 比较操作符(不同于=运算符),当比较的的两个值为NULL时返回true。

    ------------------------
    MySQL中的事务
    事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

    事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行

    通常来说:事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)


    1、事务的原子性:一组事务,要么成功;要么撤回。
    2、稳定性 : 有非法数据(外键约束之类),事务撤回。
    3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
    4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。


    -----------------------

    事务的操作:
    1,开始一个事务
    start transaction
    2, 做保存点
    save point 保存点名称
    3, 操作
    4,可以回滚,可以提交,没有问题,就提交,有问题就回滚。

    -----------------

    索引:
    索引可以大大提高MySQL的检索速度。
    索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。

    创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

    索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

    缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

    建立索引会占用磁盘空间的索引文件。

    ------------------------
    1.创建索引
    2.删除索引
    3.创建唯一索引

    ------------------------
    临时表:
    临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。

    默认情况下,当你断开与数据库的连接后,临时表就会自动被销毁。当然你也可以在当前MySQL会话使用 DROP TABLE 命令来手动删除临时表。

    ------------------------
    复制Mysql数据库中的数据表的完整信息
    需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等。
    1.获取数据表的完整结构。
    SHOW CREATE TABLE tutorials_tbl G;
    2.修改SQL语句的数据表名,并执行SQL语句。<
    复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
    >
    3.如果你想复制表的内容,你就可以使用 INSERT INTO ... SELECT 语句来实现。

    ------------------------
    获取Mysql服务器元数据
    命令 描述
    SELECT VERSION( ) 服务器版本信息
    SELECT DATABASE( ) 当前数据库名 (或者返回空)
    SELECT USER( ) 当前用户名
    SHOW STATUS 服务器状态
    SHOW VARIABLES 服务器配置变量

    -------------------------
    MySQL数据库中重复数据的处理:
    MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
    1.防止表中出现重复数据
    你可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。

    --------------------------
    1.统计MySQl数据表中的重复数据
    2.过滤重复数据, 在SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。
    3.删除重复数据

    --------------------------
    SQL注入:
    所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

    我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。

    ------------------------
    防止SQL注入,我们需要注意以下几个要点:

    1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
    2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
    3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
    4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
    5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
    6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。

    ---------------------------
    1.Like语句中的SQL注入

    -----------------
    MySQL数据导出
    MySQL数据导入

    ---------------------------

  • 相关阅读:
    C# FTP操作
    SWUST OJ(963)
    插入排序(折半插入排序)
    SWUST OJ(962)
    SWUST OJ(961)
    SWUST OJ(960)
    SWUST OJ(957)
    SWUST OJ(956)
    SWUST OJ(955)
    SWUST OJ(954)
  • 原文地址:https://www.cnblogs.com/GaoNa/p/9671550.html
Copyright © 2011-2022 走看看