一边学,一边记。为了以后不忘记。不定时更新!
1. 查看表结构
desc xx 和show create table xxx
我们在用命令行的形式对数据表进行操作的时候,肯定会用到查看表结构,特别是新建一个表之后。比如我们新建一个表emp。
mysql> create table emp(ename varchar(10),hiredate date,sal decimal(10,2),depno int(2));
那么一般我们都会使用desc emp 的这种方式查看,这种方式得到的是一个以表格的形式呈现出这个表的结构。
mysql> desc emp; +----------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------+------+-----+---------+-------+ | ename | varchar(10) | YES | | NULL | | | hiredate | date | YES | | NULL | | | sal | decimal(10,2)| YES | | NULL | | | depno | int(2) | YES | | NULL | | +----------+---------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)其实,我们也可以采用 show create table emp这时方式查看,得到的是SQL语句,那么我们就可以复制SQL语句去很方便的新建相同结构的表了。
mysql> show create table emp; +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------------+ | Table | Create Table | +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------------+ | emp | CREATE TABLE `emp` ( `ename` varchar(10) DEFAULT NULL, `hiredate` date DEFAULT NULL, `sal` decimal(10,2) DEFAULT NULL, `depno` int(2) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+----------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------------+ 1 row in set (0.00 sec)
2. ORDER BY 排序
我们在想按照某一个字段进行排序的时候,就会用到order by xx,那么如果要用到两个order by ,那么它的排序结果是怎么样的呢?
我们先看一个order by的情况:按照depto的从小到大的顺序排。
SELECT * FROM emp ORDER BY deptno;
SELECT * FROM emp ORDER BY deptno,sal DESC
两个order条件,order by 只需要写一个即可,用","分开,加上第二个条件就行。
我们从上图中可以看到,第一个按照depto的从小到大的顺序排,发现第一行和第二行数值是一样的。再按照sal desc从大到小排序。那么第一行和第二行就顺序发生改变,其他行数据不变。
总结:当order by 有多个条件(参数)时候,首先以第一个条件a为主,进行排序。排完序后如果有几行数据中a的值相同,那么再按第二个字段b进行排序。以此类推。
3.MySQL中的数据类型。
1. int 表示整型,默认是11位,当我们定义一个字段a直接用 a int 时,默认这个字段a就是占据11位。如果用 a int(5) ,那么其就占5位。
2.日期类型的区别:
3. 日期类型对应的自动系统默认值(default 对应的数据。显示当前的时间值,很方便)
TIMESTAMP(这个明明是时间戳格式) ----> CURRENT_TIMESTAMP(但是,插入的却是2012-06-12 23:59:59 ???) 正确
DATA ------> CURRENT_DATE 正确
TIME ------->CURRENT_TIME 正确
DATETIME ----->CURRENT_TIMESTAMP (按照道理可以,但是提示出错。) 错误
4. 在一个表中,只能有一个字段可以将 default 设置成CURRENT_TIMESTAMP 这种时间自增长的。不然会报错。
5. char 和 varchar 都是表示较短的字符串类型,区别是varchar(3) 是可变的。而char(3) 是不变的。比如: me 在varchar(3) 只占2个字节位,而me 在char(3) 中却咱3个字节
6.ENUM枚举类型,有点像HTML的radio单选类型。要么选这个,要么选哪个,一次只能选一个的赶脚~(*^__^*) 。
例子:
4.MySQL运算符
1.MySQL中的算术运算符
2.MySQL中的比较运算符
3.MySQL中的逻辑运算符
4.各个运算符的优先级
5.MySQL常用函数
1.常用的字符串处理函数
2.常用的数值处理函数
3.常用的日期时间函数
4.关于date_add()函数的一些具体说明和例子(7.30更新),分隔符可以任意指定,但是下边是标准写法。
SELECT DATE_ADD('2012-07-23',INTERVAL 1 DAY) #天 #2012-07-24 SELECT DATE_ADD('2012-07-23',INTERVAL 1 YEAR)#年 #2013-07-23 SELECT DATE_ADD('2012-07-23',INTERVAL 1 MONTH) #月 #2012-08-23 SELECT DATE_ADD('2012-07-23',INTERVAL 1 HOUR) #日期直接加上月 #2012-07-23 01:00:00 SELECT DATE_ADD('2012-07-23 12:23:34',INTERVAL 1 HOUR) #小时 #2012-07-23 13:23:34 SELECT DATE_ADD('2012-07-23 12:23:34',INTERVAL 1 MINUTE) #分钟 #2012-07-23 12:24:34 SELECT DATE_ADD('2012-07-23 12:23:34',INTERVAL 1 SECOND) #秒 #2012-07-23 12:23:35 SELECT DATE_ADD('2012-07-30',INTERVAL 2 DAY) #2天 #2012-08-01 SELECT DATE_ADD('2012-07-30',INTERVAL 3 YEAR)#3年 # 2015-07-30 SELECT DATE_ADD('2012-07-30',INTERVAL 4 MONTH) #4月 #2012-11-30 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL 12 HOUR) #12小时 # 2012-07-31 00:23:34 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL 59 MINUTE) #59分钟 #2012-07-30 13:22:34 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL 100 SECOND) #100秒 #2012-07-30 12:25:14 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL '1_2' YEAR_MONTH) #年_月 #2013-09-30 12:23:34 任意分隔符(1-2、1:2、1\2..)都可以 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL '3_3' DAY_HOUR) #天_小时 #2012-08-02 15:23:34 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL '3_3:3' DAY_MINUTE) #天_分钟 #2012-08-02 15:26:34 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL '3_4:8:34' DAY_SECOND) #天_秒 #2012-08-02 16:32:08 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL '4:8' HOUR_MINUTE) #小时_分钟#2012-07-30 16:31:34 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL '4:8' HOUR_SECOND) #小时_秒#2012-07-30 12:27:42 这个比较奇怪,居然和下面结果一样 SELECT DATE_ADD('2012-07-30 12:23:34',INTERVAL '4:8' MINUTE_SECOND) #分钟_秒#2012-07-30 12:27:42
5 . 其他常用的函数。