mysql常用命令

导出:
  1. 导出数据库
  mysql\bin>mysqldump -u root ivr > ivr.sql 

  2. 导出一张表。字段以|分隔并用"括起来。
  select * from comment into outfile 'D:/working/ttt.txt' fields terminated by '|' enclosed by '"';
  select * from p_policy into outfile 'c:/a.txt' fields terminated by '|';

  3. 如果只想卸出建表指令,则命令如下:
  mysqldump -d phptest > a.sql

  4. 如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:
  mysqldump -t asdb > c:\\a.sql
  mysqldump -t -uxoops_root -p654321 -P 5188 asdb> c:\\a.sql
  
  5. 那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?
  mysqldump -T./ phptest driver



导入:
  1. 导入数据库所有的表
  mysql asdb <"D:/univPlat/asdb.sql" -uroot -p

  2. 导入一张表
  load data infile "D:/working/ttt.txt" into table comment fields terminated by "|" enclosed by """;

  load data local infile 'D:/_temp/a.txt' 
  into table t_c_AssItem fields 
  terminated by ',' enclosed by '"' 
  IGNORE 1 LINES 
  (AccPackageID,AccID,AssItemID,AssItemName,AssTotalName,ParentAssItemId,IsLeaf,Level,UomUnit,Curr,Property);
如:enclosed by '"' 不能加,只能先替换所有的"号
  "AccPackageID","AccID","AssItemID","AssItemName","AssTotalName","ParentAssItemId","IsLeaf","Level","UomUnit","Curr","Property"
  "70118012830296","",    "1",		"部门",		,		"",		0,	,	"1",	,	"1"
  "70118012830296","01",  "1-01",	"管理部门",	,		"1",		1,	,	"1",	,	"1"
  "70118012830296","02",  "1-02",	"制造部门",	,		"1",		1,	,	"1",	,	"1"
  "70118012830296", "",   "2",		"客户",		,		"",		0,	,	"2",	,	"1"

  load data infile "c:/a.txt" into table p_policy fields terminated by "|";
  SET子句中的用户变量可以采用多种方式使用。以下例子使用数据文件中的第一列,直接用于t1.column1的值。在用户变量被用于t2.column2值之前,把第二列赋予用户变量。该变量从属于一个分割运行。
  LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @var1) SET column2 = @var1/100;
  SET子句可以被用于提供不是来源于输入文件的值。以下语句把column3设置为当前的日期和时间:
  LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, column2) SET column3 = CURRENT_TIMESTAMP;

  select ReferCount,LawName,Content from law into outfile 'D:/_temp/law.txt' fields terminated by '|';
  load data LOCAL INFILE  'D:/_temp/law.txt' into table p_policy fields terminated by '|' (POLICYTYPE,TITLE,CONTENT);

  3. 使用mysqlimport实用程序:
 mysqlimport --fields-terminated-by=, --fields-enclosed-by=\" phptest driver.txt


0. cmd /C "explorer ."  //打开浏览器
   
1. 如果你移动MySQL分发到"D:\programs\mysql",你必须用
           D:\programs\mysql\bin\mysqld --basedir D:\programs\mysql来启动mysqld

2. win9x 启动mysql服务:C:\mysql\bin\mysqld
         关闭:         C:\mysql\bin\mysqladmin -u root shutdown
   winnt/2000启动服务:NET START mysql
                       
           关闭:    NET STOP mysql
                       mysqladmin -- user=root -- password=your_password shutdown
       安装作为NT服务:C:\mysql\bin\mysqld-nt --install

4. 测试运行:
            C:\mysql\bin\mysqlshow
                        或: mysqlshow -u root -p
          C:\mysql\bin\mysqlshow -u root mysql
          C:\mysql\bin\mysqladmin version status proc
          C:\mysql\bin\mysql test

5. 为root用户增加一个口令:(下列例子通过删除匿名用户启动,允许任何人存取"测试"数据库)
  C:\mysql\bin\mysql mysql
  mysql> DELETE FROM user WHERE Host='localhost' AND User='';
  mysql> QUIT
  C:\mysql\bin\mysqladmin reload
  C:\mysql\bin\mysqladmin -u root password your_password
    
    对共享软件版本,你能如下设置root用户口令: 
  C:\mysql\bin\mysql mysql
  mysql> UPDATE user SET password=PASSWORD('your password') WHERE user='root';
  mysql> QUIT
  C:\mysql\bin\mysqladmin reload

6. 登陆数据库 
          mysql -u root -p mysql

7. 可以看到 mysql库中的一些table    mysqlshow mysql 

8. 连接远程。 
格式: mysql -h主机地址 -u用户名 -p用户密码
   mysql -h192.168.1.111 -uxoops_root -p654321 -P 5188 
   mysqladmin -h192.168.1.111 -uxoops_root -p654321 -P 5188 processlist

9. 修改密码。 
    格式:mysqladmin -u用户名 -p旧密码 password 新密码 
    1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令 mysqladmin -uroot -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 
    2:再将root的密码改为djg345。mysqladmin -uroot -pab12 password djg345

10 增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符) 


格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码" 

例0:增加所有权限:GRANT ALL PRIVILEGES on *.* to "easymis"@"%" Identified by "easymis"; 
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令: 
grant select,insert,update,delete on *.* to "rightuser"@"%" Identified by "rightuser";
grant select,insert,update,delete on *.* to "xoops_root"@localhost Identified by "654321"; 
grant select,insert,update,delete on *.* to "xoops_root"@"%" Identified by "654321";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。 
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。 
grant select,insert,update,delete on easycon.* to "easymis"@localhost identified by "easymis"; 
如果你不想test2有密码,可以再打一个命令将密码消掉。 
grant select,insert,update,delete on mydb.* to "test2"@localhost identified by ""; 

11. 显示命令 
1、显示数据库列表。 
show databases; 
刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 
2、显示库中的数据表: 
use mysql; //打开库,学过FOXBASE的一定不会陌生吧 
show tables; 
3、显示数据表的结构: 
describe 表名; 
4、建库: 
create database 库名; 
5、建表: 
use 库名; 
create table 表名 (字段设定列表); 
6、删库和删表: 
drop database 库名; 
drop table 表名; 
7、将表中记录清空: 
delete from 表名; 
8、显示表中的记录: 
select * from 表名; 


9 查询前几条记录:mysql> SELECT * FROM table LIMIT 5;     # Retrieve first 5 rows
10 导出记录到文件:SELECT * INTO OUTFILE "c:\\right.txt" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n" FROM kuser;

11 union语法:SELECT
foo_col,
bar_col,
zama_col
FROM
tabname
WHERE
1=0
UNION
SELECT
"foo" foo_col,
"bar" bar_col,
"zama" zama_col
UNION ALL
SELECT
foo_col,
bar_col,
zama_col
FROM
12 select语法
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
       [HIGH_PRIORITY]
       [DISTINCT | DISTINCTROW | ALL]
    select_ausdruck,...
    [INTO {OUTFILE | DUMPFILE} 'datei' export_optionen]
    [FROM tabellenreferenz
        [WHERE where_definition]
        [GROUP BY {positive_ganzzahl | spalten_name | formel} [ASC | DESC], ...]
        [HAVING where_definition]
        [ORDER BY {positive_ganzzahl | spalten_name | formel} [ASC | DESC] ,...]
        [LIMIT [offset,] zeilen]
        [PROCEDURE prozedur_name]
        [FOR UPDATE | LOCK IN SHARE MODE]]

//自动加1 
create table s_user(	
			iid		int	not null  PRIMARY KEY AUTO_INCREMENT,
			suid		varchar(20),
			spwd		varchar(20),

//分页查询
select * from s_user where len > 3 limit 1,10

update dg_source_data set handle = handle ,play_time = '2005-06-19 19:37:12.357' ,star_id = '1' ,bless_id = '1' ,submit_reserve = '1' where flow_id = 1;




常用数据类型

create table test(id TINYINT, id1 SMALLINT, id2 MEDIUMINT, id3 INT, id4 BIGINT,
                     d0 FLOAT, d1 DOUBLE,d2 DECIMAL(10,2),
   c1 CHAR(10), c2 VARCHAR(100), c3 TINYTEXT, c4 TEXT, c5 MEDIUMTEXT, c6 LONGTEXT,
                     b1 blob,
                     e1 ENUM('user', 'group', 'class', 'all'))
     insert into test values(1,1,1,1,1,0.111,0.123456,89.23,'a','b','c','d','e','f',null,1);

DATE yyyy-mm-dd格式的日期
TIME hh:mm:ss格式的时间
DATETIME yyyy-mm-ddhh:mm:ss格式结合日期和时间
TIMESTAMP yyyy-mm-ddhh:mm:ss格式结合日期和时间
YEAR yyyy格式的年份

常用数据类型
TINYINT
SMALLINT
MEDIUMINT
INT
BIGINT

char(1)
char(6)
VARCHAR(20)
VARCHAR(50)
VARCHAR(100)
VARCHAR(250)
TEXT
blob

FLOAT
DOUBLE
DECIMAL(10,2)

DATE
TIME
DATETIME



譬如表t1, 有字段id,gongxu. 
记录是: 
产品号        工序编号          工序名称

1                1                 印花

1                2                 车缝1                3                 绣花1                4                 包装 
  
能否一个sql,取出来的字符串是:1印花2车缝3绣花4包装  
select id, GROUP_CONCAT( CONCAT(gxid,gxname)) as sumaa from t1
group by id

//消除重复行
Delete from k_key where autoid not in (select max(autoid) from k_key group by key1,key2);
//消除重复行
delete from  k_key a, (select autoid from  k_key   where k_key.autoid not in (select max(autoid) from k_key group by key1,key2)) b where a.autoid=b.autoid

 

你可能感兴趣的:(sql,C++,c,mysql,C#)