《从零开始学习Mysql5.7》笔记

操作命令集

  • cd C:Program FilesMySQLMySQL Server 5.7in   进入到Mysql的bin目录
  • mysql -h localhost -u root -p     输入密码后进入mysql>命令行模式
  • mysql> show databases[G];       显示数据库列表    
  • mysql> create database test123;      创建数据库名为test123的数据库
  • mysql> drop database test123;       删除数据库名为test123的数据库(不可恢复,谨慎操作)
  • mysql> show engines[G];    显示当前数据库支持的存储引擎
  • mysql> use sys;    mysql> show tables;   切换到某个数据库,然后显示该数据库下的全部表
  • mysql> select * from bs_field [ limit 1];     显示某个表的数据【一条】
  • mysql> desc bs_field;    查看某个表的结构
  • mysql> show create table bs_field[ G];   查看表的详细信息
  • mysql> select version();     查询服务器版本号
  • mysql> select connection_id();    查询当前连接数
  • mysql> show processlist;    输出当前用户的连接信息
  • mysql> select database();   显示当前使用的数据库

存储引擎

1)支持的存储引擎

  • InnoDB
  • MyISAM
  • MEMORY
  • ARCHIVE
  • CSV
  • BLACKHOLE

InnoDB:

①Mysql5.5.5版本之后默认引擎;②支持事务,支持行锁定,支持外键;③创建3个文件,ibdate1(10M自动拓展的数据文件),ib_logfield0、ib_logfield1(5M大小的日志文件)

 MyISAM:

①Mysql5.5.5版本之前默认引擎;②不支持事务;③拥有较高的查询和插入速度;④每张表最大索引数64,每个索引最大列数16;⑤索引可以作用在BLOB和TEXT上;⑥创建数据库产生三个文件,frm文件存储定义表,数据文件拓展名为.MYD,索引拓展名为.MYI;

MEMORY:

①将表中的数据存储到内存中;②存储引擎执行HASH和BTREE;③不支持TEXT和BLOB;

其他

数据类型

1)INT(11)中数字11表示该数据类型指定的显示长度,其实际长度最长可到取值范围最大数值;

2)金钱存储用DECIMAL,浮点数(FLOAT和DOUBLE)和定点数(DECIMAL)类型都可以用(M,N)表示,M为精度,N为标度;DECIMAL和DOUBLE取值范围一样,DECIMAL以串的形式存放,

3)TIMESTAMP和DATETIME显示格式相同,宽度固定在19个字符,TIMESTAMP的取值范围小于DATETIME,取值范围是1970-01-01 00:00:01 UTC~2038-01-19 03:14:07 UTC,UTC为世界标准时间;TIMESTAMP存储的时候按照世界标准时间(UTC)进行存储,存储时对当前时区进行转换;检索时会转换会当前时区;

4)CHAR和VARCHAR后者时可变字符,检索的时候,CHAR会将首位空格去掉再返回,VARCHAR则不会;

5)BLOB是二进制字符串,可以存储图片、音频等信息,TEXT只能存储纯文本;

运算符

运算符优先级

 

sql语句

1)IFNULL(V1,V2)    如果V1不为空,返回V1,否则返回V2

2)between  A and B , 该查询条件包含开始值和结束值

3)and的优先级大于or的优先级

4)多列排序  ... order by  A  desc  ,  B  desc

5)group by 子句中使用  with rollup   显示记录数 (select lan,count(*) from tableA group by lan with rollup;最后一行显示总记录数),注

:使用rollup时不能使用order by

6)count(*)和count(字段名)区别,count(*)计算空值,后者不计算空值,空值即显示null的值

7)limit  [m,] n 

  • limit 2 ;  显示前两条数据
  • limit   3,5;  从第3+1条数据开始,一共显示5条

8)max(字符串)  比较字符串的ASCII码

9)exists拓展(后续补充)

10)合并查询,union:去重、排序,union all:全集

11)条件更新:update person set info='学生' where age between 19 and 26;

完整查询语句

SELECT DISTINCT <select_list>
FROM <left_table>
<join_type> JOIN <right_table>
ON <join_condition>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>

执行顺序

1)FORM: 对FROM左边的表和右边的表计算笛卡尔积,产生虚表VT1。
2)ON: 对虚表VT1进行ON过滤,只有那些符合<join-condition>的行才会被记录在虚表VT2中。
3)JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3。
4)WHERE: 对虚拟表VT3进行WHERE条件过滤。只有符合<where-condition>的记录才会被插入到虚拟表VT4中。
5)GROUP BY: 根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5。
6)HAVING: 对虚拟表VT5应用having过滤,只有符合<having-condition>的记录才会被 插入到虚拟表VT6中。
7)SELECT: 执行select操作,选择指定的列,插入到虚拟表VT7中。
8)DISTINCT: 对VT7中的记录进行去重。产生虚拟表VT8.
9)ORDER BY: 将虚拟表VT8中的记录按照<order_by_list>进行排序操作,产生虚拟表VT9.
10)LIMIT:取出指定行的记录,产生虚拟表VT10, 并将结果返回。

 索引

原文地址:https://www.cnblogs.com/songjn/p/13800924.html