select简述,时区,date,time数据类型

mysql里的增删改查简述

插入:insert
删除:delete
修改:update
查询:select

select命令

select * from 表名 –》查询某表的所有的列
select * from 表名 where 列x 条件1 –》实现对某些行的查询
select 列1,列2 from 表名 –》查询特定的某些列
select 列1,列2 from 表名 where 列x 条件1 –》实现对某些行在某些列的特定查询

select 列的一些常规语法

算术计算:select 3*8;
列别名:select name as 姓名;
字符串连接:

mysql>select NAME concat (TOWN,' ',STREET,' ',HOUSENO) "player address" from PLAYERS;

这里写图片描述

mysql> set @@session.sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT';
mysql> select NAME,TOWN||STREET||HOUSENO "player address" from PLAYERS;

这里写图片描述

(提示:如果直接执行带管道的命令,是不行的!!如下图:)

这里写图片描述

注意:concat 里面如果有null,则形成的表为空:

这里写图片描述

怎么改善这种情况:
用CONCAT_WS,里面加逗号:
eg:mysql>select id,CONCAT_WS(‘,’,First,last) “Full Name” from t1;
【提示:
concat_ws(‘,’)–》指定逗号作为分隔符;
“full name”–》指定联合显示的列的名字
这里写图片描述

例子2:
这里写图片描述

很明显,用逗号作为分隔符了,并且连接显示的列名为指定的“pLAYER HOME ADDRESS” FROM PLAYERS”了。

使用help去学习和使用select函数

mysql>help contents;--》看help有哪些函数
mysql>help functions;--》看功能函数有哪些

这里写图片描述

eg:
mysql>select user();–》当前实际登录的用户;
mysql>select database();–》当前在使用mysql里的哪个数据库;
这里写图片描述

MySQL的常量及数据类型

  • 常量:整数、小数、浮点数、字符串、日期、布尔(真和假)、16进制、位
mysql>help data types;--》查看所有数据类型
  • 小数:
mysql>create table t3(d1 dec(10,2));--》一共10位,小数最多2位。
  • 浮点数:
mysql>create table t4(f1 FLOAT);--》 10e3
  • 布尔型:

这里写图片描述
或者
这里写图片描述

  • 16进制:

mysql>select 0x62;
这里写图片描述
这里写图片描述

MySQL中date数据类型的输入

日期:
年月日:901101或者19901101
(既:月日必须写!年可以四位可以两位!)
这里写图片描述
这里写图片描述

显示系统的日期:

mysql> select CURDATE();

这里写图片描述

或者 select CURRENT_DATE();

这里写图片描述

显示当前时间 :select CURRENT_TIME();

这里写图片描述

将字符串转换为日期:

select STR_TO_DATE('01,5,2013','%d%m%Y');

这里写图片描述

time 数据类型的输入

mysql> create table t14(t1 time);
mysql>insert into t14 values(191001);

这里写图片描述

(time(3)):在秒后面加三位小数:
这里写图片描述

用str_to_date(’xx:xx:xx’,’%H%i%s’)添加时间:

这里写图片描述

添加年月日时分秒:

mysql>insert into t15 values('1990-10-01''19:01:01');

这里写图片描述

用str_to_date();来添加年月日时分秒:

这里写图片描述

date和time的显示方法

①select * from t15;
②select date_format(d1,’%W,%M,%d,%Y,%T’) from t15;

这里写图片描述

(补:%W:星期几 %M:月份 %d:日子 %Y:年 %T:时间)

操作系统时区的概念

操作系统的时区:

cat /etc/sysconfig/clock
cat /usr/share/zoneinfo/Asia/Shanghai

MySQL时区

(mysql装完后有)系统时区:

show variables like ‘system%’;

这里写图片描述

( CST就是东八区 )
(覆盖最广的) 全局时区:

select @@global.time_zone;

这里写图片描述

会话时区:

select @@session.time_zone;

修改time_zone: (time_zone能够反映mysql服务器的位置)
设置时区(time_zone):

  • set @@global.time_zone='+8:00';
  • set @@global.time_zone='Asia/shagnhai';
  • 在/etc/my.cnf 里加上:default_time_zone=Asia/Shanghai

这里写图片描述
(修改后要重启mysql)
加载时区:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p7777777 mysql; (把操作系统的时区传递到mysql)

select * from mysql.time_zone_name;
set time_zone='Asia/Shanghai';

MySQL 时区正确使用规则

(mysql存进去的时候,在里面是以零时区存着的,取出的时候再转换成对应的时区)
数据表里面的列(为timestamp类型)
会话进来

MySQL 时区例子实践

在终端1里:
设置为东八区,建立一个表t16,插入时间为19:00:

mysql>create table t16(t1 timestamp);

这里写图片描述

然后在终端2里:
设置会话的时区为东时区,再次查看表t16,会发现时间多了2小时:

这里写图片描述

原文地址:https://www.cnblogs.com/lpeng94/p/12546489.html