﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-小妮子-随笔分类-database</title><link>http://www.blogjava.net/wjttkx/category/23169.html</link><description>学无止境</description><language>zh-cn</language><lastBuildDate>Thu, 14 Jun 2007 18:43:19 GMT</lastBuildDate><pubDate>Thu, 14 Jun 2007 18:43:19 GMT</pubDate><ttl>60</ttl><item><title>[转发]MYSQL常用指令</title><link>http://www.blogjava.net/wjttkx/archive/2007/06/14/124343.html</link><dc:creator>王娟</dc:creator><author>王娟</author><pubDate>Thu, 14 Jun 2007 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/wjttkx/archive/2007/06/14/124343.html</guid><wfw:comment>http://www.blogjava.net/wjttkx/comments/124343.html</wfw:comment><comments>http://www.blogjava.net/wjttkx/archive/2007/06/14/124343.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wjttkx/comments/commentRss/124343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wjttkx/services/trackbacks/124343.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 感觉很有必要参考的，就转发过来了：
<div id=art style="MARGIN: 15px" width="100%">
<p>unsigned int <br>auto_increment 自动增长<br>not null&nbsp; 非空<br>tinyint(m)<br>float(m,n) m 总长 n 小数点后的位数<br>mysqld --console 开始<br>Mysqld (start)<br>Mysqld-nt<br>CREATE DATABASE db_name 创建数据库<br>USE db_name(选取数据库)<br>Mysql 管理<br>mysqladmin<br>Show databases 查看</p>
<p>mysql -h(hostname) -u(username) -p(要求输入密码的)<br>quit 退出</p>
<p>1、show tables </p>
<p>2、mysqladmin shutdown 关闭</p>
<p>3、mysql --h=hostname --u=username --p</p>
<p>4、DROP DATABASE db_name&nbsp; 删除</p>
<p>5、DROP TABLE 表的名字&nbsp;&nbsp;&nbsp; </p>
<p>6、CREATE TABLE 表的名字 SELECT （要选择的列） FROM 原来的表 WHERE condition;</p>
<p>7、CREATE TABLE new_table SELECT id,name,sex FROM</p>
<p>8、INSERT INTO 表的名字 VALUES 跟的值（&#8216;列的值&#8217;，&#8216;列的值&#8217;）；</p>
<p>9、drop database name(数据库的名字） 删除数据库<br>10、CREATE TABLE name (id int,name varchar(20),sex ENUM('male','female'))创建表</p>
<p>11、DESCRIBE TABLE(表的名字）</p>
<p>12、ALTER TABLE name（表的名字）ADD PRIMARY KEY （index_col_name）； 建表的主键</p>
<p>13、ALTER TABLE name（表的名字）MODIFY id int(11) unsuptaigned(非负） not null（非空） auto_intcrement（自动增长）;</p>
<p>14、select * from 表的名字；</p>
<p>&nbsp;&nbsp;&nbsp; SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5;</p>
<p>15、update 表的名字 set 列的名字='数据' where id=号码； 修改和增加数据</p>
<p>16、ALTER TABLE 表的名字 ADD 列名 类型 ； 增加一个列</p>
<p>17、LOAD DATA INFILE &#8216;路径，文件名&#8217;INTO TABLE 表名；&nbsp;&nbsp;&nbsp; 导入数据</p>
<p>修改记录：UPDATE table_name SET column_name_1=column_value_1[,column_name2=column_value2] [WHERE where_statement] [LIMIT n];<br>例: UPDATE xscj SET YuWen=80 WHERE id=101 (int型不要&#8216;&#8217;，char 型要&#8217;&#8216;）<br>删除记录：DELETE FROM table_name [WHERE where_statements][LIMIT n];<br>DELETE FROM xscj WHERE id=101;<br>CREATE TABLE 表的名字 SELECT 要选择的列或* FROM 原表名 WHERE id=..(只提取一条记录）默认为全部 <br>INSERT INTO 表名 VALUES （与表对应的数值）；插入多个值（），（）SELECT * FROM 表名；<br>有些关键字可以用``标起来&nbsp;&nbsp; 例如：`all`</p>
<p>18、创建索引：<br>CREATE TABLE 表名 (id init,name varchar(20)) INDEX idx_id(id) PRIMARY KEY id<br>CREATE INDEX part_of_name ON customer (name(10));</p>
<p>19、ALTER TABLE 表名 ADD INDEX idx_id (id,name); 修改索引；</p>
<p>20、ALTER TABLE 表名 DROP INDEX idx_id(索引的名字) 删除索引</p>
<p>order by (DESC(降序)) 排序</p>
<p>select TOP 3(前三行) student_id,name from xscj where student_id between 123 AND 1323 order by students_id ,name desc <br>SELECT student_id , count(*) AS ss FROM xscj GROUP BY student_id;<br>count(*) 记录行数<br>ab[123].com=ab1.com or ab2.com or ab3.com<br>mysql mytest &lt; c:\study.txt&nbsp; 导入文件</p>
<p>临时表<br>可用CREATE TEMPORARY TABLE 来创建临时表，这些表在会话结束时会自动消失。使用临时表很方便，<br>因为不必费心发布DROP TABLE 语句明确地删除这些表，而且如果您的会话不正常结束，这些表不会滞留<br>。例如，如果某个文件中有一个用mysql运行的查询，您决定不等到其结束，那么可以在其执行的中途停<br>止这个查询，而且毫无问题，服务器将删除所创建的任意临时表。在旧版的MySQL中，没有真正的临时表<br>，除了您在自己的头脑中认为它们是临时的除外。对于需要这样的表的应用程序，必须自己记住删除这些<br>表。如果忘了删除，或在前面使其存在的客户机中出现错误时，这些表在有人注意到并删除它们以前会一<br>直存在。临时表仅对创建该表的客户机可见。</p>
<p>DROP TABLE tb1_name1,tb1_name2,......<br>? ? 其次，如果不能肯定一个表是否存在，但希望如果它存<br>在就删除它。那么可在此语句中增加IF EXISTS。</p>
<p>SELECT a,b,a+b INTO OUTFILE 'c:/result.text' FIELDS TERMINATED BY "" LINES TERMINATED BY "\n" FROM test_table;<br>SELECT user,MAX(salary) AS sum FROM users group by user HAVING sum&gt;10 LIMIT 95,-1(95到最后);<br>@c:\study.sql 可以查看系统<br>&nbsp;<br>SELECT * FROM table1 USE INDEX (key1,key2) WHERE key1=1 AND key2=2 AND key3=3;<br>&nbsp;主键与负键的联系用 references</p>
<p>mysql数据库的授权 <br>　　 mysql&gt;grant select,insert,delete,create,drop <br>　　 on *.* (或test.*/user.*/..) <br>　　 to 用户名@localhost <br>　　 identified by 密码； <br>　　 如：新建一个用户帐号以便可以访问数据库，需要进行如下操作： <br>　　 mysql&gt; grant usage（没有权限） <br>　　 -&gt; ON test.* <br>　　 -&gt; TO <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#116;&#101;&#115;&#116;&#117;&#115;&#101;&#114;&#64;&#108;&#111;&#99;&#97;&#108;&#104;&#111;&#115;&#116;"><u><font color=#0000ff>testuser@localhost</font></u></a>; <br>　　 Query OK, 0 rows affected (0.15 sec) <br>　　 此后就创建了一个新用户叫：testuser，这个用户只能从localhost连接到数据库并可以连接到test 数据库。下一步，我们必须指定testuser这个用户可以执行哪些操作： <br>　　 mysql&gt; GRANT select, insert, delete,update <br>　　 -&gt; ON test.* <br>　　 -&gt; TO <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#116;&#101;&#115;&#116;&#117;&#115;&#101;&#114;&#64;&#108;&#111;&#99;&#97;&#108;&#104;&#111;&#115;&#116;"><u><font color=#0000ff>testuser@localhost</font></u></a>; <br>　　 Query OK, 0 rows affected (0.00 sec) <br>　　 此操作使testuser能够在每一个test数据库中的表执行SELECT，INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序： <br>　　 mysql&gt; exit <br>　　 Bye <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; 登陆：mysql -u &nbsp;用户名 -p <br>&nbsp;&nbsp;&nbsp;&nbsp; 删除用户 delete from user where user='名字1' [or user='名字2']；<br>&nbsp;&nbsp;&nbsp;&nbsp; user 数据库是系统的<br>&nbsp;<br>运行脚本：<br>修改密码：<br>USE mysql;<br>UPDATE user SET Password(字段名)=PASSWORD（一个函数）('new_password') WHERE user='root'</p>
<p>FLUSH PRIVILEGES；（你必须告诉服务器再次读入授权表）</p>
<p>Mysqldump 数据库备份<br>mysqldump -u -p 数据库名[表名]&gt;（重定向）<br>mysqldump&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;</p>
</div>
<img src ="http://www.blogjava.net/wjttkx/aggbug/124343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wjttkx/" target="_blank">王娟</a> 2007-06-14 16:36 <a href="http://www.blogjava.net/wjttkx/archive/2007/06/14/124343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql内、外、左、右连接</title><link>http://www.blogjava.net/wjttkx/archive/2007/06/08/122913.html</link><dc:creator>王娟</dc:creator><author>王娟</author><pubDate>Fri, 08 Jun 2007 10:12:00 GMT</pubDate><guid>http://www.blogjava.net/wjttkx/archive/2007/06/08/122913.html</guid><wfw:comment>http://www.blogjava.net/wjttkx/comments/122913.html</wfw:comment><comments>http://www.blogjava.net/wjttkx/archive/2007/06/08/122913.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wjttkx/comments/commentRss/122913.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wjttkx/services/trackbacks/122913.html</trackback:ping><description><![CDATA[在数据库应用中，经常要涉及从两个或更多的表中查询数据，这就需要使用连接查询。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其格式如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT COLUMN_NAME，C O L U M N _ N A M E [ , . . . n ]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM TA B L E _ N A M E，TA B L E _ N A M E [ , . . . n ]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE TABLE_NAME.COLUMN_NAME JOIN_OPERATOR TA B L E _ N A M E . C O L U M N _ N A M E<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上述的连接操作符（J O I N _ O P E R ATO R）可以是：=、&gt;、&lt;、&gt; =、&lt; =、! =、&lt; &gt;、! &gt;、! &lt;、= *、* =。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在A N S I中，&#8220;=&#8221;连接应该写成Inner Join；&#8220;* =&#8221;连接应该写成LEFT OUT JOIN；&#8220;= *&#8221;连接应该写成&#8220; RIGHT OUT JOIN&#8221;。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在SQL SERVER中，这些写法都可以用。但是，A N S I规定的写法是INNER JOIN等标志。一般而言，在任何连接中，都使用&#8220;主键=外键&#8221;的连接查询条件。<br>---------------------------------------------------------------------------------<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 非限制连接（CROSS JOIN），就是指不带W H E R E子句的查询。在数学上，就是表的笛卡尔积。若R表和S表非限制连接，而且R表有X行，S表有Y行，那么结果集是X * Y行。即：R表的一行对应着S表的所有行。在应用中，非限制连接产生的是无意义结果集，但在数据库的数学模式上有重要的作用。<br>-------------------------------------------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 自然连接（INNER JOIN）也叫内连接。我们先看下面的例子：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT PUB_NAME,TITLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM TITLES,PUBLISHERS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE TITLES.PUB_ID=PUBLISHERS.PUB_ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或写成：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT PUB_NAME,TITLE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM TITLES INNER JOIN PUBLISHERS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON TITLES.PUB_ID=PUBLISHERS.PUB_ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中，INNER JOIN是SQL Server的缺省连接，可简写为J O I N。在J O I N后面指定哪些表作连接。O N后面指定了连接的条件。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上操作的过程如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1) 从T I T L E S表中取出一条符合其条件的记录。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2) 扫描P U B L I S H E R S表，分别检查每条记录是否在连接属性上同表T I T L E S取出的记录相<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3) 相等就显示信息。继续从表T I T L E S中取下一条记录，重复步骤2。其实，两个或多个表要做连接，那么这些表之间必然存在着主键和外键的关系。所以，只需要将这些键的关系列出，就可以得出表连接的结果。如上例中， P U B _ I D是P U B L I S H E R S表的主键， P U B_ I D又是TI T L E S表的外键，参照P U B L I S H E R S表中的P U B _ I D .所以，这两个表的连接条件就是T I T L E S.PUB_ID=PUBLISHERS. PUB_ID。<br>-----------------------------------------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 外连接（OUTER JOIN）允许限制一张表中的行，而不限制另一张表中的行。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面举两个例子来说明外连接的用法。请比较这两个例子。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例显示所有的书名（无销售记录的书也包括在内，&#8220;*&#8221;在左边表示不限制左边表的数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT TITLES.TITLE_ID,title=convert(char(38),TITLE),QTY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM TITLES,SALES<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE TITLES.TITLE_ID *= SALES.TITLE_ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或写为：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT TITLES.TITLE_ID,title=convert(char(38),TITLE),QTY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM TITLES LEFT OUTER JOIN SALES<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON TITLES.TITLE_ID = SALES.TITLE_ID<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 外连接的方法有两种:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8226; A *= B 包括第一张表A的所有行在内，而不考虑语句限制（如： A . t i t l e _ i d = B . t i t l e _ i d）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于LEFT OUT JOIN。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8226; A =* B 包括第二张表B的所有行在内，而不考虑语句限制（如： A . t i t l e _ i d = B . t i t l e _ i d）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于RIGHT OUT JOIN。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 创建外连接规则：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1) 外连接显示外部表中的所有行，包括与相关表不相配的行在内。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2) 外连接只能在两张表之间进行。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3) 不能在内部表上使用IS NULL检索条件。
<img src ="http://www.blogjava.net/wjttkx/aggbug/122913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wjttkx/" target="_blank">王娟</a> 2007-06-08 18:12 <a href="http://www.blogjava.net/wjttkx/archive/2007/06/08/122913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>