1. SQL语句
SQL分类:
数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。
数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等。
2. 数据类型
- char是定长,varchar是变长,char存储时,如果字符数没有达到定义的位数,后面会用空格填充到指定长度,而varchar没达到定义位数则不会填充,按实际长度存储。
- char长度固定,char存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,可谓是以空间换取时间效率。varchar则刚好相反,以时间换空间。
3. 数据库操作
查看数据库
查看数据库MySQL服务器中的所有的数据库:
show databases;
查看某个数据库的定义的信息:
show create database 数据库名
show create database user;
删除数据库
drop database 数据库名称:
drop database user;
查看表
查看数据库中的所有表
show tables;
查看表结构:
有两种方式
方法一: desc 表名;
方法二: SHOW COLUMNS FROM 表名;
修改表结构格式(实际开发最常用)
alter table 表名 add 列名 类型(长度) 约束;
ALTER TABLE user ADD udesc VARCHAR(20);
添加多个字段:
/*添加多个列方法一*/
ALTER TABLE user
ADD unameVARCHAR(32) NOT NULL,
ADD utel CHAR(64) NOT NULL;
/*add语句之间用逗号分隔,最后用分号结束*/
/*添加多个列方法二*/
ALTER TABLE user
ADD (unameVARCHAR(32) NOT NULL,utel CHAR(64) NOT NULL);
值得注意的是:
如果表需要添加多列,而有一列字段uname之前已经添加过了,结果会显示Duplicate column name 'uname',那么你本次添加的多列字段都是无效的,即全部添加失败
慢查询日志是什么?如何配置
当查询超过一定时间没有返回结果的时候,才会记录进慢查询日志。
• 慢查询日志可以帮助 DBA 找出执行效率缓慢的 SQ语句,为数据库优化工作提供帮助。
• 慢查询日志默认是不开启的,建议开启慢查询日志。
• 当需要进行采样分析时手工开启。
【慢查询日志开启】
关于慢查询日志,主要涉及到下面几个参数:
slow_query_log :是否开启慢查询日志功能(必填)
slow_query_log_file:慢查询日志文件及位置
long_query_time :超过设定值,将被视作慢查询,并记录至慢查询日志文件中(必填)
也就是说,只有满足以上三个条件,“慢查询功能”才可能正确开启。
参数文件修改如下:
修改配置文件my.cnf,在[mysqld]下的下方加入
[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1
重启MySQL服务service mysqld restart即可
4. 数据库设计原则
索引设计的原则
1.适合索引的列是出现在where子句中的列,或者连接子句中指定的列
2.基数较小的类,索引效果较差,没有必要在此列建立索引
3.使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间
4.不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。