浏览模式: 普通 | 列表
分类: Mysql | < | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | >

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:
...

阅读全文…

查看LINUX系统信息

[ 2012-12-28 19:51:32 | 作者: admin ]
uname -a # 查看内核/操作系统/CPU信息

        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
...

阅读全文…

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()函数返回的相同值。
...

阅读全文…

MySQL提示Column 'content' specified twice

[ 2012-11-29 08:44:59 | 作者: admin ]
翻译:

列“content”被使用了两次。

原因:

mysql类中有个方法insert,用于自动把POST的数据插入DB,并且只插入有值的列,所以需要从DB中把表的字段列表出来,使用的SQL为:

SELECT
       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
...

阅读全文…

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 .....
...

阅读全文…

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
...

阅读全文…

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
               [mysqld]
               #master
               log-bin=mysql-bin //[必须]启用二进制日志
               server-id=100 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
...

阅读全文…