mysql--多表操作

<!-- /* Font Definitions */ @font-face {font-family:"MS 明朝"; panose-1:2 2 6 9 4 2 5 8 3 4; mso-font-alt:"MS Mincho"; mso-font-charset:128; mso-generic-font-family:roman; mso-font-pitch:fixed; mso-font-signature:-1610612033 1757936891 16 0 131231 0;} @font-face {font-family:SimSun; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:宋体; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:Century; panose-1:2 4 6 4 5 5 5 2 3 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} @font-face {font-family:"/@SimSun"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@MS 明朝"; panose-1:2 2 6 9 4 2 5 8 3 4; mso-font-charset:128; mso-generic-font-family:roman; mso-font-pitch:fixed; mso-font-signature:-1610612033 1757936891 16 0 131231 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0mm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:Century; mso-fareast-font-family:"MS 明朝"; mso-bidi-font-family:"Times New Roman"; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:99.25pt 30.0mm 30.0mm 30.0mm; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

多表操作
  在一个数据 中,可能存在多个表, 些表都是相互 关联 的。我 们继续 使用前面的例子。前面建立的表中包含了 工的一些基本信息,如姓名、性 、出生日期、出生地。我 建一个表, 表用于描述 工所 表的文章,内容包括作者姓名、文章 标题 表日期。
  
   1 看第一个表 mytable 的内容:
  
   mysql> select * from mytable;
   +----------+------+------------+-----------+
   | name | sex | birth | birthaddr |
   +----------+------+------------+-----------+
   | abccs |f | 1977-07-07 | china |
   | mary |f | 1978-12-12 | usa |
   | tom |m | 1970-09-02 | usa |
   +----------+------+------------+-----------+
  
   2 建第二个表 title (包括作者、文章 标题 表日期) :
  
   mysql> create table title(writer varchar(20) not null,
   -> title varchar(40) not null,
   -> senddate date);
        表中填加 记录 ,最后表的内容如下:
   <ccid_nobr>
   <table width="400" border="1" cellspacing="0" cellpadding="2"
   bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center">
   <tr>
   <td bgcolor="e6e6e6" class="code" style="font-size:9pt">
   <pre><ccid_code>   mysql> select * from title;
   +--------+-------+------------+
   | writer | title | senddate |
   +--------+-------+------------+
   | abccs | a1 | 2000-01-23 |
   | mary | b1 | 1998-03-21 |
   | abccs | a2 | 2000-12-04 |
   | tom | c1 | 1992-05-16 |
   | tom | c2 | 1999-12-12 |
   +--------+-------+------------+
   5 rows in set (0.00sec)
  
   3 、多表 查询
   在我 有了两个表 : mytable title 。利用 两个表我 可以 查询
  例如我 查询 作者 abccs 的姓名、性 、文章:
  
   mysql> SELECT name,sex,title FROM mytable,title
   -> WHERE name=writer AND name=′abccs′;
   +-------+------+-------+
   | name | sex | title |
   +-------+------+-------+
   | abccs | f | a1 |
   | abccs | f | a2 |
   +-------+------+-------+
  
  上面例子中,由于作者姓名、性 、文章 记录 在两个不同表内,因此必 使用 合来 查询 。必 要指定一个表中的 记录 如何与其它表中的 记录进 行匹配。
  
  注意:如果第二个表 title 中的 writer 列也取名 name (与 mytable 表中的 name 列相同)而不是 writer ,就必 mytable.name title.name 表示,以示区
  
  再 一个例子,用于 查询 文章 a2 的作者、出生地和出生日期:
  
   mysql> select title,writer,birthaddr,birth from mytable,title
   -> where mytable.name=title.writer and title=′a2′;
   +-------+--------+-----------+------------+
   | title | writer | birthaddr | birth |
   +-------+--------+-----------+------------+
   | a2 | abccs | china | 1977-07-07 |
   +-------+--------+-----------+------------+
  
  修改和 份、批
  有 数据 表和数据 库进 行修改和 除,可以用如下方法 实现
  
   1 、增加一列:
  如在前面例子中的 mytable 表中增加一列表示是否 single:
   mysql> alter table mytable add column single char(1);
  
   2 、修改 记录
  将 abccs single 记录 修改 “y”
   mysql> update mytable set single=′y′ where name=′abccs′;    在来看看 生了什
  
   mysql> select * from mytable;
   +----------+------+------------+-----------+--------+
   | name | sex | birth | birthaddr | single |
   +----------+------+------------+-----------+--------+
   | abccs |f | 1977-07-07 | china | y |
   | mary |f | 1978-12-12 | usa | NULL |
   | tom |m | 1970-09-02 | usa | NULL |
   +----------+------+------------+-----------+--------+
  
   3 、增加 记录
  前面已 经讲过 如何增加一条 记录 便于 看,重 与此:
  
   mysql> insert into mytable
   -> values (′abc′,′f′,′1966-08-17′,′china′,′n′);
   Query OK, 1 row affected (0.05 sec)
  
   看一下:
  
   mysql> select * from mytable;
   +----------+------+------------+-----------+--------+
   | name | sex | birth | birthaddr | single |
   +----------+------+------------+-----------+--------+
   | abccs |f | 1977-07-07 | china | y |
   | mary |f | 1978-12-12 | usa | NULL |
   | tom |m | 1970-09-02 | usa | NULL |
   | abc |f | 1966-08-17 | china | n |
   +----------+------+------------+-----------+--------+
  
   4 记录
  用如下命令 除表中的一条 记录 mysql> delete from mytable where name=′abc′;
   DELETE 从表中 足由 where 出的条件的一条 记录
  再 示一下 果:
  
   mysql> select * from mytable;
   +----------+------+------------+-----------+--------+
   | name | sex | birth | birthaddr | single |
   +----------+------+------------+-----------+--------+
   | abccs |f | 1977-07-07 | china | y |
   | mary |f | 1978-12-12 | usa | NULL |
   | tom |m | 1970-09-02 | usa | NULL |
   +----------+------+------------+-----------+--------+
  
   5 除表:
   mysql> drop table ****( 1 的名字 ) *** 2 的名字 ;
  可以 除一个或多个表,小心使用。
  
   6 、数据 除:
   mysql> drop database 数据 ;
  小心使用。
  
   7 、数据 份:
  退回到 DOS
   mysql> quit
   d:mysqlbin
  
  使用如下命令 数据 abccs 份:
   mysqldump --opt abccs>abccs.dbb
   abccs.dbb 就是你的数据 abccs 份文件。
  
   8 、用批 理方式使用 MySQL:
  
  首先建立一个批 理文件 mytest.sql, 内容如下:
  
   use abccs;
   select * from mytable;
   select name,sex from mytable where name=′abccs′;
  
  在 DOS 下运行如下命令: d:mysqlbin mysql < mytest.sql
  
  在屏幕上会 果。
  
  如果想看 果,而 果很多, 可以用 这样 的命令: mysql < mytest.sql | more
  
  我 们还 可以将 出到一个文件中: mysql < mytest.sql > mytest.out

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值