MySQL 修改表字段优化方案
[ 2012-12-28 19:51:52 | 作者: admin ]
要求:现在需要要改一下字段名,增加一个字段,在删除另一个字段,改一个字段类型.
建立如下表(原表):
CREATE TABLE month(
id INT,
week VARCHAR(10),
day VARCHAR(10),
hour VARCHAR(10),
PRIMARY KEY (id)
);
得到的最终表为:
CREATE TABLE month(
id INT ,
week VARCHAR(10),
today VARCHAR(20), -- 把day VARCHAR(10)改为 today VARCHAR(20)
minute VARCHAR(20), -- 增加新的字段 minute VARCHAR(20),删除字段hour VARCHAR(10)
PRIMARY KEY (id)
);
方案1:
...
阅读全文…
建立如下表(原表):
CREATE TABLE month(
id INT,
week VARCHAR(10),
day VARCHAR(10),
hour VARCHAR(10),
PRIMARY KEY (id)
);
得到的最终表为:
CREATE TABLE month(
id INT ,
week VARCHAR(10),
today VARCHAR(20), -- 把day VARCHAR(10)改为 today VARCHAR(20)
minute VARCHAR(20), -- 增加新的字段 minute VARCHAR(20),删除字段hour VARCHAR(10)
PRIMARY KEY (id)
);
方案1:
...
阅读全文…
查看LINUX系统信息
[ 2012-12-28 19:51:32 | 作者: admin ]
uname -a # 查看内核/操作系统/CPU信息
head -n 1 /etc/issue # 查看操作系统版本
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名
lspci -tv # 列出所有PCI设备
...
阅读全文…
head -n 1 /etc/issue # 查看操作系统版本
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名
lspci -tv # 列出所有PCI设备
...
阅读全文…
数据库高并发的经验分享
[ 2012-12-19 13:56:38 | 作者: admin ]
主要是针对数据量很大,和并发访问量高的时候
经验一:
在开发过程中,我们经常会写
SELECT * FROM table WHERE 1 ORDER BY xxx DESC LIMIT 0,10
这样的语句用来分页
在有完美索引的情况 对xxx建立索引
前面几页会很快,但如果数据量达到100万级以后,我们查询最后一页
SELECT * FROM table WHERE 1 ORDER BY xxx DESC LIMIT 999990,10
这句执行就会很慢,同时有多人访问服务器就会掉(这里不考虑缓存,因为内容更新太快,有时候缓存了达不到数据的更新的要求)
但如果我们把
SELECT * FROM table WHERE 1 ORDER BY xxx DESC LIMIT 999990,10
换成
SELECT * FROM table WHERE 1 ORDER BY xxx ASC LIMIT 0,10
...
阅读全文…
经验一:
在开发过程中,我们经常会写
SELECT * FROM table WHERE 1 ORDER BY xxx DESC LIMIT 0,10
这样的语句用来分页
在有完美索引的情况 对xxx建立索引
前面几页会很快,但如果数据量达到100万级以后,我们查询最后一页
SELECT * FROM table WHERE 1 ORDER BY xxx DESC LIMIT 999990,10
这句执行就会很慢,同时有多人访问服务器就会掉(这里不考虑缓存,因为内容更新太快,有时候缓存了达不到数据的更新的要求)
但如果我们把
SELECT * FROM table WHERE 1 ORDER BY xxx DESC LIMIT 999990,10
换成
SELECT * FROM table WHERE 1 ORDER BY xxx ASC LIMIT 0,10
...
阅读全文…
mysql的字符串函数
[ 2012-12-17 14:55:08 | 作者: admin ]
对于针对字符串位置的操作,第一个位置被标记为1。
1.ASCII(str)
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
mysql> select ASCII('2');
-> 50
mysql> select ASCII(2);
-> 50
mysql> select ASCII('dx');
-> 100
也可参见ORD()函数。
2.ORD(str)
如果字符串str最左面字符是一个多字节字符,通过以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与ASCII()函数返回的相同值。
...
阅读全文…
1.ASCII(str)
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
mysql> select ASCII('2');
-> 50
mysql> select ASCII(2);
-> 50
mysql> select ASCII('dx');
-> 100
也可参见ORD()函数。
2.ORD(str)
如果字符串str最左面字符是一个多字节字符,通过以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与ASCII()函数返回的相同值。
...
阅读全文…
MySQL提示Column 'content' specified twice
[ 2012-11-29 08:44:59 | 作者: admin ]
翻译:
列“content”被使用了两次。
原因:
mysql类中有个方法insert,用于自动把POST的数据插入DB,并且只插入有值的列,所以需要从DB中把表的字段列表出来,使用的SQL为:
大家可能看到了,只指定了表名,却没有指定数据库,也就是说如果再有一个相同的DB的话,字段就是双份的了,问题也就在这里。昨天项目到了一个分水岭的位置就把DB这样给“备份”了一下,于是今天就出现了这个情况。SQL修正后为:
阅读全文…
列“content”被使用了两次。
原因:
mysql类中有个方法insert,用于自动把POST的数据插入DB,并且只插入有值的列,所以需要从DB中把表的字段列表出来,使用的SQL为:
SELECT
COLUMN_NAME AS col
FROM
`COLUMNS`
WHERE TABLE_NAME = '$table'
AND COLUMN_NAME <> 'id'
COLUMN_NAME AS col
FROM
`COLUMNS`
WHERE TABLE_NAME = '$table'
AND COLUMN_NAME <> 'id'
大家可能看到了,只指定了表名,却没有指定数据库,也就是说如果再有一个相同的DB的话,字段就是双份的了,问题也就在这里。昨天项目到了一个分水岭的位置就把DB这样给“备份”了一下,于是今天就出现了这个情况。SQL修正后为:
SELECT
COLUMN_NAME AS col
FROM
`COLUMNS`
WHERE 1
...COLUMN_NAME AS col
FROM
`COLUMNS`
WHERE 1
阅读全文…
CentOS 安装Mysql
[ 2012-11-18 16:59:46 | 作者: admin ]
安装
我们利用liunx yum来安装mysql,yum -y install mysql mysql-server;相应的卸载命令是 yum -y remov xxxx
设置账号
安全完成后,我们利用mysqladmin -u root password ‘123456’ 命令进入mysql,报了error 1045错误,访问被拒绝
解决办法是重新设置root用户密码,在Windows平台下操作步骤如下:
1. 杀掉所以mysql的进程
killall mysqld
2. 查看mysql状态
/etc/rc.d/init.d/mysqld status
3.安全模式下面进入mysql
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
屏幕出现: Starting demo from .....
...
阅读全文…
我们利用liunx yum来安装mysql,yum -y install mysql mysql-server;相应的卸载命令是 yum -y remov xxxx
设置账号
安全完成后,我们利用mysqladmin -u root password ‘123456’ 命令进入mysql,报了error 1045错误,访问被拒绝
解决办法是重新设置root用户密码,在Windows平台下操作步骤如下:
1. 杀掉所以mysql的进程
killall mysqld
2. 查看mysql状态
/etc/rc.d/init.d/mysqld status
3.安全模式下面进入mysql
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
屏幕出现: Starting demo from .....
...
阅读全文…
Mysql创建、删除用户
[ 2012-11-14 14:23:04 | 作者: admin ]
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束):
1.新建用户
登录MYSQL:
@>mysql -u root -p
@>密码
创建用户:
mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
这样就创建了一个名为:test 密码为:1234 的用户。
注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
然后登录一下:
mysql>exit;
@>mysql -u test -p
...
阅读全文…
1.新建用户
登录MYSQL:
@>mysql -u root -p
@>密码
创建用户:
mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
这样就创建了一个名为:test 密码为:1234 的用户。
注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
然后登录一下:
mysql>exit;
@>mysql -u test -p
...
阅读全文…
mysql5.6.13 主从复制(超简单)
[ 2012-11-12 08:51:19 | 作者: admin ]
p.s.主服务器192.168.1.100,从服务器192.168.1.120,change master命令的时候必须指定端口。
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:
1、主从服务器分别作以下操作:
1.1、版本一致 mysql5.6.13
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
2、修改主服务器master:
#vi /etc/my.cnf
阅读全文…
怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:
1、主从服务器分别作以下操作:
1.1、版本一致 mysql5.6.13
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
2、修改主服务器master:
#vi /etc/my.cnf
[mysqld]
#master
log-bin=mysql-bin //[必须]启用二进制日志
server-id=100 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
...#master
log-bin=mysql-bin //[必须]启用二进制日志
server-id=100 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
阅读全文…