操作命令集
- 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, 并将结果返回。