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 。
相关推荐
moyekongling 2020-11-13
liuweiq 2020-09-09
ribavnu 2020-11-16
要啥自行车一把梭 2020-11-12
vitasfly 2020-11-12
康慧欣 2020-09-10
Ida 2020-09-16
敏敏张 2020-11-11
emmm00 2020-11-17
王艺强 2020-11-17
aydh 2020-11-12
世樹 2020-11-11
zry 2020-11-11
URML 2020-11-11
spurity 2020-11-10
yifangs 2020-10-13
Andrea0 2020-09-18
ltd00 2020-09-12
tufeiax 2020-09-03
xjd0 2020-09-10
greatboylc 2020-09-10