 |
网友:
windlike | 时间:2006-07-19 13:31:27 IP地址:59.148.197.★ |
|
|
|
MySQL允许你自动获得SQL命令重新建立一个特定的表格。只简单地运行SHOW CREATE TABLE命令,并查看表格建立代码,如下所示:
mysql> SHOW CREATE TABLE products;
-----------------------------------------------------
| Table| Create Table
+----------+-----------------------------------------
| products | CREATE TABLE `products` (
`id` int(8) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`price` int(10) default NULL,
PRIMARY KEY(`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+----------+-----------------------------------------
1 row in set (0.27 sec)
|
|
|
 |
网友:
windlike | 时间:2006-07-19 13:41:56 IP地址:59.148.197.★ |
|
|
|
在缺省情况下,MySQL命令行客户程序显示一个简单的mysql>提示符。然而,你可以使用特定的修改内容来改变这一提示符使之变得更为有效,这些内容包括:当前用户名称,主机名称,以及当前选择的数据库。如下所示:
mysql> prompt \U:/\d>
PROMPT set to '\U:/\d>'
root@localhost:/db1>
|
|
|
 |
网友:
windlike | 时间:2006-07-19 13:44:05 IP地址:59.148.197.★ |
|
|
|
以XML格式查看查询结果
通过使用传统—xml 选项调用MySQL命令行客户程序,你可以以XML格式来查看MySQL查询结果。如果你打算将查询输出与其它程序集成在一起,这一技巧非常有用,这里是一个例子:
shell> mysql --xml
mysql> SELECT * FROM test.stories LIMIT 2;
<?xml version="1.0"?>
<resultset statement="SELECT * FROM test.stories">
<row>
<id>1</id>
<headline>This is a test</headline>
<tstamp>2005-07-28 00:14:57</tstamp>
</row>
<row>
<id>2</id>
<headline>This is the second test</headline>
<tstamp>2005-07-28 00:15:11</tstamp>
</row>
</resultset>
2 rows in set (0.11 sec)
|
|
|
 |
网友:
windlike | 时间:2006-09-23 08:37:41 IP地址:211.96.69.★ |
|
|
|
用mysql内置函数转换ip地址和数字:
inet_aton: 将ip地址转换成数字型
inet_ntoa: 将数字型转换成ip地址
|
|
|
 |
网友:
windlike | 时间:2006-09-29 10:47:07 IP地址:59.148.197.★ |
|
|
|
简单的表备份:
create table 备份表名 as select * from 旧表名
从备份表插入目标表
insert into 目标表 select * from 备份表
|
|
|
 |
网友:
windlike | 时间:2007-04-17 15:47:51 IP地址:211.96.69.★ |
|
|
|
要实现全连接, 可将两个外连接union到一起.
select * from ta, tb where ta.c1 (+) = tb.c1
union
select * from ta, tb where ta.c1 = tb.c1 (+)
|
|
|
 |
网友:
windlike | 时间:2007-04-26 14:32:50 IP地址:211.96.69.★ |
|
|
|
[同时删除两个表的记录]
DELETE tb1, tb2 FROM tb1,tb2 WHERE tb1.id = tb2.tb1_id AND tb1.id = xxx
[插入时唯一索引冲突则变为更新]
用法是:
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
例如,如果列a被定义为UNIQUE,并且包含值1,则执行以上语句与下面的结果一样
UPDATE table SET c=c+1 WHERE a=1
即插入时使唯一键冲突,则会执行update语句,where条件为该冲突的键值
|
|
|
 |
网友:
windlike | 时间:2007-05-07 16:44:25 IP地址:211.96.69.★ |
|
|
|
在mysql中求日期差:
最近三天的记录 (to_days(now())-to_days(regtime))>3
|
|
|
 |
网友:
windlike | 时间:2007-05-21 17:17:02 IP地址:211.96.69.★ |
|
|
|
复制表: create table tb2 select * from tb where ...
这么创建的表没有索引,记得自己创建
|
|
|
 |
网友:
windlike | 时间:2007-05-27 11:06:52 IP地址:211.96.69.★ |
|
|
|
同时删除两个表关联信息:
DELETE table1, table2
FROM table1, table2
WHERE table1.id = table2.id
AND table1.id =$id
|
|
|
 |
网友:
windlike | 时间:2007-06-23 15:07:48 IP地址:202.134.70.★ |
|
|
|
MySQL 中添加和删除用户:
grant all privileges on google.* to user@localhost identified by 'hello' with grant option;
grant all privileges on *.* to user@"%" identified by 'hello' with grant option;
update user set password=password('newpwd') where user='user';
grant select, insert, update, delete, create, drop on google.* to user@localhost identified by 'pwd';
revoke drop, create on *.* from user@localhost;
|
|
|
 |
网友:
windlike | 时间:2007-06-23 15:40:09 IP地址:202.134.70.★ |
|
|
|
LOCK / UNLOCK 的应用
10.2.8 MySQL怎样锁定数据库表
为了解决在一个表中进行很多INSERT和SELECT操作的情况,你可在一张临时表中插入行并且偶尔用来自临时表的记录更新真正的表。这可用下列代码做到:
mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
mysql> insert into real_table select * from insert_table;
mysql> delete from insert_table;
mysql> UNLOCK TABLES;
LOCK TABLES 是对线程的应用: 如果一个线程获得在一个表上的一个READ锁,该线程(和所有其他线程)只能从表中读。如果一个线程获得一个表上的一个WRITE锁,那么只有持锁的线程READ或WRITE表,其他线程被阻止。
|
|
|
 |
网友:
windlike | 时间:2007-06-23 15:41:26 IP地址:202.134.70.★ |
|
|
|
KILL 的用法
语法: KILL thread_id
每个对mysqld的连接以一个单独的线程运行。你可以用看SHOW PROCESSLIST命令察看哪个线程正在运行,并且用KILL thread_id命令杀死一个线程。
如果你有process权限,你能看到并且杀死所有线程。否则,你只能看到并且杀死你自己的线程。
你也可以使用mysqladmin processlist和mysqladmin kill命令检查并杀死线程。
|
|
|
 |
网友:
windlike | 时间:2007-06-23 15:42:51 IP地址:202.134.70.★ |
|
|
|
SET OPTION句法
SET OPTION设置影响服务器或你的客户操作的各种选项。你设置的任何选择保持有效直到当前会话结束,或直到你设置选项为不同的值。
CHARACTER SET character_set_name | DEFAULT
PASSWORD = PASSWORD('some password')
设置当前用户的口令。任何非匿名的用户能改变他自己的口令!
PASSWORD FOR user = PASSWORD('some password')
设置当前服务器主机上的一个特定用户的口令。只有具备存取mysql数据库的用户可以这样做。用户应该以user@hostname格式给出,这里user和hostname完全与他们列在mysql.user表条目的User和Host列一样。
|
|
|
 |
网友:
windlike | 时间:2007-06-23 15:59:00 IP地址:202.134.70.★ |
|
|
|
CONCAT 的用法
SELECT CONCAT(first_name, " ", last_name) FROM tbl_name WHERE income/dependents > 10000 AND age > 30;
|
|
|
 |
网友:
windlike | 时间:2007-08-09 19:48:00 IP地址:121.35.43.★ |
|
|
|
mysql导出数据到文本文件
SELECT remote_url INTO OUTFILE "urllist.lst"
FIELDS TERMINATED BY ','
LINES TERMINATED BY "\n"
FROM wallpaper;
|
|
|
 |
网友:
windlike | 时间:2007-09-25 17:12:55 IP地址:202.134.70.★ |
|
|
|
EXPLAIN tbl_name是DESCRIBE tbl_name或SHOW COLUMNS FROM tbl_name的一个同义词。
|
|
|
 |
网友:
windlike | 时间:2008-06-17 15:05:53 IP地址:220.231.152.★ |
|
|
|
SELECT ROUND((0.5-RAND())*2*5) ;
#0.5-rand()可以得到-0.5 至 +0.5的随机数
fyi:http://www.phpchina.com/83/viewspace_30789.html
|
|
|
 |
网友:
windlike | 时间:2008-07-18 11:29:53 IP地址:220.232.135.★ |
|
|
|
同时删除多表:
delete a, b from emp a, dept b where a.deptno=b.deptno and a.deptno=2;
同时更新多表:
update emp a, dept b set a.sa1=a.sa1*b.deptno, b.deptname=a.ename where a.deptno=b.deptno;
|
|
|