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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章