<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ls /proc &#187; SQL</title>
	<atom:link href="http://www.lsproc.com/blog/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lsproc.com/blog</link>
	<description>lsproc.com</description>
	<lastBuildDate>Fri, 18 Nov 2011 09:22:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP 和 Mysql 学习笔记（三）</title>
		<link>http://www.lsproc.com/blog/php_mysql_study_3/</link>
		<comments>http://www.lsproc.com/blog/php_mysql_study_3/#comments</comments>
		<pubDate>Fri, 27 Jul 2007 08:35:48 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Program&Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://www.lostk.com/blog/webdesign/php_mysql_study_3/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/php_mysql_study_3/ 1. mysql 定界符（反引号`） 当标示符是一个受限的词或包含特殊的字符时使用 select * from `select` where `select`.id &#62;100; create table orders(`my orders` varchar(100)...); 2. 数据库的大小写 linux下的数据库和表名的大小写是敏感的 其他的数据库对象不区分大小写 3. mysql 分组语句和嵌套子查询 员工表 emp( empno, name, tel, deptno, sal ) 部门表 dept( deptno, dname, addr ) &#8230; <a href="http://www.lsproc.com/blog/php_mysql_study_3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/php_mysql_study_3/">http://www.lsproc.com/blog/php_mysql_study_3/</a></p>
<p><strong>1. mysql 定界符（反引号`）</strong></p>
<p>当标示符是一个受限的词或包含特殊的字符时使用</p>
<pre class="brush: sql">select * from `select` where `select`.id &gt;100;
create table orders(`my orders` varchar(100)...);</pre>
<p><strong>2. 数据库的大小写</strong></p>
<p>linux下的数据库和表名的大小写是敏感的<br />
其他的数据库对象不区分大小写</p>
<p><strong>3. mysql 分组语句和嵌套子查询</strong></p>
<p>员工表 emp( empno, name, tel, deptno, sal )<br />
部门表 dept( deptno, dname, addr )</p>
<p>显示每个部门收入最高的职工信息</p>
<pre class="brush: sql">select * from emp
where sal in (
	select max(sal)
	from emp
	group by deptno
);</pre>
<p><strong>4. mysql 查询排序 ( SQL Order By )</strong></p>
<p>SELECT "栏位名"<br />
FROM "表格名"<br />
[WHERE "条件"]<br />
ORDER BY "栏位名" [ASC, DESC]</code><br />
ASC 代表结果会以由小往大的顺序列出，而 DESC 代表结果会以由大往小的顺序列出，默认值为 ASC。</p>
<p>我们可以照好几个不同的栏位来排顺序。在这个情况下， ORDER BY 子句的语法如下(假设有两个栏位)：<br />
ORDER BY "栏位一" [ASC, DESC], "栏位二" [ASC, DESC]<br />
若我们对这两个栏位都选择由小往大的话，那这个子句就会造成结果是依据 "栏位一" 由小往大排。若有好几笔资料 "栏位一" 的值相等，那这几笔资料就依据 "栏位二" 由小往大排。 </p>
<p><strong>5. mysql limit 子句</strong></p>
<p>数据表同3，查询薪水最低的5名员工。<br />
<code>select * from emp order by sal limit 0, 5;</code><br />
返回值从第一行开始（第一行偏移量为0）可简写为：<br />
<code>select * from emp order by sal limit 5;</code><br />
查询3-7号员工信息：<br />
<code>select * from emp limit 2, 5;</code><br />
这里的 limit 子句是 mysql 特有的，是大多数其他的关系型数据库所没有的。</p>
<p><strong>6. mysql 数据表关联</strong></p>
<p>双表关联<br />
数据表同3，查询某个部门的职工号，姓名：</p>
<pre class="brush: sql">select emp.empno, emp.name dept.dname
from emp, dept
where dept.name = &#039;软件部&#039;
and emp.deptno = dept.deptno;</pre>
<p>多表关联<br />
举例在线书店数据库<br />
客户表 customers (customerid, name, address, city)<br />
定单表 orders (orderid, customerid, amount, date)<br />
书籍表 books (isbn, author, title, price)<br />
订单与图书关联的表 book_items (orderid, isbn, quantity)<br />
查询至少定购了一本关于 java 的书籍的顾客：</p>
<pre class="brush: sql">select customers.name
from customers, orders, order_items, books
where customers.customerid = order.customerid
and orders.orderid = order_items.orderid
and order_items.isbn = books.isbn
and books.title like &#039;%java%&#039;;</pre>
<p>在这里同样可以使用表的别名（alias）,以上可改写为：</p>
<pre class="brush: sql">select c.name
from customers as c, orders as o, order_items as oi, books as b
where c.customerid = o.customerid
and o.orderid = oi.orderid
and oi.isbn = b.isbn
and b.title like &#039;%java%&#039;;</pre>
<p>查找不匹配行，这里查找没有订购任何商品的顾客：</p>
<pre class="brush: sql">select customers.customerid, customers.name
from customers left join orders
using (customerid)
where orders.orderid is null</pre>
<p>这里使用了一个左关联将 customers 表和 orders 表关联起来，如果右边的表中没有匹配行就在结果中加一行，该行右边的列为 null，在这里关联条件所使用的语法一种是上面的 using，它并不需要指定连接属性所来自的表，所以要使用 using 子句，两个表中的列必须有同样的名称，另外还有一个关联条件的语法是 on，它需要指定连接属性所来自的表：<br />
<code>....<br />
on customers.customerid = orders.customerid<br />
....</code></p>
<blockquote><p>
A left join（左连接）包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。<br />
同理，也存在着相同道理的 right join（右连接），即包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。<br />
而full join(全连接)顾名思义，左右表中所有记录都会选出来。 </p></blockquote>
<p>-- EOF --</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li>2007-06-22 -- <a href="http://www.lsproc.com/blog/php_mysql_study_2/" title="PHP 和 Mysql 学习笔记（二）">PHP 和 Mysql 学习笔记（二）</a> (0)</li><li>2007-09-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_4/" title="PHP 和 Mysql 学习笔记（四）">PHP 和 Mysql 学习笔记（四）</a> (0)</li><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2007-11-13 -- <a href="http://www.lsproc.com/blog/cakephp_note/" title="Cakephp 笔记">Cakephp 笔记</a> (0)</li><li>2007-11-05 -- <a href="http://www.lsproc.com/blog/mysql_export_and_import/" title="MySQL导出导入命令的用例">MySQL导出导入命令的用例</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/php_mysql_study_3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 和 Mysql 学习笔记（二）</title>
		<link>http://www.lsproc.com/blog/php_mysql_study_2/</link>
		<comments>http://www.lsproc.com/blog/php_mysql_study_2/#comments</comments>
		<pubDate>Fri, 22 Jun 2007 07:15:42 +0000</pubDate>
		<dc:creator>lostsnow</dc:creator>
				<category><![CDATA[Program&Database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://www.lostk.com/blog/webdesign/php_study_2/</guid>
		<description><![CDATA[转载时请标明文章原始出处和作者信息, 作者: lostsnow.http://www.lsproc.com/blog/php_mysql_study_2/ 1. 值参和变参 值参： &#60;?php function swap($a, $b) { $temp = $a; $a = $b; $b = $temp; } $x = 100; $y = 1; swap($x, $y); echo &#34;x = $x&#60;br /&#62;y = $y&#34;; ?&#62; 输出结果为： x = &#8230; <a href="http://www.lsproc.com/blog/php_mysql_study_2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>转载时请标明文章原始出处和作者信息, 作者: <a href="http://www.lsproc.com/blog/">lostsnow</a>.<br /><a href="http://www.lsproc.com/blog/php_mysql_study_2/">http://www.lsproc.com/blog/php_mysql_study_2/</a></p>
<p>1. 值参和变参<br />
值参：</p>
<pre class="brush: php">&lt;?php
	function swap($a, $b) {
		$temp = $a;
		$a = $b;
		$b = $temp;
	}
	$x = 100;
	$y = 1;
	swap($x, $y);
	echo &quot;x = $x&lt;br /&gt;y = $y&quot;;
?&gt;</pre>
<p>输出结果为：</p>
<pre class="brush: php">x = 100
y = 1</pre>
<p>这里 $x, $y 只是一个值的拷贝</p>
<p>变参：</p>
<pre class="brush: php">&lt;?php
	function swap(&amp;$a, &amp;$b) {
		$temp = $a;
		$a = $b;
		$b = $temp;
	}
	$x = 100;
	$y = 1;
	swap($x, $y);
	echo &quot;x = $x&lt;br /&gt;y = $y&quot;;
?&gt;</pre>
<p>输出结果为：</p>
<pre class="brush: php">x = 1
y = 100</pre>
<p>2. 连接 mysql<br />
格式： mysql -h主机地址 -u用户名 -p用户密码</p>
<pre class="brush: bash">mysql -uroot -p
mysql -h100.100.100.100 -uroot -p</pre>
<p>-h -u和后面都没有空格<br />
选定数据库mysql<br />
<code>use mysql;</code></p>
<p>3. mysql 指令<br />
显示数据库列表<br />
<code>show databases;</code><br />
显示数据库中的表<br />
<code>show tables;</code><br />
显示数据表的结构<br />
describe 表名<br />
简写为<br />
<code>desc 表名</code></p>
<p>4. SQL(Structured Query Language，结构查询语言)</p>
<p>SQL功能强大，但是概括起来，它可以分成以下几组：</p>
<p><strong>DML（Data Manipulation Language，数据操作语言）</strong>：用于检索或者修改数据；</p>
<blockquote><p>SELECT：用于检索数据；<br />
INSERT：用于增加数据到数据库；<br />
UPDATE：用于从数据库中修改现存的数据<br />
DELETE：用于从数据库中删除数据。</p></blockquote>
<p><strong>DDL（Data Definition Language，数据定义语言）</strong>： 用于定义数据的结构，比如 创建、修改或者删除数据库对象；</p>
<blockquote><p>CREATE TABLE<br />
ALTER TABLE<br />
DROP TABLE<br />
CREATE INDEX<br />
DROP INDEX</p></blockquote>
<p><strong>DCL（Data Control Language，数据控制语言）</strong>：用于定义数据库用户的权限。DCL命令用于创建关系用户访问以及授权的对象。下面是几个DCL命令：</p>
<blockquote><p>ALTER PASSWORD<br />
GRANT<br />
REVOKE<br />
CREATE SYNONYM</p></blockquote>
<p>举例：</p>
<pre class="brush: sql">create database school;	--建立数据库
drop database school;	/* 删除数据库 */
drop database if exists school;	#如果存在数据库school则删除</pre>
<p>这里3种注释方式 "--"，"#"和"/* ... */"</p>
<p>统计记录数：<br />
<code>select count(*) from table;</code>
<p>-- EOF --</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li>2007-09-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_4/" title="PHP 和 Mysql 学习笔记（四）">PHP 和 Mysql 学习笔记（四）</a> (0)</li><li>2007-07-27 -- <a href="http://www.lsproc.com/blog/php_mysql_study_3/" title="PHP 和 Mysql 学习笔记（三）">PHP 和 Mysql 学习笔记（三）</a> (0)</li><li>2008-03-18 -- <a href="http://www.lsproc.com/blog/configure_lamp/" title="lamp 相关配置 [Debian]">lamp 相关配置 [Debian]</a> (2)</li><li>2007-11-13 -- <a href="http://www.lsproc.com/blog/cakephp_note/" title="Cakephp 笔记">Cakephp 笔记</a> (0)</li><li>2007-06-07 -- <a href="http://www.lsproc.com/blog/php_mysql_study_1/" title="PHP 和 Mysql 学习笔记（一）">PHP 和 Mysql 学习笔记（一）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.lsproc.com/blog/php_mysql_study_2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

