Mysql 学习笔记
创建表:
create table testtable(
id_ bigint not null AUTO_INCREMENT,
name varchar(75) null,
vmid varchar(75) null,
timeStamp datetime null,
PRIMARY KEY (id_,timeStamp),
UNIQUE KEY `findVMMonitor` (vmid,timeStamp)
) engine InnoDB;
(1)更新记录某个 字段
update test set status = 1 where id_=9601;
(2)添加字段
ALTER TABLE `test` ADD COLUMN `name` VARCHAR(200) COMMENT '姓名' AFTER `id`;
(3)修改列类型
alter table test modify type int(2);
(4)重命名列
alter table 表名 change column 更改之前的列名 更改之后的列名 更改之后的列名的数据类型(列的存储空间分配的字节数)
alter table personnel change column pohto photo varchar(200);
(5)删除某个列
alter table test drop column type;
(6)修改列注释
alter table test modify width_type varchar(10) comment '类型';
(7)删除表记录
-- 清空全部数据,不写日志,不可恢复,速度极快
truncate table 表名;-- 清空全部数据,写日志,数据可恢复,速度慢delete from 表名INSERT INTO users(name, age) VALUES('姚明', 25), ('比尔.盖茨', 50), ('火星人', 600);
http://blog.163.com/lgh_2002/blog/static/440175262011824837778/
mysql -uroot -p 数据库名(root用户名,123456密码)
输入sql语句
load data infile 'd:/1.csv'
into table c_money_payout
CHARACTER SET utf8//报错,删除该行
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\n'
ignore 1 lines
(id, name, data);
SELECT * FROM c_money_payout
INTO OUTFILE 'd:/3.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' //字符串将带有双引号
LINES TERMINATED BY '\n';
Linux
导出:
select * from VMMoniterData
into outfile '/tmp/test.csv'
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by 'rn';
导入:
load data infile '/tmp/test.csv'
into table test_info
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by 'rn';
参考:http://www.ithao123.cn/content-674396.html
(13)hibernate mysql分页办法
http://blog.knowsky.com/255646.htm
(14)mysqldump 导出、导入数据库
导出 : C:\Users\Administrator>mysqldump -uroot -proot test > d:/test.dump
http://www.cnblogs.com/feichexia/p/MysqlDataBackup.html
http://www.cnblogs.com/zcw-ios/articles/3319480.html
导入:
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\\wcnc_db.sql(使用cmd窗口)
http://www.cnblogs.com/zeroone/archive/2010/05/11/1732834.html
(15)展示所有表
mysql> show tables;
(16)展示所有数据库
show databases;
(17)查询表结构
desc 表名;
show columns from 表名;
describe 表名;
show create table 表名;
(18)查看、创建和删除索引的方法
http://www.jb51.net/article/73372.htm
(19)存储过程
1、创建
变量为整形
DELIMITER //
create procedure pro10()
begin
declare i int;
set i= (select max(year) from t1)+1;
while i<90000000
do
insert into t1(year,month,day) values(i,i+10,i+20);
set i=i+1;
end while;
end;
//
mysql> DELIMITER ;
变量为字符串
DELIMITER //
create PROCEDURE pro13(in code VARCHAR(50))
BEGIN
select * from c_diary t where t.`id` = code;
END
//
2、调用
call pro10();
call pro10();//cmd
3、删除
DROP PROCEDURE pro10;
4、查看存储过程
show procedure status;
5、查看存储过程创建代码
show create procedure proc_name;
(20)简简单单储存过程——循环一个select结果集
http://shitou521.iteye.com/blog/1069027
(21)查看数据库连接池状态
show processlist\G
(22)定时任务
创建表:CREATE TABLE aaa (timeline TIMESTAMP);
查看Events:
mysql> show events\G
mysql> show full events\G
mysql> SELECT * FROM mysql.event;
mysql> SELECT * FROM information_schema.events;
查看Events是否开启:
mysql> select @@event_scheduler;
mysql> show variables like 'event_scheduler';
开启Events方法:
mysql> set GLOBAL event_scheduler=ON;
或
mysql> set GLOBAL event_scheduler=1;
当Mysql服务或电脑重启,该设置失效,所以想让事件一直保持开启,最好修改配置文件,让mysql服务启动的时候开启时间,只需要在my.ini配置文件的[mysqld]部分加上event_scheduler=ON 即可,如下:

在Linux下叫my.cnf,该文件位于/etc/my.cnf
创建事件:
DROP EVENT IF EXISTS e_test_insert;
DELIMITER //
CREATE EVENT e_test_insert
ON SCHEDULE
EVERY 1 SECOND //每秒执行
//EVERY 1 DAY //每天执行
STARTS '2016-11-09 16:03:00' //某个时间点开始,必须是未来的时间
ON COMPLETION NOT PRESERVE ENABLE
DO
INSERT INTO aaa VALUES(CURRENT_TIMESTAMP);
//
DELIMITER ;
参考:http://www.cnblogs.com/chenpi/p/5137310.html
(23)触发器

表结构如上,实现功能是:
当向表插入一条记录时,自动求出此条记录的subNum属性值,计算方法是找到昨天的日期并且是同样id的值的money属性值,跟今天的money相减,如果今天是周一,则找到上周五的记录再相减
delimiter // CREATE TRIGGER abc BEFORE INSERT ON product FOR EACH ROW BEGIN DECLARE oldMone INT(10); DECLARE newMone INT (10); DECLARE temp INT (10); IF WEEKDAY(CURDATE())=0 THEN SET oldMone=(SELECT money FROM product WHERE dateTime=DATE_SUB(CURDATE(),INTERVAL 3 DAY) AND id=new.id); -- ELSEIF (ISNULL((SELECT money FROM product WHERE dateTime=DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND id=new.id)))THEN -- SET oldMone=0; ELSE SET oldMone=(SELECT money FROM product WHERE dateTime=DATE_SUB(CURDATE(),INTERVAL 1 DAY) AND id=new.id); END IF; SET newMone=new.money; SET new.subNum=newMone-oldMone; END; // delimiter ;
old是代表要操作的更改前的记录,new是代表要操作的更改后的记录。
NEW 是新值,OLD 是旧值
INSERT 只有NEW,UPDATE有NEW和OLD,DELETE只有OLD。
(24)查看已创建事件
select * from mysql.event
查看事件代码
show create event eventName;
(25)如何修改unique key
mysql可以使用unique key来确保数据的准确性,unique key可以是一个字段,也可以是多个字段,对应已经存在的unique key如何修改呢?目前我使用的方法是分两步来完成,先drop掉,然后在创建。需要注意的是drop时关键字是“index”,而创建时关键词是“unique key”,命令如下:

注意:如果表中已经存在数据,可能会创建失败,原因是col1, col2无法满足unique。
(26)启、停Mysql服务
Window:
net start mysql
net stop mysql
Linux:
service mysqld start
(27)删除主键
alter table t1 drop primary key;
alter table t1 add primary key(year,month,day);
(28)连接远程Mysql
mysql -h 192.168.64.76 -umysql -pmysql_NL123
(29)创建数据库
CREATE DATABASE meeting DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
(30)导出远程数据库
mysqldump -h110.1.108.199 -umysql -pmysql449 meeting > d:\test_net.sql
meeting:数据库
导出本地数据库表
mysqldump -u mysql -p meeting scan_info >meeting_scan_info.sql
scan_info:表
(31)sql文件导入
C:\Users\jiangnf>mysql -h localhost -u root -p hello<d:\id_user\user.sql(未登录Mysql,执行此sql要保证数据库必须提前存在)
C:\Users\jiangnf>mysql -uroot -proot -h127.0.0.1 shop1 < d:\id_user\sum_interface_table.sql
mysql> source D:\id_user\user.sql(登录Mysql)
Mysql 学习笔记的更多相关文章
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- Mysql学习笔记(一)数据类型
原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型 Mysql数据类型 含义(有符号) tinyint(m ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- MySQL学习笔记-锁相关话题
在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因. Mysql常用存储引擎的锁 ...
- MySQL学习笔记-事务相关话题
事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...
- MySQL学习笔记-数据库文件
数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...
- MySQL学习笔记-数据库内存
数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...
- MySQL学习笔记-数据库后台线程
数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...
随机推荐
- git常用的命令集合
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. Git常用操作命令: 1) 远程仓库相关命令 检出仓库:$ git clone g ...
- 如何正确的做WEB端的压力测试
1.对要测试的系统进行分析,明确需要对哪一块做压力测试.比如:淘宝网站双十一期间,秒杀跟支付,此模式用户操作中占比比较大 再比如:游戏,登录--开始战斗--结束战斗这种混合模式在用户操作中占比较大 那 ...
- oracle11g interval(numtoyminterval())自动创建表分区
Oracle11g通过间隔分区实现按月创建表分区 在项目数据库设计过程中由于单表的数据量非常庞大,需要对表进行分区处理.由于表中的数据是历史交易,故按月分区,提升查询和管理. 由于之前对于表分区了解不 ...
- WIN7凭据管理器保存的凭据过段时间会自动删除的解决办法
控制面板\用户帐户和家庭安全\凭据管理器 进入该页面可看到所有凭据
- ftp org.apache.commons.net.ftp.FTPClient 判断文件是否存在
String path = "/SJPT/ONPUT/HMD_TEST/" ; FtpTool.getFTPClient().changeWorkingDirectory(path ...
- 登陆Oracle,报oracle initializationg or shutdown in progress 错误提示
前两天,登陆Oracle,发现登陆不上去了,报”oracle initializationg or shutdown in progress 错误提示” 错误. 然后就想着怎么去解决,首先自己到win ...
- Jquery知识点
Jquery $代表选择器 JS 选取元素 操作内容 操作属性 操作样式 <div id="aa" style="width:100px; height:100px ...
- Error staring Tomcat Cannot connect to VM错误解决办法
最近经常遇myEclipse以debug方式启动tomcat的错误提示如下: 直接run方式启动没有问题. 一般这个问题等一会就不再出现,如果有耐心的话,就等几分钟再启动.如果没有耐心,可以试试下面的 ...
- PHP扩展安装mcrypt 提示没有可用包(No package php-mcrypt available)
一.用CentOS的朋友基本在安装软件的时候默认都会想到用yum安装省事省时而且不会有错不需要担心依赖问题. php大部分的扩展都是可以再yum源里安装的,但是部分扩展是没有的,需要安装epel-re ...
- notepad++快捷键
notepad++现在是我最常用的文本编辑工具,其中使用的列模式编辑,也是很好使用的. 基本的快捷键: Ctrl-C,Ctrl-X,Ctrl-V,Ctrl-Y,Ctrl-A,Ctrl-F,Ctrl-S ...