• mysql课外积累


    where 与 on 的区别 :
     ON:针对关联表进行条件筛选,不会影响结果集的数量和主表数据。
    
     WHERE:针对结果集进行条件筛选,会影响结果集的数量。
    
    
    LIKE声明中的%和_是什么意思?
    		--%对应于0个或更多字符,_只是LIKE语句中的一个字符。
    
    
    blod text
    BLOB是一个二进制对象,可以容纳可变数量的数据。TEXT是一个不区分大小写的BLOB。
    
    BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。
    
    mysql_fetch_array和mysql_fetch_object的区别:
    
    mysql_fetch_array() – 将结果行作为关联数组或来自数据库的常规数组返回。
    
    mysql_fetch_object – 从数据库返回结果行作为对象。
    
    ibd : 数据 + 索引
    每个MyISAM表格以三种格式存储在磁盘上:
    
    ·“.frm”文件存储表定义
    
    ·数据文件具有“.MYD”(MYData)扩展名
    
    索引文件具有“.MYI”(MYIndex)扩展名
    
    
    NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。
    
    CURRENT_DATE()仅显示当前年份,月份和日期。
    
    sql 优化 :
    
    explain出来的各种item的意义;
    select_type 
    表示查询中每个select子句的类型
    type
    表示MySQL在表中找到所需行的方式,又称“访问类型”
    possible_keys 
    指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用
    key
    显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL
    key_len
    表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
    ref
    表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值 
    Extra
    包含不适合在其他列中显示但十分重要的额外信息
    
    (2)、profile的意义以及使用场景;
    
    查询到 SQL 会执行多少时间, 并看出 CPU/Memory 使用量, 执行过程中 Systemlock, Table lock 花多少时间等等
    
    数据库是磁盘文件,磁盘IO 的代价较高,所以采用索引减少IO 次数
    
    drop直接删掉表有关的一切(数据/结构/约束…),不会记录日志
    truncate 删除表中所有数据(再插入时自增长id又从1开始),该操作也不会记录日志所以比较快,为DDL操作。只能删table
    
    DELETE语句执行删除的过程是每次从表中删除一行,需要记录日志,比较慢,可以加where 语句,为DML(Data Manipulation Language, 数据操纵语言)。可以删table 和view 。
    速度上drop > truncate > delete
    
    from > join > on(筛选器) > where > group by(分组)
    > avg (聚合函数) > having( 衰选)
    > select > distinct > order by >limit(选取条数)
    
    
    
    where和having的区别
    
    (1)where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会查询出来
    
    (2)where后不可以跟聚合函数,having可以进行聚合函数的判断
    
    注:在具体执行SQL语句中,可以用“;”、“g”和“G”符号表示语句结束。
    
    以“;”、“g”结束符作用一样,而“G”符号除了表示语句结束外,还可以使得结果显示更美观,相当于格式化的作用。
    
    视图:本质上是一种虚拟表,其内容与真实表相似,包含一系列带有名称的列和行数据。但是,视图并不是在数据库中以存储的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。
    
    MySQL软件不仅对于关键字不区分大小写,对于字段数据记录也不区分大小写。
    
    
    LIKE关键字,如果匹配“%%”则表示查询所有数据记录
    
    
    
    主键、外键和索引的区别
    
    定义:
    
     主键--唯一标识一条记录,不能有重复的,不允许为空
    
     外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值
    
     索引--该字段没有重复值,但可以有一个空值
    
    
    作用:
    
     主键--用来保证数据完整性
    
     外键--用来和其他表建立联系用的
    
     索引--是提高查询排序的速度
    
    个数:
    
     主键--主键只能有一个
    
     外键--一个表可以有多个外键
    
     索引--一个表可以有多个唯一索引
    
    
    什么是SQL注入?(理解)
    
    答:SQL注入攻击是黑客对数据库进行攻击的常用手段之一。一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,注入者可以在表单中输入一段数据库查询代码并提交,程序将提交的信息拼凑生成一个完整sql语句,服务器被欺骗而执行该条恶意的SQL命令。注入者根据程序返回的结果,成功获取一些敏感数据,甚至控制整个服务器,这就是SQL注入。
    
    count(1) 与 count(*) 都表示对全部数据行的查询。count(*) 包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL ;count(1) 用1代表代码行,在统计结果的时候,不会忽略列值为NULL 。
    
  • 相关阅读:
    MyBatis之三:多表联合查询
    MyBatis之二:简单增删改查
    MyBatis之一:入门
    如何用Maven创建web项目(具体步骤)
    Maven3.2创建webapp项目过程中问题以及解决方案
    纯前端下载数据Excel文档
    centos7 yum无法正常工作
    Element ui table selection 分页支持保存已经选中的数据,同时支持随时删除选中的数据,并设置默认选择
    删除排序数组中的重复选项
    列表数据(包含父节点关系)转化为树形结构
  • 原文地址:https://www.cnblogs.com/shaozheng/p/11774380.html
Copyright © 2020-2023  润新知