引用http://bbs.51cto.com/thread-36865-1.html
下面是一些学习如何用MySQL解决一些常见问题的例子。
一些例子使用数据库表“shop”,包含某个商人的每篇文章(物品号)的价格。假定每个商人的每篇文章有一个单独的固定价格,那么(物品,商人)是记录的主键。
你能这样创建例子数据库表:
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69),
(3,'D',1.25),(4,'D',19.95);
好了,例子数据是这样的:
SELECT * from shop
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1. ......
引用http://bbs.51cto.com/thread-602842-1.html
记录一些select的技巧: 1、select语句可以用回车分隔
$sql="select * from article where id=1"
和$sql="select * from article
where id=1",都可以得到正确的结果,但有时分开写或许能更明了一点,特别是当sql语句比较长时
2、批量查询数据
可以用in来实现
$sql="select * from article where id in(1,3,5)"
3、使用concat连接查询的结果
$sql="select concat(id,"-",con) as res from article where id=1"
返回"1-article content"
4、使用locate
用法:select locate("hello","hello baby");返回1
不存在返回0
5、使用group by
以前一直没怎么搞明group by 和 order by,其实也满简单的,group by 是把相同的结果编为一组
exam:$sql="select city ,count(*) from customer group by city";
这句话的意思就是从customer表里列出所有不重复的城市,及其数量(有点类似distinct)
group by 经常与AVG(),MIN(),MAX(),SUM(),COUNT()一起使用
6 ......
免编程,3步搞定纯真IP数据导入到MySQL详解
作者: dawoniu.com
前提: 你会用vi。 很明显,本文是在Linux下测试通过的。本文用的是MySQL命令行工具,如果你不会,用phpMyAdmin应该也可以。
第1步: 下载纯真IP数据,解压存成ip.txt。
详解:这一步不用详解了吧。如果你这一步都不会,下面就不用看了。
第2步: 用vi 编辑 ip.txt。
# vi ip.txt
在vi界面下输入如下命令:
:%s/\s\+/;/
一共重复输入3次。
存盘退出:
:wq
详解:ip.txt有4列。分别是起始ip,
结束ip,地区,说明。列之间用不等数量的空格间隔。为了将此文本文件到入到mysql,需要处理掉这些空格。但是只能处理掉前3列的空格,最后一列中的
空格要保留。vi中输入的命令意思是,把每一行第一个和其连续的空格替换成字符';'。
%s代表全局搜索替换。\s代表空格。\+代表尽可能多地匹配前面的字符。;代表替换成';'
第3步: 导入MySQL
创建MySQL表
CREATE
TABLE
`ips`
.
`ip`
(
`ip_start`
VARCHAR
(
16
)
NOT
NULL
,
`ip_end`
VARCHAR
(
16
)
NULL
,
`region`
VARCHAR
(
128
)
NULL
,
`comments`
VARCHAR
(
512
)
NULL ......
1. 解决mysql报too many connections异常
修改MYSQL最大连接数:
vi /etc/my.cnf
[mysqld]
max_connections=1000 #加入这些内容
用mysql>show variables;
会看到max_connections 。
2. 解决mysql高并发下减少报死锁异常
MyISAM和InnoDB存储引擎性能差别并不是很大,针对InnoDB来说,影响性能的主要是
innodb_flush_log_at_trx_commit 这个选项,如果设置为1的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,
应该是跟刷新日志有关系,设置为0效率能够看到明显提升,当然,同样你可以SQL中提交“SET AUTOCOMMIT = 0”来设置达到好的性能。
另外,还通过设置innodb_buffer_pool_size能够提升InnoDB的性能。
innodb_buffer_pool_size:这是InnoDB最重要的设置,对InnoDB性能有决定性的影响。默认的设置只有8M,
所以默认的数据库设置下面InnoDB性能很差。在只有InnoDB存储引擎的数据库服务器上面,可以设置60-80%的内存。
更精确一点,在内存容量允许的情况下面设置比InnoDB tablespaces大10%的内存大小。
innodb_flush_logs_at_trx_commit=2: 该参数设定了事务提交时内存中log信息的处理。
1) =1时,在每 ......
mysql命令集锦[绝对精华]
测试环境:mysql 5.0.45
【注:可以在mysql中通过mysql> SELECT VERSION();来查看数据库版本】
整理:leo
一、连接MYSQL。
格式: mysql -h主机地址 -u用户名 -p用户密码
1、连接到本机上的MYSQL。
首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码.
如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>
2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样;通过端口和IP管理不同端口的多个MySQLmysql>mysql -u root -p -P 3306 -h 127.0.0.1)
3、退出MYSQL命令: exit (回车)
二、修改密码。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、给root加个密码ab12。首先在DOS下进入目录mysql\bin,然后键入以下命令
mysqladmin -u root -password ab12
注:因为开始时root ......
使用软件:MySQLMigrationTool 前提要安装JRE...才会出现下面的界面. 运行软件后,点NEXT进入以下界面: 选择MS SQL SERVER,按提示填写,Connection String为: jdbc:jtds:sqlserver://IP地址:端口(默认1433)/数据库名;user=用户名;password=密码;charset=gb2312;domain=
下一步为MySQL的信息,Connection String为:
jdbc:mysql://IP地址:端口(默认3306)/?user=用户名&password=密码&useServerPrepStmts=false&
characterEncoding=UTF-8
之后一路按提示进行。到此界面选择要忽略的表。
继续NEXT,如图所示进入此界面,此处设定字符编码,非常关键。
如图所示,Migration of type MSSQL Schema处选择Mutilanguage,Migration of type MSSQLTable处选择Data consistency / multilanguage。
接下来一路NEXT即可搞定。
以下是我遇到的问题与解决办法:
提示数据过大,无法导入。修改my.cnf文件的max_allowed_packet = 100M以上。在windows操作系统中,my.cnf有可能显示不出来,需要用编辑器直接输入地址:盘符:\\目录\mysql\bin\my.cnf打开。
“there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON U ......