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。

mysql存放表的系统表_mysql存放表的系统表

图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.成绩