mysql使用总结
来源:互联网 发布:金三立官网软件 编辑:程序博客网 时间:2024/06/06 06:41
去年开始,工作中使用nodejs+mysql搭建了一个系统的后端,第一次让sql成为工作中的重要技能,之前一直对sql都非常不熟悉,记录下曾经学过用过的知识是非常必要的。
安装
通过没mysql官网可下载最新版本:http://www.mysql.com/;
windows下操作mysql,可以使用mysql workbench,也可以直接使用命令台指令操作。
登录指令
使用workbench的话,直选择Database->Connect to database,填写好ip跟端口号,用户名密码连接即可;
使用控制台,输入:mysql -u username -p password -h host,即可连接。
建库建表导出导入表
建库:
create database dbname;
建表:
use dbname;create table tablename (id int (20) NOT NULL AUTO_INCREMENT,name varchar(30) NOT NULL,age int(8) NOT NULL,birthday datetime,PRIMARY KEY(id));
增删查改数据
插入数据:
insert into tablename(name, age, birthday) values('tokuchitoa',20, '1979-01-01'),('kujima', 42, '1957-01-01');
删除数据:
由于mysql删除修改数据有安全设定,因此默认是不可删改的,如果要删改,则需要设成可删改模式
set sql_safe_updates = 0;delete from tablename;
修改数据:
update tablename set name = 'tom' where name = 'tokuchitoa';
查找数据:
这是工作中最常使用的命令,有很多种不同的查询方式,这里记下用过的几种:
select * from tablename where name = 'tokuchitoa';select * from tablename where name in ('tokuchitoa', 'kujima');select * from tablename where age > 10 and birthday >= '1979-01-01';select * from tablename where age > 10 or birthday >= '1979-01-01';select distinct name from tablename;select sum(age) as total_age from tablename group by name;
有时候需要改变表的结构,增加一些新列,则用如下sql:
ALTER TABLE `tablename` ADD COLUMN `newcolumn` INT(8) NULL DEFAULT NULL,
使用数据库,通常会支持产生一些数据冗余,因此不会随意删除数据删除列,这里就没了解怎么删除列了,以后用到再补。
定时任务
定时任务可以实现很多功能,我在工作中遇到的场景是,需要将数据按天分开,那就要每天建一个表,可以这样写:
DELIMITER $$SET GLOBAL event_scheduler = ON$$ CREATE EVENT 'eventname' ON SCHEDULE EVERY 1 DAY STARTS '2016-04-03 12:00:00' ON COMPLETION NOT PRESERVE ENABLEDO BEGINDECLARE tablename VARCHAR(128);SET tablename = CONCAT('table_', DATE_FORMAT(DATE_ADD(CURDATE(),INTERVAL 1 DAY), '%Y%m%d'));SET @sqlCmd = CONCAT('create table if not exists `',tablename,'` like `',temp_table,'`');PREPARE preStmt FROM @sqlCmd; EXECUTE preStmt; END$$DELIMITER ;先打开event_scheduler,然后建立事件,设定好周期,再写好事件要做的事情(我这里是根据模版表来建一个新表,表名跟时间相关);
这里曾经遇到一个问题,我在本地测试的时候事件经常不生效,或者没有按照周期执行,暂时不知道原因,有时候重启mysql就可以了。
性能分析(索引等)
对于上百万的数据量,查询起来会很耗费性能,因此需要用到索引,建立索引有一个原则,叫做最左前缀匹配原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4,如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整,建索引可以直接用workbench建立,也可以写sql,如下:
ALTER TABLE tablename ADD INDEX indexname (time,id,name);
在sql前加上explain可以分析出本句sql的一些情况,用于性能优化
0 0
- MySQL使用总结(1)
- MySql使用总结
- Mysql日期使用总结
- Mysql使用总结
- mysql命令使用总结
- mysql workbench使用总结
- mysql变量使用总结
- mysql变量使用总结
- mysql变量使用总结
- mysql变量使用总结
- mysql变量使用总结
- mysql变量使用总结
- mysql变量使用总结
- mysql使用总结
- mysql变量使用总结
- mysql变量使用总结
- mysql变量使用总结
- mysql使用总结
- Unity Shaders and Effects Cookbook (1-5)使用2D渐变纹理模拟BRDF(双向反射分布函数)
- Mac下Sublime+Latextools遇到的fontspec编译问题
- AsyncTask原理
- 建立交叉编译环境
- Chromium网页Layer Tree创建过程分析
- mysql使用总结
- Mac NTFS 解决方法
- 人员登记,双向循环链表
- Android Studio 常见问题
- 新新新新新新到不行的新手手向:Spring在Eclipse中的配置方法
- __int64与long long
- 274. H-Index
- poj 2623 快排
- 图像处理之-位图