以下是个人看书和看Mysql技术内幕的一点学习心得,跟大家分享,有错误请指出,谢谢。
2018/08/07更新:四种连接区别
Mysql 导出数据: select * into outfile '/tmp/bump.txt' fields terminated by ',' optionally enclosed by ' " ' lines terminated by '\n' from linuxtest.test2
Mysql 导入数据: Load data infile '/tmp/dump.txt' into table linuxtest1.test fields terminated by ',' optionally enclosed by ' " ' lines terminated by '\n'
cast 数据类型转化:select cast(number as signed) from tablename 将varchar类型的number字段转换成整数
substr 字符串截取: select sbustr(number,1,2) from tablename;从字符串第一个位置开始,截取两个字符。字符串的初始位置编码是1
select *,row_number() over(partition by 字段) from tablename where ....;窗口函数,发现这个函数在聚合的时候比group by更加灵活
mysql主要有两大引擎,Myisam和innodb。之前默认是myisam,在5.7版本之后默认为inndb了。两者的主要区别如下
1、Innodb 支持事务
2、Innodb支持外键
3、Innodb是行锁,myisam是表锁。所以innodb适用于高并发,但是高并发不是换个引擎就能解决的
1、数据库字段单元保证最小,不能再分,例如地区:能够准确到上海即上海,而不用中国
2、字段要与主键有相关性
3、字段与主键的相关性要是直接相关(非间接相关)
1、原子性:即整个事务是不可切分的;不能只执行其中某一部分
2、一致性:事务发生前后,数据库状态变化应该是一致的
3、隔离性:事务之间是孤立的,不会相互影响
4、持久性:事务一旦执行完毕,数据库的变化是持久的
日期比较可以用 select * from tablename where data> #2018-03-21# 利用#号进行日期大小比对,还可以使用内置的datediff 函数,或者year,day;或者强制转换为整数形,进行大数比较
提高查找效率可分为LIST、RANGE等
show variables like 'symlink';展示MYISAM 是否可以迁移;
set password for root = password('123');更改数据库密码
mysqladmin -u USER -p password PASSWORD
delimiter 定义MYSQL程序终止符
alter table table_name rename to new_tab_name、rename table old_name to new_name 数据表改名;
alter table tab_name disable keys 索引失效
alter table tab_name enable keys 索引有效
show variables like 'have_cache_query' 缓存查询
procedure() 表示一个历程
procedure analyse():语句分析,用于分析SQL运行过程,从而进行一定优化(主要是时间消耗)
explain 查询分析,用来做相应的SQL优化
character set utf-8 数据库编码
truncate table tablename 删除所有数据,但表结构保留 delete from tablename where 1=1 类似效果,表结构保留数据删除
drop table tablename 表结构与数据一起删除
create tigger trgginer_name 创建触发器;
insert into table values(0)
update table set sep=LAST_INSERT_ID(seq+1);
select LAST_INSERT_ID()
LAST_INSERT_ID()函数 更新整列值
convert();数据类型转换;
show create table 表名 查看建表信息
cast(now() as unsigned) 数据类型转换
collation()字符串排序;
\g:每行显示一个结果;
\c:取消输入,回到初始状态;
DATE_SUB:减去指定时间间隔;
CURDATE:返回当前日期;
INTERVAL:返回True or False;
NULL:能为空;
NOT NULL:表示不能为空;
enum:枚举类型; enum('F','M') NOT NULL;
default-storage-engine=innodb;更改默认引擎;
federated:引擎是通过方程数据表检索而来,数据表并不保存在本地。
show variables like 'version,datadir,engine';查数据库信息
Load DATA 加载文件数据
load data local infile 'name.txt' into table member
source 导入文件.sql语句
IF()紧随其后的表达式进行求值,返回后面两个参数值;IF(death IS NULL,0,1)
concat 合并字符串
_ 只能匹配一个字符,% 匹配字符串
@变量名:=值;MYSQL赋值方法
count(列名) 统计一列中非NULL的值
with rollup 汇总group by统计的数据
Linux alias:定义指令别名; unalias删除指令别名; character:定义编码规格;
collation 显示数据库编码 show collation
set names 'utf8' 编码修改
alter table tablename engine = MyISAM 引擎修改
convert:字符集编码转换;convert(@s1 using latin1)
zerofull:0填充,满足字符串长度
left join 以左表为主表,将右表数据对左表进行补充,join失败的字段填充null
right join 以右表为主,同上
inner join 内连接 显示两张表相关的共有信息
full join 全连接 显示两张表所有的信息
unsigned:无符号数;
转载注明出处。谢谢!