Mysql 常用的命令

 1, 连不上远程的mysql,
   因为连接用户不允许使用远程登陆,只要加上权限即可,如root用户:
   grant select,insert,update,delete on *.* to "root"@"%" Identified by "";
   GRANT ALL PRIVILEGES on *.* to "root"@"%" Identified by "";
2. 连接远程主机
   mysql -h192.168.0.60 -uroot -p -P3306

max_allowed_packet=2000000 对二进制字段的要求
group_concat_max_len = 1048576 对分组...


分区:
  SQL标准在数据存储的物理方面没有提供太多的指南。SQL语言的使用独立于它所使用的任何数据结构或图表、表、行或列下的介质。但是,大部分高级数据库管理系统已经开发了一些根据文件系统、硬件或者这两者来确定将要用于存储特定数据块物理位置的方法。在MySQL中,InnoDB存储引擎长期支持表空间的概念,并且MySQL服务器甚至在分区引入之前,就能配置为存储不同的数据库使用不同的物理路径(关于如何配置的解释,请参见7.6.1节,“使用符号链接”)。
  分区又把这个概念推进了一步,它允许根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。用户所选择的、实现数据分割的规则被称为分区函数,这在MySQL中它可以是模数,或者是简单的匹配一个连续的数值区间或数值列表,或者是一个内部HASH函数,或一个线性HASH函数。函数根据用户指定的分区类型来选择,把用户提供的表达式的值作为参数。该表达式可以是一个整数列值,或一个作用在一个或多个列值上并返回一个整数的函数。这个表达式的值传递给分区函数,分区函数返回一个表示那个特定记录应该保存在哪个分区的序号。这个函数不能是常数,也不能是任意数。它不能包含任何查询,但是实际上可以使用MySQL 中任何可用的SQL表达式,只要该表达式返回一个小于MAXVALUE(最大可能的正整数)的正数值。


导出:
  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.0.27 -uroot -proot -P3306
   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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值