mysql常用命令与当前时间字段默认值的设置方法

发布时间:2020-08-07编辑:脚本学堂
本文介绍下,在mysql中常用的一些命令,以及设置当前时间字段默认值的方法。有需要的朋友,参考下吧。

mysql中,建立时间字段且设置其默认值为当前执行时间的方法:
建立字段类型为timestamp,并设置默认值为CURRENT_TIMESTAMP。

还有一个方法,设置字段为timestamp或varchar,在执行插入语句时带入的值为 Now(),这个函数产生的时间格式为:2010-01-15 11:28:50。
如果字段类型为DATE,只能存储精确到日期,格式也就是2010-01-15。

有时只需要精确到日期,那么自动就可以选择为DATE,插入值可以写 CURRENT_DATE 就可以了。
为了更直观的了解NOW()和CURRENT_DATE可在shell中执行 Select NOW() ; 和 Select CURRENT_DATE;查看执行结果。
   
MySQl默认时区设置为UTC,默认时间与北京时间差8小时,在mysql文件夹,bin文件夹中的my.ini文件中找到:
default-time-zone = "UTC"
修改为:
default-time-zone = "PRC"
就行了。
 
mysql远程连接的方法:
 

复制代码 代码示例:
shell>mysql -h host -u user -p Enter password:************
 

host和user分别代表MySQL服务器运行的主机名和MySQL帐户名。
登录时,需要填写对应的机器的名称和MySQL用户名。
*********代表登录密码,如果MYSQL运行在服务器上,而你在客户端需要连接的化,需要按如下方式进行连接:
 

复制代码 代码示例:
shell>mysql -h host -u user -p
Enter password:************
 

host和user分别代表MySQL服务器运行的主机名和MySQL帐户名.添写时写上对应的机器的名称和MySQL用户名. *********代表你的密码.

登录提示:
 

复制代码 代码示例:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7 to server version: 5.0.18-nt
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
mysql>提示符告诉你该输入命令了.
有时MySQL会允许匿名登陆到服务器上,此时直接输入mysql即可:
shell> mysql

可在mysql>提示下输入quit随时退出:
 

复制代码 代码示例:
mysql> quit
Bye

一个简单的查询实例,要求得到服务器的版本号和当前日期:
 

复制代码 代码示例:
mysql> select version(), current_date;
+-----------+--------------+
version() current_date
+-----------+--------------+
5.0.18-nt 2006-07-29
+-----------+--------------+
1 row in set (0.00 sec)
mysql>

说明:
一个命令通常由sql语句组成,随后跟着一个分号.
MySQL的显示结果用表格(行和列)方式输出。
第一行为列的标签,随后行为查询的结果。
通常列标签是你查询的数据库表的列名,但若检索的是一表达式而非列值(如上一个例子),通常用表达式本身来标记列。
随后它会显示返回了多少行以及查询时间,它提供了服务器性能的一个大致估计。它表示的是时钟时间并非CPU或机器时间。
能够以大小写输入关键字,即在MySQL中大小写是等价的,但在一个查询语句中,要求大小写统一。
以下是另一个查询:
 

复制代码 代码示例:
mysql> Select SIN(PI()/4), (4+1)*5;
+------------------+---------+
SIN(PI()/4) (4+1)*5
+------------------+---------+
0.70710678118655 25
+------------------+---------+
1 row in set (0.02 sec)
mysql>
 

可以在一行上输入多条语句,如:
 

复制代码 代码示例:
mysql> Select VERSION(); Select NOW();
+-----------------+
VERSION()
+-----------------+
5.1.2-alpha-log
+-----------------+
1 row in set (0.00 sec)
+---------------------+
NOW()
+---------------------+
2005-10-11 15:15:00
+---------------------+
1 row in set (0.00 sec)
mysql>
 

较长的命令可以分多行输入。
MySQL是通过分号来判断语句是否结束,而不是换行。
一个简单的多行语句的例子:
 

复制代码 代码示例:
mysql> select
-> user(),
-> current_date;
+---------------+--------------+
USER() CURRENT_DATE
+---------------+--------------+
jon@localhost 2005-10-11
+---------------+--------------+
mysql>
 

在这个例子中,输入多行查询的第一行后,可以看提示符变为 ->,即MySQL没有找到语句结束标识正在等待剩余的输入部分。
如果不想执行正在输入过程的一个命令,输入c 取消它:
 

复制代码 代码示例:
mysql> select
-> user()
-> c
mysql>

Mysql各个提示符及所表示的MySQL状态:
 

提示符 含义
mysql> 准备好接受新命令。
-> 等待多行命令的下一行。
'> 等待下一行,等待以单引号(“'”)开始的字符串的结束。
"> 等待下一行,等待以双引号(“"”)开始的字符串的结束。
`> 等待下一行,等待以反斜点(‘`’)开始的识别符的结束。
/*> 等待下一行,等待以/*开始的注释的结束。

在MySQL中使用Rand()抽取随即数据

不能在一个ORDER BY子句用RAND()值使用列,因为ORDER BY将重复计算列多次。
然而在MySQL3.23中,可以做: Select * FROM table_name orDER BY RAND(),这是有利于得到一个来自Select * FROM table1,table2 Where a=b AND c 实现随机。
mysql手册中的写法:
 

复制代码 代码示例:
Select * FROM table_name orDER BY rand() LIMIT 5;

rand在mysql手册中这样介绍:
RAND()
RAND(N)
返回在范围0到1.0内的随机浮点值。
如果一个整数参数N被指定,它被用作种子值。
 

复制代码 代码示例:
mysql> select RAND();
-> 0.5925
mysql> select RAND(20);
-> 0.1811
mysql> select RAND(20);
-> 0.1811
mysql> select RAND();
-> 0.2079
mysql> select RAND();
-> 0.7888
 

不能在一个ORDER BY子句用RAND()值使用列,因为ORDER BY将重复计算列多次。
然而在MySQL3.23中,可以这样操作:Select * FROM table_name orDER BY RAND(),这是有利于得到一个来自Select * FROM table1,table2 Where a=b AND c
注意:
在一个Where子句里的一个RAND()将在每次Where被执行时重新评估。
但试了一下,8千条记录的表,执行一次需要0.08 sec,慢了些。
改进后的代码:
 

复制代码 代码示例:
Select * FROM table_name AS r1 JOIN (Select ROUND(RAND() * (Select MAX(id) FROM table_name)) AS id) AS r2 Where r1.id >= r2.id orDER BY r1.id ASC LIMIT
5;
 

执行效率需要0.02 sec。
注意:只有mysql 4.1.*以上才支持这样的子查询。