﻿<?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-心静志远.永攀高峰-文章分类-数据库学习</title><link>http://www.blogjava.net/jasonzsj/category/16669.html</link><description>学习交友放松</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 23:20:05 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 23:20:05 GMT</pubDate><ttl>60</ttl><item><title>MySQL语言的基础</title><link>http://www.blogjava.net/jasonzsj/articles/77807.html</link><dc:creator>漂泊的风</dc:creator><author>漂泊的风</author><pubDate>Sat, 28 Oct 2006 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/jasonzsj/articles/77807.html</guid><wfw:comment>http://www.blogjava.net/jasonzsj/comments/77807.html</wfw:comment><comments>http://www.blogjava.net/jasonzsj/articles/77807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jasonzsj/comments/commentRss/77807.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jasonzsj/services/trackbacks/77807.html</trackback:ping><description><![CDATA[
		<p>1、安装环境：<br />Windows XP<br />Mysql 4.0.17 从 sql.com"&gt;http://www.mysql.com下载<br />EMS Mysql Query 1.6.0.1<br />本机IP：172.5.1.183<br />2、安装Mysql，采用默认安装即可<br />目录选择在c:\mysql，不要修改默认目录<br />3、启动Mysql<br />安装为服务：c:\mysql\bin\mysqld --install<br />启动Mysql: net start mysql<br />停止Mysql: net stop mysql<br />4、系统创建的数据库有mysql，test<br />mysql保存系统数据<br />test数据库用来测试<br />5、默认登陆方式<br />在本机<br />c:\mysql\bin\mysql -uroot <br />c:\mysql\bin\mysql<br />远程<br />mysql -h 172.5.1.183 -uroot</p>
		<p>这些是在mysql.user表中，系统默认存在4条数据<br />use mysql<br />select host，user，password from user;<br />+-----------+------+----------+<br />host user password <br />+-----------+------+----------+<br />localhost root <br />% root <br />localhost <br />% <br />+-----------+------+----------+</p>
		<p>这些数据代表的意义：<br />用户名为root，密码为空的用户可以从本机和任何远程主机登陆<br />任何用户名，密码为空的用户可以从本机登陆<br />用户名为空，密码为空的用户不可以从远程登陆 （user中后面的字段为N，所以无法登陆）<br />修改root密码<br />mysql -uroot <br />use mysql<br />update user set password=PASSWORD("root") where user=’root’ and host=’localhost’<br />下次就需要用mysql -uroot -proot才可以登陆<br />在远程或本机可以使用 mysql -h 172.5.1.183 -uroot 登陆，这个根据第二行的策略确定 <br />权限修改生效：<br />1)net stop mysql <br />net start mysql<br />2)c:\mysql\bin\mysqladmin flush-privileges<br />3)登陆mysql后，用flush privileges语句<br />6、创建数据库staffer<br />create database staffer;<br />7、下面的语句在mysql环境在执行<br />显示用户拥有权限的数据库 show databases;<br />切换到staffer数据库 use staffer;<br />显示当前数据库中有权限的表 show tables;<br />显示表staffer的结构 desc staffer;<br />8、创建测试环境<br />1)创建数据库staffer<br />mysql&gt; create database staffer<br />2)创建表staffer，department，position，depart_pos<br />create table s_position<br />(<br />id int not null auto_increment，<br />name varchar(20) not null default ’经理’， #设定默认值<br />description varchar(100)，<br />primary key PK_positon (id) #设定主键<br />); <br />create table department<br />(<br />id int not null auto_increment，<br />name varchar(20) not null default ’系统部’， #设定默认值<br />description varchar(100)，<br />primary key PK_department (id) #设定主键<br />);<br />create table depart_pos<br />(<br />department_id int not null，<br />position_id int not null，<br />primary key PK_depart_pos (department_id，position_id) #设定复和主键<br />);<br />create table staffer<br />(<br />id int not null auto_increment primary key， #设定主键<br />name varchar(20) not null default ’无名氏’， #设定默认值<br />department_id int not null，<br />position_id int not null，<br />unique (department_id，position_id) #设定唯一值<br />);<br />3)删除<br />mysql&gt;<br />drop table depart_pos;<br />drop table department;<br />drop table s_position;<br />drop table staffer;<br />drop database staffer;<br />9、修改结构<br />mysql&gt;<br />#表position增加列test<br />alter table position add(test char(10)); <br />#表position修改列test<br />alter table position modify test char(20) not null;<br />#表position修改列test默认值<br />alter table position alter test set default ’system’;<br />#表position去掉test默认值<br />alter table position alter test drop default;<br />#表position去掉列test<br />alter table position drop column test;<br />#表depart_pos删除主键<br />alter table depart_pos drop primary key;<br />#表depart_pos增加主键<br />alter table depart_pos add primary key PK_depart_pos (department_id，position_id);<br />10、操作数据<br />#插入表department<br />insert into department(name，description) values(’系统部’，’系统部’);<br />insert into department(name，description) values(’公关部’，’公关部’);<br />insert into department(name，description) values(’客服部’，’客服部’);<br />insert into department(name，description) values(’财务部’，’财务部’);<br />insert into department(name，description) values(’测试部’，’测试部’);<br />#插入表s_position<br />insert into s_position(name，description) values(’总监’，’总监’);<br />insert into s_position(name，description) values(’经理’，’经理’);<br />insert into s_position(name，description) values(’普通员工’，’普通员工’);<br />#插入表depart_pos<br />insert into depart_pos(department_id，position_id)<br />select a.id department_id，b.id postion_id<br />from department a，s_position b;<br />#插入表staffer<br />insert into staffer(name，department_id，position_id) values(’陈达治’，1，1);<br />insert into staffer(name，department_id，position_id) values(’李文宾’，1，2);<br />insert into staffer(name，department_id，position_id) values(’马佳’，1，3);<br />insert into staffer(name，department_id，position_id) values(’亢志强’，5，1);<br />insert into staffer(name，department_id，position_id) values(’杨玉茹’，4，1);<br />11、查询及删除操作<br />#显示系统部的人员和职位<br />select a.name，b.name department_name，c.name position_name<br />from staffer a，department b，s_position c<br />where a.department_id=b.id and a.position_id=c.id and b.name=’系统部’;<br />#显示系统部的人数<br />select count(*) from staffer a，department b<br />where a.department_id=b.id and b.name=’系统部’<br />#显示各部门的人数<br />select count(*) cou，b.name<br />from staffer a，department b<br />where a.department_id=b.id<br />group by b.name;<br />#删除客服部<br />delete from department where name=’客服部’;<br />#将财务部修改为财务一部<br />update department set name=’财务一部’ where name=’财务部’;<br />12、备份和恢复 <br />备份数据库staffer<br />c:\mysql\bin\mysqldump -uroot -proot staffer&gt;e:\staffer.sql<br />得到的staffer.sql是一个sql脚本，不包括建库的语句，所以你需要手工<br />创建数据库才可以导入<br />恢复数据库staffer，需要创建一个空库staffer<br />c:\mysql\bin\mysql -uroot -proot staffer&lt;staffer.sql<br />如果不希望后来手工创建staffer，可以<br />c:\mysql\bin\mysqldump -uroot -proot --databases staffer&gt;e:\staffer.sql<br />mysql -uroot -proot &gt;e:\staffer.sql<br />但这样的话系统种就不能存在staffer库，且无法导入其他名字的数据库，<br />当然你可以手工修改staffer.sql文件<br />13、从文本向数据库导入数据<br />1)使用工具c:\mysql\bin\mysqlimport<br />这个工具的作用是将文件导入到和去掉文件扩展名名字相同的表里，如<br />staffer.txt，staffer都是导入到staffer表中<br />常用选项及功能如下 <br />-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息 <br />-f or --force 不管是否遇到错误，mysqlimport将强制继续插入数据 <br />-i or --ignore mysqlimport跳过或者忽略那些有相同唯一 <br />关键字的行， 导入文件中的数据将被忽略。 <br />-l or -lock-tables 数据被插入之前锁住表，这样就防止了， <br />你在更新数据库时，用户的查询和更新受到影响。 <br />-r or -replace 这个选项与－i选项的作用相反；此选项将替代 <br />表中有相同唯一关键字的记录。 <br />--fields-enclosed- by= char <br />指定文本文件中数据的记录时以什么括起的， 很多情况下 <br />数据以双引号括起。 默认的情况下数据是没有被字符括起的。 <br />--fields-terminated- by=char <br />指定各个数据的值之间的分隔符，在句号分隔的文件中， <br />分隔符是句号。您可以用此选项指定数据之间的分隔符。 <br />默认的分隔符是跳格符（Tab） <br />--lines-terminated- by=str <br />此选项指定文本文件中行与行之间数据的分隔字符串 <br />或者字符。 默认的情况下mysqlimport以newline为行分隔符。 <br />您可以选择用一个字符串来替代一个单个的字符： <br />一个新行或者一个回车。 <br />mysqlimport命令常用的选项还有-v 显示版本（version）， <br />-p 提示输入密码（password）等。<br />这个工具有个问题，无法忽略某些列，这样对我们的数据导入有很大的麻烦，虽然<br />可以手工设置这个字段，但会出现莫名其妙的结果，我们做一个简单的示例<br />我们定义如下的depart_no.txt，保存在e盘，间隔为制表符\t<br />10 10<br />11 11<br />12 24 <br />执行如下命令<br />c:\mysql\bin\mysqlimport -uroot -proot staffer e:\depart_pos.txt<br />在这里没有使用列的包围符号，分割采用默认的\t，因为采用别的符号会有问题，<br />不知道是不是windows的原因<br />2)Load Data INFILE file_name into table_name(column1_name，column2_name)<br />这个命令在mysql&gt;提示符下使用，优点是可以指定列导入，示例如下<br />c:\mysql\bin\mysql -uroot -proot staffer<br />mysql&gt;load data infile "e:/depart_no.txt" into depart_no(department_id，position_id);</p>
		<p>这两个工具在Windows下使用都有问题，不知道是Windows的原因还是中文的问题，<br />而且不指定的列它产生了空值，这显然不是我们想要的，所以谨慎使用这些工具<br /></p>
<img src ="http://www.blogjava.net/jasonzsj/aggbug/77807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jasonzsj/" target="_blank">漂泊的风</a> 2006-10-28 16:31 <a href="http://www.blogjava.net/jasonzsj/articles/77807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>