1.时间
MySql中的时间类型有多种。如 timestamp、date、datetime等。
datetime为 2015-01-02 3:00:00这种格式,用得比较多。插入语句中对应位置写成
“2015-01-02 3:00:00”这种格式的字符串就可以了。
timestamp属性的列的显示格式与datetime列相同,为YYYY-MM-DD HH:MM:SS。它比datetime要求严格,只能介于[1970,2037]。jdbc操作语句见下:
preparedStatement.setTimestamp(3,new java.sql.Timestamp(new java.util.Date().getTime()));
也可以让数据库服务端自动处理,见图1。
图1-1 mysql的navicate客户端,给timestamp设置默认值
“默认”这一栏的意思是添加一条新数据时的取值。CURRENT_TIMESTAMP在下拉列表中是没有的,要自己填。
“根据当前时间戳更新”选择框的意思是,更新本条数据时更新时间戳为当前时间。注意数据的插入语更新是独立的。
2.字符串
mysql用于存储字符串的类型有多种,注意它们单位都是字节,具体字符数取决于编码方式。
varchar(n):表示长度可变,最大长度为n字节。n最大为65535。
text:2^16=65536个字节。
3.布尔型
bit,0表示false,1表示true。
数字类型
decimal (a,b)
a 表示整数位及小数位的精度; b 表示小数位的精度.
DECIMAL (5,2)规定了存储的值将不会超过5位数字,开且小数点后面有2位数字。
4.分页
limit begin,length; //获取
(begin,begin+length]列的内容。
5. 常用函数
5.1 字符串
SUBSTR(str,pos,len) //字串截取
SUBSTR(str,pos) //字串截取
char_length(str):
//字符串的字符长度. 这个比length(str) 常用
length(str):
//字符串所占的字节长度, 较少用.
5.2类型转换
CAST(expr AS type) //类型转换,如将string转换为数字。
5.3 集合
find_in_set(element,set)
set内容格式为'element1,element2,...,elementn'
在set中找出element的位置,从1开始。若不存在返回0.
/*把某列数据当集合用,比如一名学生领用了若干本课本,bookids='1,2,3,4,5'。
找出领用了《微积分》(id=3)的学生,用下行*/
SELECT * FROM test.Student where find_in_set('3',bookids) > 0 ;
6.存储过程
6.1 创建
/*non-parameter*/
CREATE PROCEDURE sp_fun ()
BEGIN
SELECT * FROM `studentTable`;
END
/*with-parameter*/
CREATE PROCEDURE sp_fun3 ( name0 varchar(255), class0 tinyint(4))
BEGIN
insert INTO `studentTable` (name,class) values (name0,class0);
END
6.2 调用
对应上面的两个存储过程:
CALL sp_fun3('xiaohei',3);
CALL sp_fun();
6.3修改与删除
/*delete procedure*/
drop PROCEDURE sp_fun;
7.行号
用@var 变量自增的思想,一个例子见下:
SELECT
t1.总分,
t1.考生号,
(@rowNum :=@rowNum + 1) AS 名次
FROM
`gaoKaoScoreTable` AS t1,
(SELECT(@rowNum := 0)) AS t2
ORDER BY
t1.`裸分加照顾分` DESC
8. update join set句型
在mysql中,用一个表的字段填充另一个表。
UPDATE t1
INNER JOIN t2 ON t1.考生号 = t2.考生号
SET t1.成绩 = t2.成绩