mysql零距離接觸-linux下mysql命令

1、鏈接MySQL

格式: mysql -h主機地址 -u用戶名 -p用戶密碼  mysql

一、例1:鏈接到本機上的MYSQL。(mysql-uroot-p12344)linux

  首先在打開DOS窗口,而後進入目錄 mysqlbin,再鍵入命令mysql -uroot -p,回車後提示你輸密碼,若是剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車便可進入到MYSQL中了,MYSQL的提示符是: mysql<。sql

二、例2:鏈接到遠程主機上的MYSQL。( mysql -h10.20.0.88-uroot-p12344 )數據庫

  假設遠程主機的IP爲:110.110.110.110,用戶名爲root,密碼爲abcd123。則鍵入如下命令:服務器

  mysql -h110.110.110.110 -uroot -pabcd123ide

  (注:u與root能夠不用加空格,其它也同樣)函數

三、退出MYSQL命令: exit (回車)。ui

二,服務命令

1.linux下啓動mysql的命令:編碼

  mysqladmin startspa

  /ect/init.d/mysql start (前面爲mysql的安裝路徑)

2.linux下重啓mysql的命令:

  mysqladmin restart

  /ect/init.d/mysql restart (前面爲mysql的安裝路徑)

3.linux下關閉mysql的命令:

  mysqladmin -u root -p密碼 shutdown

  /ect/init.d/mysql shutdown (前面爲mysql的安裝路徑)

4.鏈接本機上的mysql:

  進入目錄mysql\bin,再鍵入命令mysql -uroot -p, 回車後提示輸入密碼。

  退出mysql命令:exit(回車)

5.修改mysql密碼:

  mysqladmin -u用戶名 -p舊密碼 password 新密碼

  或進入mysql命令行SET PASSWORD FOR '用戶名'@'主機' = PASSWORD(‘密碼');

  GRANT USAGE ON *.* TO '用戶名'@'主機' IDENTIFIED BY 'biscuit';

  修改本身的密碼SET PASSWORD = PASSWORD('biscuit');

6.增長新用戶。(注意:mysql環境中的命令後面都帶一個分號做爲命令結束符)

  grant all privileges on *.* to 用戶名@'%' identified by '密碼' with grant option;

  flush privileges;(刷新權限設置)

  grant select on 數據庫.* to 用戶名@登陸主機 identified by "密碼"

  如增長一個用戶test密碼爲123,讓他能夠在任何主機上登陸, 並對全部數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入mysql,而後鍵入如下命令:

  grant select,insert,update,delete on *.* to " Identified by "123";

7.跳過受權訪問mysql

  mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

3、有關mysql數據庫和表操做

  必須首先登陸到mysql中,有關操做都是在mysql的提示符下進行,並且每一個命令以分號結束

一、顯示數據庫列表。

  show databases;

二、建數據庫:

  create database 庫名;

三、建表:

       use mysql; //打開庫

  create table 表名(字段設定列表);

4,增刪表列

    (1)添加單列
    ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
        例如:ALTER TABLE users1 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;
       在 id 後面添加 username屬性:ALTER TABLE users1 ADD password VARCHAR(32) NOT NULL   AFTER username;
    (2)添加多列
    ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
    (3)刪除列
    ALTER TABLE tbl_name DROP [COLUMN] col_name
    例如:ALTER TABLE users1 DROP truename;
    (4)一次刪除多列:
    ALTER TABLE uses1 DROP password,DROP age;
    也能刪除一列的同時,新增一列。其間用逗號隔開。

5,修改列約束

    (5)添加主鍵約束:
    ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY[index_type] (col_name);
    (6)添加惟一約束
    ALTER TABLE tbl_name ADD UNIQUE(col_name);
    (7)添加外鍵約束
    ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_type](外鍵列) REFERENCES 父類(參考列);
    (8)刪除主鍵約束
    ALTER TABLE table_name DROP PRIMARY KEY;

    (9)刪除惟一約束

    ALTER TABLE table_name DROP {INDEX|KEY} index_name;

    (10)刪除外鍵約束

    ALTER TABLE table_name DROP FOREIGN KEY fk_symbol;

    (11)添加/刪除默認約束:
    ALTER TABLE table_name ALTER [COLUMN] column_name SET DEFAULT literal

    ALTER TABLE table_name ALTER [COLUMN] column_name DROP DEFAULT

6,修改列定義

    (1)修改列定義
    ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST |AFTER col_name];

    (2)修改列名稱
    ALTER TABLE tbl_name CHANGE [COLUMN] col_name new_col_name column_definition [FIRST|AFTER col_name];

    (3)數據表改名

7,修改數據表名

    ALTER TABLE tbl_name RENAME [TO/AS] new_tbl_name

9,顯示建立表和索引

    顯示建立表的語句:SHOW CREATE TABLE table_name;
    查看錶是否有索引:SHOW INDEXS FROM table_name;

十、顯示庫中的數據表

  show tables;

十一、顯示數據表的結構

  describe 表名;(desc)

       SHOW COLUMNS FROM 表名;

十二、刪庫和刪表

  drop database 庫名;

  drop table 表名;

13,顯示所屬的數據庫

        SELECT DATABASE();

1四、編碼的修改

  若是要改變整個mysql的編碼格式:

  啓動mysql的時候,mysqld_safe命令行加入

  --default-character-set=gbk

  若是要改變某個庫的編碼格式:在mysql提示符後輸入命令

  alter database db_name default character set gbk;

4、有關mysql記錄操做

四種基本操做:

操做

說明

INSERT

第一種:

INSERT [INTO] tb1_name [(col_name,...)] VALUES(val,...),(val1,...);   //INSERT 關鍵字,INTO 可省略,tb1_name 數據表的名稱

當字段有自動增長的屬性後,在插入表的全部字段的數據時,能夠填寫 NULL 或 DEFAULT 這兩個關鍵字,表示按照原先默認自動增加的屬性

第二種:

INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},……

只能一次性插入一條記錄

第三種:

insert table_name [(colname...)] select.....

把查詢到的結果插入到指定數據表中

UPDATE

update <表名>
set <列名>=<表達式>,[,<列名>=<表達式>]...
[where <條件>];

DELETE

一、刪除記錄DELETE:分爲單表刪除和多表刪除
二、單表刪除:DELETE FROM tbl_name [WHERE where_conditon]; 刪除後再插入,插入的id號從最大的往上加,而不是填補刪除的。

SELECT

SELECT select_expr [,select expr2...] 只查找某一個函數或表達式
[
FROM table_references 查詢表名
[WHERE where_conditon] 查詢條件
[GROUP BY {col_name|position} [ASC|DESC],...] 按某個字段進行分組,相同的只顯示第一個
[HAVING where_conditon] 分組時,給出顯示條件
[ORDER BY {col_name|expr|position} [ASC|DESC],...] 排序
[LIMIT {[offset,]row_count|row_count OFFSET offset}] 限制返回數量
}

使用[AS] alias_name爲其賦予別名

[]均可以省略,如select version();

SELECT * FROM tdb_goods\G; // 網格形式輸出查詢結果

條件:

條件

說明

WHERE

在WHERE表達式中,可使用MySQL支持的函數或運算符

GROUP BY

查詢結果分組:
[group by{col_name|position} [ASC|DESC],...]
select * from users group by sex;
select * from users group by 1;(這裏的一表示查詢的第一個字段,這裏查詢全部,第一個字段就是id,也就是會按照字段進行分組)
ASC 升序默認 desc 降序
能夠有多個分組,用「,」隔開

HAVING

利用GROUP BY 分組 添加分組條件 [HAVING where_condition],HAVING的字段要麼在select中出現,要麼是聚合函數(只有一個結果),如count(id) > 1;

SELECT sex FROM users GROUP BY 1 HAVING age > 35; //有錯
SELECT sex, age FROM users GROUP BY 1 HAVING age > 35;

SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;

 

ORDER BY

對查詢結果進行排序,默認是升序
order by{col_name}
select * from users order by id desc; //對一個字段排序
select * from users order by age,id desc; //兩個字段同時排序
desc是降序
一、對查詢結果進行排序:[ORDER BY [col_name | expr | position } [ASC|DESC],...]
二、能夠同時按多條字段進行排序,規則是先按前面的字段排,在基礎上再按後面字段排。
三、如:SELECT * FROM users ORDER BY age,id DESC; 先按照age排序,若是age有重複的,重複的字段裏按id排序

LIMIT

一、限制查詢結果返回的數量:[LIMIT {[offset,] row_count|row_count OFFSET offset}]
二、默認返回全部結果,經過LIMIT能夠限制其返回指定數量的記錄
三、如SELECT * FROM users LIMIT 2,3; 偏移量爲2,從第三條開始,返回3條結果
四、偏移量不是按照id等字段來排序,而是按照當前查詢排序的方式順序偏移

五,約束

約束名

說明

UNSIGNED

無符號

空值與非空

NULL,字段值能夠爲空 NOT NULL,字段值禁止爲空,不賦值會報錯

AUTO_INCREMENT

自動編號,且必須與主鍵配合使用,保證記錄的惟一性,類型必須爲整型(能夠是FLOAT(5,0)等,小數點後必須爲0),默認狀況下。起始值爲1,每次的增量爲1

PRIMARY KEY(KEY)

主鍵約束
每張數據表只能存在一個主鍵

主鍵保證記錄的惟一性
主鍵自動爲NOT NULL
auto_increment必須和主鍵primary key一塊兒使用,可是主鍵primary key不必定要和auto_increment一塊使用

UNIQUE KEY

惟一約束

惟一約束能夠保證記錄的惟一性
惟一約束的字段能夠爲空值(NULL)
每張數據表能夠存在多個惟一約束

DEFAULT

默認約束

默認值

FOREIGN KEY

外鍵約束
保持數據一致性,完整性;實現一對一或一對多關係。
要求:
父表和子表必須使用相同的存儲引擎,並且禁止使用臨時表;
數據表的存儲引擎只能爲InnoDB;
外鍵列和參照列必須具備相似的數據類型。其中數字的長度或是否有符號位必須相同;而字符的長度則能夠不一樣;
外鍵列和參照列必須建立索引。若是外鍵列不存在索引的話,MySQL將自動建立索引。
在 MY.ini 文件中編輯默認的存儲引擎:default-storage-engine=INNODB;
外鍵約束的參照操做:
1. CASCADE: 從父表刪除或更新且自動刪除或更新子表中匹配的行。
如:FOREIGN KEY (key_name) REFERENCEES table_name (key_name) ON DELETE CASCADE;
ON DELETE \ ON UPDATE
2. SET NULL: 從父表刪除或更新行,並設置子表中的外鍵列爲NULL。若是使用該選項,必須保證子表列沒有指定NOT NULL。
3. RESTRICT: 拒絕對父表的刪除或者更新操做。
4. NO ACTION: 標準SQL的關鍵字,在MySQL中與RESTRICT相同。

1.表級約束與列級約束
(1)對一個數據列創建的約束,稱爲列級約束
(2)對多個數據列創建的約束,稱爲表級約束
(3)列級約束既能夠在列定義時聲明,也能夠在列定之後聲明
(4)表級約束只能在列定義後聲明
2.主鍵、外鍵、非空、惟1、check,default都是約束條件。主鍵、外鍵、既能夠做爲表級約束,也可做爲列級約束
而像非空、惟一等( not null, default )只有列級約束

6、數據的導入導出

從本地文件load數據到表(LOAD DATA語句中指出列值的分隔符和行尾標記,可是默認標記是定位符和換行符)

LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet

LINES TERMINATED BY '\r\n';

1,mysqldump的幾種經常使用方法

(1)導出整個數據庫(包括數據庫中的數據)

    mysqldump -u username -p dbname > dbname.sql    

(2)導出數據庫結構(不含數據)

    mysqldump -u username -p -d dbname > dbname.sql    

(3)導出數據庫中的某張數據表(包含數據)

    mysqldump -u username -p dbname tablename > tablename.sql    

(4)導出數據庫中的某張數據表的表結構(不含數據)

    mysqldump -u username -p -d dbname tablename > tablename.sql   

2,導入數據庫

一、首先建空數據庫
mysql>create database abc;

二、導入數據庫
方法一:
(1)選擇數據庫
mysql>use abc;
(2)設置數據庫編碼
mysql>set names utf8;
(3)導入數據(注意sql文件的路徑)
mysql>source /home/abc/abc.sql;
方法二:

mysqldump -u username -p -d dbname tablename > tablename.sql   

#mysql -uroot -p123456 ps_se_sample_platform < experiment.sql

七,權限設置

設置用戶獨有的使用權限,your_mysql_name用戶名,your_client_host主機名

GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';

八,mysql經常使用維護命令

一、show global status;列出MySQL服務器運行各類狀態值

二、show variables;查詢MySQL服務器配置信息語句

三、查看慢查詢

  show variables like '%slow%';

  show global status like '%slow%';

四、最大鏈接數

  show variables like 'max_connections';MySQL服務器最大鏈接數

  show global status like 'Max_used_connections'; 服務器響應的最大鏈接數

五、查看錶結構

  desc Tablename;

  describe Tablename;

  show columns from Tablename;

  show create table Tablename;

相關文章
相關標籤/搜索