执行sql如下:
1 2 3 4 5 6 |
CREATE TABLE `qcloud_sms_template` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `ctime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(`id`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
执行结果:
1 2 |
ERROR 1067 (42000): Invalid default value for 'ctime' |
这段sql在本机测试没问题,放到开发环境下就报错了。 很奇怪,搜索一番后,发现DATETIME类型只支持mysql 5.6.5+. 解决方法:
1 2 |
将DATETIME改为TIMESTAMP。 |
参考资料: http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column/10603198 from:https://www.liudon.org/1288.html
View DetailsIn this article, we will outline the process of installing PHP 7.x MariaDB 10.1, the latest stable release of the MariaDB 10.x series at the time of writing this article, on CentOS 7. Prerequisites: An up-to-date CentOS 7 Server. A sudo user. Step 1: Create the MariaDB 10.1 YUM repo file
1 2 3 4 5 6 7 8 9 |
cat <<EOF | sudo tee -a /etc/yum.repos.d/MariaDB.repo # MariaDB 10.1 CentOS repository list # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 EOF |
Note: The code for setting up newer releases of MariaDB 10.x may wary in the future. You should always check out the official MariaDB website to confirm the code to be used. Step 2: Install MariaDB 10.1 using YUM
1 2 |
sudo yum install MariaDB-server MariaDB-client -y |
[…]
View Detailscentos7默认自带的是mariadb5.5,mariadb 最新版有一个比较重要的功能 select partition ,所以必须升级。 升级教程: https://www.vultr.com/docs/how-to-install-mariadb-10-1-on-centos-7 修改一下:
1 2 3 4 5 6 7 8 9 |
cat <<EOF | sudo tee -a /etc/yum.repos.d/MariaDB.repo # MariaDB 10.1 CentOS repository list # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.1.25/yum/rhel7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=0 EOF |
(那个验证的被墙了。如果服务器是国外的不需要修改,直接用第一个连接上的) 官方说明: https://mariadb.com/kb/en/mariadb/upgrading-from-mariadb-55-to-mariadb-100/ 话说升级不是很人性化,必须卸载重新安装。(by coconets@163.com ) from:http://blog.csdn.net/default7/article/details/74795766
View Details一、系统环境 yum update升级以后的系统版本为
1 2 |
[root@yl-web yl]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) |
二、mysql安装 一般网上给出的资料都是
1 2 3 |
#yum install mysql #yum install mysql-server #yum install mysql-devel |
安装mysql和mysql-devel都成功,但是安装mysql-server失败,如下:
1 2 3 4 5 6 7 8 |
[root@yl-web yl]# yum install mysql-server Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.sina.cn * extras: mirrors.sina.cn * updates: mirrors.sina.cn No package mysql-server available. Error: Nothing to do |
查资料发现是CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了。 有两种解决办法: 1、方法一:安装mariadb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 安装mariadb,大小59 M。
1 |
[root@yl-web yl]# yum install mariadb-server mariadb |
mariadb数据库的相关命令是: systemctl start mariadb #启动MariaDB systemctl stop mariadb #停止MariaDB systemctl restart mariadb #重启MariaDB systemctl enable mariadb #设置开机启动 所以先启动数据库
1 |
[root@yl-web yl]# systemctl start mariadb |
然后就可以正常使用mysql了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[root@yl-web yl]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.41-MariaDB MariaDB Server Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]> |
安装mariadb后显示的也是 MariaDB [(none)]> ,可能看起来有点不习惯。下面是第二种方法。 2、方法二:官网下载安装mysql-server
1 2 3 |
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm # rpm -ivh mysql-community-release-el7-5.noarch.rpm # yum install mysql-community-server |
安装成功后重启mysql服务。
1 |
# service mysqld restart |
初次安装mysql,root账户没有密码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@yl-web yl]# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.26 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.01 sec) mysql> |
设置密码
1 2 3 4 |
mysql> set password for 'root'@'localhost' =password('password'); Query OK, 0 rows affected (0.00 sec) mysql> |
不需要重启数据库即可生效。 在mysql安装过程中如下内容:
1 2 3 4 5 6 7 8 9 10 |
Installed: mysql-community-client.x86_64 0:5.6.26-2.el7 mysql-community-devel.x86_64 0:5.6.26-2.el7 mysql-community-libs.x86_64 0:5.6.26-2.el7 mysql-community-server.x86_64 0:5.6.26-2.el7 Dependency Installed: mysql-community-common.x86_64 0:5.6.26-2.el7 Replaced: mariadb.x86_64 1:5.5.41-2.el7_0 mariadb-devel.x86_64 1:5.5.41-2.el7_0 mariadb-libs.x86_64 1:5.5.41-2.el7_0 mariadb-server.x86_64 1:5.5.41-2.el7_0 |
所以安装完以后mariadb自动就被替换了,将不再生效。
1 2 |
[root@yl-web yl]# rpm -qa |grep mariadb [root@yl-web yl]# |
三、配置mysql 1、编码 mysql配置文件为/etc/my.cnf 最后加上编码配置
1 2 |
[mysql] default-character-set =utf8 |
这里的字符编码必须和/usr/share/mysql/charsets/Index.xml中一致。 2、远程连接设置 把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。
1 |
mysql> grant all privileges on *.* to root@'%'identified by 'password'; |
如果是新用户而不是root,则要先新建用户
1 |
mysql>create user 'username'@'%' identified by 'password'; |
此时就可以进行远程连接了。 from:https://www.cnblogs.com/starof/p/4680083.html
View DetailsXtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
View Details1、UNIX时间戳转换为日期用函数: FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 输出:2006-08-22 12:11:10 2、日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() Select UNIX_TIMESTAMP('2006-11-04 12:23:00'); 例:mysql查询当天的记录数: $sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),’%Y-%m-%d’) = DATE_FORMAT(NOW(),’%Y-%m-%d’) order by id desc”; PHP方式转换: UNIX时间戳转换为日期用函数: date() date('Y-m-d H:i:s', 1156219870); 日期转换为UNIX时间戳用函数:strtotime() strtotime('2010-03-24 08:15:42'); from:http://blog.csdn.net/u013372487/article/details/48131589
View Details
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
创建数据库: CREATE DATABASE --DATABASE 或者 SCHEMA数据库集合 IF NOT EXISTS db_name CHARACTER SET utf8 COLLATE utf8_general_ci 删除数据库 : DROP DATABASE db_name; 创建数据表: CREATE TABLE IF NOTEXISTS tb_name( id int(5) UNSIGNED --无符号 ZEROFILL --填满0 NOT NULL --不允许为空 AUTO_INCREMENT --主键自动增长 COMMENT '注释', PRIMARY KEY (field1, field2), --定义主键 INDEX key_name USING BTREE (field3)--定义索引 --UNIQUE INDEX | FULLTEXT INDEX 唯一 与 全文 --BTREE | HASH 索引方式 --定义外键 CONSTRAINT key_name FOREIGN KEY (field1) REFERENCES db.tb(field2) ON DELETE SET NULL --删除时的事件 ON UPDATE RESTRICT --更新时的事件 )ENGINE=MyISAM --引擎 DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci --字符编码 与 校对编码 COMMENT='表注释' AUTO_INCREMENT=5 --默认自动增长量为1 CHECKSUM=1 --每行维持一个校验和,会使表更新变得更慢,但它更容易找出损坏的表 ROW_FORMAT=DEFAULT --行格式 AVG_ROW_LENGTH=77 --表的平均行长度近似值,你只需为有变长记录的表设置。 MAX_ROWS=9 --表中存储的最大行数9 MIN_ROWS=3 -- 表中存储的最小行数3 PACK_KEYS=1 --封装键 DELAY_KEY_WRITE=1 --推迟关键表的更新直到表被关闭 DATA DIRECTORY='' --数据目录 INDEX DIRECTORY='' --索引目录 ; 清空数据表两种方法: TRUNCATE TABLE db.tb; DELETE FROM db.tb; 删除数据表: DROP db.tb; 另外,还可以这样新建表: CREATE TABLE IF NOTEXISTS tb_new(SELECT * FROM db.table1); --复制另一张表的内容,填充到新表,若新表重名,则省略创建过程,直接插入数据。 CREATE TABLE IF NOTEXISTS tb_new(LIKE db.table1); --复制另一表的结构。 修改表结构: ALTER TABLE db.table1 ADD COLUMN new_field int(5) NOT NULL AFTER field2; --添加字段 ALTER TABLE db.table1 CHANGE COLUMN field_name new_field_name varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `id`; --修改字段 ALTER TABLE db.table1 DROP COLUMN field1; --删除字段 ALTER TABLE db.table1 ADD UNIQUE INDEX index_name USING BTREE (field1); --添加索引 ALTER TABLE db.table1 DROP PRIMARY KEY, --删除主键 ADD PRIMARY KEY (id); --修改主键 ALTER TABLE db.table1 DROP INDEX index_name, --删除索引 ADD FULLTEXT INDEX index_name USING BTREE (field1); --添加索引 插入语句: INSERT INTO table1 VALUES (value1, value2, valueAll); INSERT INTO table1(field1, field2) VALUES (value1, value2); 更新语句: UPDATE table1 SET field1='value1', field2='value2' WHERE field3='value3'; 删除语句: DELETE FROM table1 WHERE field1='value1'; SELECT 语句: SELECT DISTINCT field1, field2 FROM table1; DISTINCT --值不重复 SELECT * FROM table1 WHERE field1='value'; =、<>、>、<、>=、<= --这些个,不解释 BETWEEN 'A' AND 'C' --限定范围,即:徘徊于牛A与牛C之间。 IN('value1','value2','value3') --限定值 LIKE '%abc%' --模糊查询 % --替代n个字符 _ --替代一个字符 [abcd] --限定为字符列表中的任一的字符 [^abcd] 或 [!abcd] --限定为排除字符列表中的任一的字符 SELECT * FROM table1 WHERE (field1='value1' OR field2='value2') AND field3='[abc]%'; SELECT * FROM table1 ORDER BY field1 DESC, field2 ASC; --若两个字段排序规则相同:ORDER BY filed1, filed2 DESC SELECT * FROM table1 LIMIT start, length; --查询指定的记录 SELECT TOP 10 PERCENT * FROM table1; --这是标准的SQL语句,查得前百分之十的记录,不加 PERCENT 则是前10条 SELECT t1.field1, t2.field2 FROM table1 AS t1, table2 AS t2 WHERE t1.field2=t2.field3; --表取别名 SELECT field1 AS f1 FROM table1; --字段取别名 SELECT * FROM table1 AS t1 FULL JOIN table2 AS t2; --无条件完全组合在一起 SELECT * FROM table1 AS t1 INNER JOIN table2 AS t2 ON t1.field1=t2.field1; --内连接,查询满足条件的记录(也可直接写JOIN)。 SELECT * FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.field1=t2.field1; --查询的表排列的顺序是从左到右,这是左连接,故以左边的表为主表,即:返回所有满足条件的记录,而主表中不满足条件的记录同样返回。 SELECT * FROM table1 AS t1 RIGHT JOIN table2 AS t2 ON t1.field1=t2.field1; --同理于上,反之而行 SELECT field1, field2 FROM table1 UNION SELECT field1, field2 FROM table2; --联合两张表的查询结果,要求查询字段必然数量相等 SELECT field1, field2 FROM table1 UNION ALL SELECT field1, field2 FROM table2; --上面不显示重复值,加上 ALL 表示全部 SELECT field1, field2 INTO table2 FROM table1 WHERE table1.field3='value'; --拷贝表的效果 SELECT * INTO table2 IN 'Backup.mdb' FROM table1; --向另一个数据库中拷贝表 SELECT field1, SUM(field2) FROM table1 GROUP BY field3; --用于结合合计函数,根据一个或多个列对结果集进行分组。 SELECT filed1,SUM(field2) FROM table1 HAVING SUM(OrderPrice)<2000; --WHERE无法与合计函数一起使用 ,HAVING 应运而生。 |
from:http://www.cnblogs.com/zbseoag/archive/2013/03/18/2966568.html
View Details1、整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字节 范围(-8388608~8388607) int(m) 4个字节 范围(-2147483648~2147483647) bigint(m) 8个字节 范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。 2、浮点型(float和double) MySQL数据类型 含义 float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位 double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位 设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。 3、定点数 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。 4、字符串(char,varchar,_text) MySQL数据类型 含义 char(n) 固定长度,最多255个字符 varchar(n) 固定长度,最多65535个字符 tinytext 可变长度,最多255个字符 text 可变长度,最多65535个字符 mediumtext 可变长度,最多2的24次方-1个字符 longtext 可变长度,最多2的32次方-1个字符 char和varchar: 1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。 2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。 3.char类型的字符串检索速度要比varchar类型的快。 varchar和text: 1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。 2.text类型不能有默认值。 3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。 5.二进制数据(_Blob) 1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。 2._BLOB存储的数据只能整体读出。 3._TEXT可以指定字符集,_BLO不用指定字符集。 6.日期时间类型 MySQL数据类型 含义 date 日期 '2008-12-2' time 时间 ’12:25:36′ datetime 日期时间 '2008-12-2 22:06:44' timestamp 自动存储记录修改时间 若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。 数据类型的属性 MySQL关键字 […]
View Details对MYSQL没有进行过深入的研究,基础知识匮乏,一遇到问题只能手册,看来要把MYSQL的学习安排进时间表了。 函数:FROM_UNIXTIME 作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。 语法:FROM_UNIXTIME(unix_timestamp,format) 返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。 根据format字符串格式化date值。 下列修饰符可以被用在format字符串中: %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) %Y 年, 数字, 4 位 %y 年, 数字, 2 位 %a 缩写的星期名字(Sun……Sat) %d 月份中的天数, 数字(00……31) %e 月份中的天数, 数字(0……31) %m 月, 数字(01……12) %c 月, 数字(1……12) %b 缩写的月份名字(Jan……Dec) %j 一年中的天数(001……366) %H 小时(00……23) %k 小时(0……23) %h 小时(01……12) %I 小时(01……12) %l 小时(1……12) %i 分钟, 数字(00……59) %r 时间,12 小时(hh:mm:ss [AP]M) %T 时间,24 小时(hh:mm:ss) %S 秒(00……59) %s 秒(00……59) %p AM或PM %w 一个星期中的天数(0=Sunday ……6=Saturday ) %U 星期(0……52), 这里星期天是星期的第一天 %u 星期(0……52), 这里星期一是星期的第一天 %% 一个文字“%”。 例子:
1 |
SELECT FROM_UNIXTIME(1234567890, '%Y-%m-%d %H:%i:%S') |
[…]
View Details