您所在的位置:主页 > Java培训 >

常见的MySQL命令大全third

时间:2019-01-24 16:26来源:未知 作者:os 点击:

   11、查询及删除操作
    #显示系统部的人员和职位
    select a.name,b.name department_name,c.name position_name
    from staffer a,department b,s_position c
    where a.department_id=b.id and a.position_id=c.id and b.name='系统部';
    #显示系统部的人数
    select count(*) from staffer a,department b
    where a.department_id=b.id and b.name='系统部'
    #显示各部门的人数
    select count(*) cou,b.name
    from staffer a,department b
    where a.department_id=b.id
    group by b.name;
    #删除客服部
    delete from department where name='客服部';
    #将财务部修改为财务一部
    update department set name='财务一部' where name='财务部';
12、备份和恢复
     备份数据库staffer
      c:\mysql\bin\mysqldump -uroot -proot staffer>e:\staffer.sql
      得到的staffer.sql是一个sql脚本,不包括建库的语句,所以你需要手工
      创建数据库才可以导入
     恢复数据库staffer,需要创建一个空库staffer
      c:\mysql\bin\mysql -uroot -proot staffer<staffer.sql
      如果不希望后来手工创建staffer,可以
      c:\mysql\bin\mysqldump -uroot -proot --databases staffer>e:\staffer.sql
      mysql -uroot -proot >e:\staffer.sql
      但这样的话系统种就不能存在staffer库,且无法导入其他名字的数据库,
      当然你可以手工修改staffer.sql文件

13、从文本向数据库导入数据
     1)使用工具c:\mysql\bin\mysqlimport
     这个工具的作用是将文件导入到和去掉文件扩展名名字相同的表里,如
     staffer.txt,staffer都是导入到staffer表中
     常用选项及功能如下
-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息
-f or --force 不管是否遇到错误,mysqlimport将强制继续插入数据
-i or --ignore mysqlimport跳过或者忽略那些有相同唯一
关键字的行, 导入文件中的数据将被忽略。
-l or -lock-tables 数据被插入之前锁住表,这样就防止了,
你在更新数据库时,用户的查询和更新受到影响。
-r or -replace 这个选项与-i选项的作用相反;此选项将替代
表中有相同唯一关键字的记录。
--fields-enclosed- by= char
指定文本文件中数据的记录时以什么括起的, 很多情况下
数据以双引号括起。 默认的情况下数据是没有被字符括起的。
--fields-terminated- by=char
指定各个数据的值之间的分隔符,在句号分隔的文件中,
分隔符是句号。您可以用此选项指定数据之间的分隔符。
默认的分隔符是跳格符(Tab)
--lines-terminated- by=str
此选项指定文本文件中行与行之间数据的分隔字符串
或者字符。 默认的情况下mysqlimport以newline为行分隔符。
您可以选择用一个字符串来替代一个单个的字符:
一个新行或者一个回车。
mysqlimport命令常用的选项还有-v 显示版本(version),
             -p 提示输入密码(password)等。
    这个工具有个问题,无法忽略某些列,这样对我们的数据导入有很大的麻烦,虽然
    可以手工设置这个字段,但会出现莫名其妙的结果,我们做一个简单的示例
    我们定义如下的depart_no.txt,保存在e盘,间隔为制表符\t
10 10
11 11
12 24
执行如下命令
     c:\mysql\bin\mysqlimport -uroot -proot staffer e:\depart_pos.txt
     在这里没有使用列的包围符号,分割采用默认的\t,因为采用别的符号会有问题,
     不知道是不是windows的原因
     2)Load Data INFILE file_name into table_name(column1_name,column2_name)
       这个命令在mysql>提示符下使用,优点是可以指定列导入,示例如下
       c:\mysql\bin\mysql -uroot -proot staffer
       mysql>load data infile "e:/depart_no.txt" into depart_no(department_id,position_id);
     这两个工具在Windows下使用都有问题,不知道是Windows的原因还是中文的问题,
     而且不指定的列它产生了空值,这显然不是我们想要的,所以谨慎使用这些工具
进入MySQL:mysql -uuser -ppassword --port=3307
未完待续。。。。。。