mysql 索引的使用和查询语法
1. 創建單列索引: ALTER TABLE people ADD INDEX firstname (firstname);
ALTER TABLE `requester` ADD INDEX ( `requestid` )
2. 創建多列索引: ALTER TABLE people ADD INDEX fname_lname_age (firstname,lastname,age);
3. 相等鏈接語句: SELECT * from a INNER JOIN b ON a.aID =b.bID
(在a 表中取出 和 b 表中 id 一樣的 列來 ) LEFT JOIN 以左邊的為準 會列出 左邊的 表的不同項 右邊表則列出 NULL
4. 查詢字段的平均值 : SELECT AVG(PRICE) from SALES WHERE ID = 1000 AND SALE_DATE BETWEEN ‘2004-01-01′ AND ‘2005-12-31′;
( MIN( XX ) 最小值, MAX( XX ) 最大值 , AVG( XX ) 平均值 , SUN ( XX ) 總和 , COUNT( XX ) 出現次數 )
5. 查詢根據頭銜且平均工資大於100000 的結果 SELECT title, AVG(salary) from employee_da ......
经历了一次系统崩溃终于把linux系统下的开发环境完整的开发了出来了。
这次采取的是ubuntu9.10(RC)+JDK1.5+Mysql5.1外带一个eclipse作为IDE。
由于笔记本的光驱算是牺牲了,所以当这次ubuntu发脾气down掉的时候几乎抓狂。没有光盘,怎么安装系统?
网上一搜,最后采取的办法是用u盘启动ISO镜像文件来进行安装的。起初放进去一个DVD版本的系统,用了2个小时才写U盘写完,可是竟然断电。无法,去网吧下了个CD版本的。在网吧大概花了10分钟的样子就把600M+的ISO写进U盘了。
Mysql安装的时候下的是一个离线包,可是不知道怎么安装,没办法只好apt-get install mysql-server
JDK安装的时候用上的命令有 chmod +x 挂在JDK的bin安装文件,然后直接运行就OK了。接着就是环境变量的设置了。
用了不少时间。毕竟这方面即便是在windows的时候也没有怎么接触。
所有的环境都已经基本搭建完成了。剩下的就是熟悉linux下面的开发了。 ......
经历了一次系统崩溃终于把linux系统下的开发环境完整的开发了出来了。
这次采取的是ubuntu9.10(RC)+JDK1.5+Mysql5.1外带一个eclipse作为IDE。
由于笔记本的光驱算是牺牲了,所以当这次ubuntu发脾气down掉的时候几乎抓狂。没有光盘,怎么安装系统?
网上一搜,最后采取的办法是用u盘启动ISO镜像文件来进行安装的。起初放进去一个DVD版本的系统,用了2个小时才写U盘写完,可是竟然断电。无法,去网吧下了个CD版本的。在网吧大概花了10分钟的样子就把600M+的ISO写进U盘了。
Mysql安装的时候下的是一个离线包,可是不知道怎么安装,没办法只好apt-get install mysql-server
JDK安装的时候用上的命令有 chmod +x 挂在JDK的bin安装文件,然后直接运行就OK了。接着就是环境变量的设置了。
用了不少时间。毕竟这方面即便是在windows的时候也没有怎么接触。
所有的环境都已经基本搭建完成了。剩下的就是熟悉linux下面的开发了。 ......
经历了一次系统崩溃终于把linux系统下的开发环境完整的开发了出来了。
这次采取的是ubuntu9.10(RC)+JDK1.5+Mysql5.1外带一个eclipse作为IDE。
由于笔记本的光驱算是牺牲了,所以当这次ubuntu发脾气down掉的时候几乎抓狂。没有光盘,怎么安装系统?
网上一搜,最后采取的办法是用u盘启动ISO镜像文件来进行安装的。起初放进去一个DVD版本的系统,用了2个小时才写U盘写完,可是竟然断电。无法,去网吧下了个CD版本的。在网吧大概花了10分钟的样子就把600M+的ISO写进U盘了。
Mysql安装的时候下的是一个离线包,可是不知道怎么安装,没办法只好apt-get install mysql-server
JDK安装的时候用上的命令有 chmod +x 挂在JDK的bin安装文件,然后直接运行就OK了。接着就是环境变量的设置了。
用了不少时间。毕竟这方面即便是在windows的时候也没有怎么接触。
所有的环境都已经基本搭建完成了。剩下的就是熟悉linux下面的开发了。 ......
这几天手头开发的系统要做一个类似windows账户到期时间的功能,考虑了半天想出了一个技术上和逻辑上都还能实现的解决方案:
创建一个用户存入数据库的时候都创建一个事件调度器来控制用户的到期时间(mysql的时间调度器确实很方便)。想起来是很简单,但是做起来问题确实一波接一波...
一些小问题就不说了,到了关键的地方了:在插入一个用户的时候我到底是在应用层来添加一个事件调度器呢还是在数据库里面自动添加。
当然不管从代码的美观上、系统设计的思想上或是运行效率上来说,我都应该选择后者(废话...)。于是我就选择了后者(你敢再说废话吗)。那么就有了今天的这段笔记...
一开始我兴致勃勃的拼好字符串什么的,写了如下一个触发器
delimiter //
create trigger tri_user after insert on user for each row
begin
set @u_name = new.u_name;
set @expire = '';
select sm_pwd_alter_day into @expire from system_manage where sm_id = 1;
set @str = concat('create EVENT eve_', @u_name, ' ON SCHEDULE EVERY ', @expire, ' day DO
update user set u_enable = \'未启用\' where u_name = \'', @u_n ......
这几天手头开发的系统要做一个类似windows账户到期时间的功能,考虑了半天想出了一个技术上和逻辑上都还能实现的解决方案:
创建一个用户存入数据库的时候都创建一个事件调度器来控制用户的到期时间(mysql的时间调度器确实很方便)。想起来是很简单,但是做起来问题确实一波接一波...
一些小问题就不说了,到了关键的地方了:在插入一个用户的时候我到底是在应用层来添加一个事件调度器呢还是在数据库里面自动添加。
当然不管从代码的美观上、系统设计的思想上或是运行效率上来说,我都应该选择后者(废话...)。于是我就选择了后者(你敢再说废话吗)。那么就有了今天的这段笔记...
一开始我兴致勃勃的拼好字符串什么的,写了如下一个触发器
delimiter //
create trigger tri_user after insert on user for each row
begin
set @u_name = new.u_name;
set @expire = '';
select sm_pwd_alter_day into @expire from system_manage where sm_id = 1;
set @str = concat('create EVENT eve_', @u_name, ' ON SCHEDULE EVERY ', @expire, ' day DO
update user set u_enable = \'未启用\' where u_name = \'', @u_n ......
今天从MYSQL数据库抓取时,发生了Cannot convert value '0000-00-00 00:00:00' from column 10 to TIMESTAMP异常
google了一下,大概意思是MySQL中的Datetime值无法再JAVA中可靠的被表示,按照JDBC和SQL的标准默认情况下产生异常。
JDBC允许用下列的值对zeroDateTimeBehavior 属性来设置这些处理方式,
exception (the default), which throws an SQLException with an SQLState of S1009.
设置为exception 异常(缺省)用一个SQLState的s1009错误号来抛出一个异常
convertToNull, which returns NULL instead of the date.
设置为convertToNull,用NULL值来代替这个日期类型
round, which rounds the date to the nearest closest value which is 0001-01-01.
设置为round,则围绕这个日期最接近的值(0001-01-01)来代替
你可以修改你的jdbc连接
jdbc:mysql://localhost:3306/NovelSiteDB?user=root&password=zjwilove4&zeroDateTimeBehavior=round
运行成功!
转自:http://blog.csdn.net/pjchen/archive/2008/04/19/2308245.aspx ......
备份MySQL数据库的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql
直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > backupfile.sql
同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 > multibackupfile.sql
仅仅备份数据库结构
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
备份服务器上所有数据库
mysqldump –all-databases > allbackupfile.sql
还原MySQL数据库的命令
mysql -hhostname -uusername -ppassword databasenam ......
查询一天:
select * from table where to_days(column_time) = to_days(now());
select * from table where date(column_time) = curdate();
查询一周:
select * from table where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time);
查询一个月:
select * from table where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time);
mysql的日期和时间函数
查询选择所有 date_col 值在最后 30 天内的记录。
mysql> SELECT something from tbl_name
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; //真方便,以前都是自己写的,竟然不知道有这,失败.
DAYOFWEEK(date)
返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday)。索引值符合 ODBC 的标准。
mysql> SELECT DAYOFWEEK(’1998-02-03’);
-> 3
WEEKDAY(date)
返回 date 的星期索引(0 = Monday, 1 = T ......