Mysql基本命令彙總

作爲學習的積累和彙總,將mysql的命令全部整理一下;

1 . mysql基本命令

//登陸
mysql -hlocalhost -uroot -p
//鍵入密碼

//具體命令
mysql -host=localhost -user=root -port=3306 
//鍵入密碼

//退出
exit;
quit;

2 . 數據庫基本操作

//設置字符集
set names gbk;

//設置結束符
delimiter ;     //以分號結束
delimiter !    //以!結束

//顯示所有的字符集名稱
show charset;

//顯示所有可用的排序
show collation;

//顯示當前數據庫所有的數據庫
show databases;

//顯示當前數據庫中所有的數據表
show tables;

//進入某個數據庫
use tables;   //進入tables數據庫

//數據庫備份
//mysqldump  -h要備份的數據庫所在的服務器  -u用戶名  -p  數據庫名 >  完整目標文件名
mysqldump -hlocalhost -uroot -p tables > /alidata/www/test.sql;

//數據庫恢復
//mysql -h要備份的數據庫所在的服務器 -u用戶名 -p  目標數據庫名 <  備份數據文件名
mysql -hlocalhost -uroot -p tables < /alidata/www/test.sql;

//文件導入
//load  data  infile  ‘完整的數據文件路徑’  into  table 表名;
//說明:
//1,這種形式能夠將某種“整齊的數據”的文本文件中數據,插入到一個表中
//2,前提是:該表的結構,跟該整齊數據的數據項能夠“吻合”
LOAD DATA INFILE /alidata/www/index.txt INTO TABLE test;

3 . 表操作

3 . 1創建表

//語法 1
//create  table 【if  not  exists】 表名 (字段列表,【索引或約束列表】)【表選項列表】;
CREATE TABLE test(
   -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> title VARCHAR(100) NOT NULL,
   -> author VARCHAR(40) NOT NULL,
   -> date DATE,
   -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;



//語法 2
//create  table 【if  not  exists】 表名 (
//       字段1,字段2,字段3,.....
//        【索引或約束1,索引或約束2,索引或約束3,......】
//         )【表選項1,表選項2,表選項3,.......】;
CREATE TABLE test(
   -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> title VARCHAR(100) NOT NULL,
   -> author VARCHAR(40) NOT NULL,
   -> date DATE,
   -> PRIMARY KEY ( id ),
   -> KEY (date),
   -> )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '測試表' ;

3 . 2修改表

基本形式: alter table 表名 【增 | 刪 | 改】 【字段或索引】

//添加字段:alter table 表名 add [column] 新字段名 字段類型 [字段屬性列表];
ALTER TABLE test ADD age tinyint(1);

//修改字段(並可改名):alter table 表名 change [column] 舊字段名 新字段名 新字段類型 [新字段屬性列表];
ALTER TABLE test CHANGE name title CHAR(20);

//修改字段(只改屬性):alter table 表名 modify [column] 字段名 新字段類型 [新字段屬性列表];
//修改字段名:沒有單純修改字段名這個功能!
ALTER TABLE test MODIFY title varchar(50);

//刪除字段:alter table 表名 drop [column] 字段名;
ALTER TABLE test DROP date;

//添加普通索引:alter table 表名 add key [索引名] (字段名1[,字段名2,...]);
ALTER TABLE test ADD KEY unique key(title);

//添加唯一索引(約束):alter table 表名 add unique key (字段名1[,字段名2,...]);
ALTER TABLE test ADD name ADD UNIQUE KEY(title,name);

//添加主鍵索引(約束):alter table 表名 add primary key (字段名1[,字段名2,...]);
ALTER TABLE test ADD PRIMARY KEY(id,date);

//添加外鍵索引(約束):alter table 表名1 add foreign key (字段1,[,字段名2,...]) references 表名2(字段1,[,字段名2,...]);
ALTER TABLE test1 ADD FOREITN KEY(id) REFERENCES test2 (t_id);

//添加字段默認值(約束):alter table 表名 alter [column] 字段名 set default 默認值;
ALTER TABLE test ALTER age SET DEFAULT 18;

//刪除字段默認值(約束):alter table 表名 alter [column] 字段名 drop default;
ALTER TABLE test ALTER age DROP DEFAULT;

//刪除主鍵:alter table 表名 drop primay key;
//每一個表最多只能有一個主鍵
ALTER TABLE test DROP PRIMART KEY;

//刪除外鍵:alter table 表名 drop foreign key 外鍵名;
ALTER TABLE test DROP FOREIGN KEY t_id;

//刪除索引:alter table 表名 drop key 索引名;
ALTER TABLE test DROP KEY date;

//修改表選項:alter table 表名 選項名1=選項值1,選項名2=選項值
2,...;
ALTER TABLE test CHARSET=uft8mb64,ENGINE=innodb;

3 . 4刪除表

//刪除
DROP TABLE table_name ;

3 . 5表的其他相關語句

//顯示某表的結構:
 desc 表名; 或:describe 表名;

//顯示某表的創建語句:
show create table 表名;

//重命名錶:
rename table 舊錶名 to 新表名;

//從已有表複製表結構:
create table [if not exists] 新表名 like 原表名;

//創建索引:
create [unique | fulltext] index 索引名 on 表名(字段名1[,字段名2,...]);
//這裏省略unique或fulltext,那就是普通索引。實際上此創建索引語句,會在系統內部映射爲一條“alter table”的添加索引語句

//刪除索引:
drop index 索引名 on 表名;
//實際上,此語句同樣被映射爲一條“alter table”的刪除索引語句。

4 . 視圖操作

//創建
//create  view  視圖名 【(字段名1,字段名2,字段名3,....)】  as  select語句.... ;
CREATE VIEW test1(id,name,age) AS SELECT id,name,age FORM user;

//修改
//alter  view  視圖名  【(字段名1,字段名2,字段名3,....)】  as  select語句.... ;
ALTER VIEW test2(id,name,age) AS SELECT id,name,age FORM user;

//刪除
//drop  view  視圖名;
DROP VIEW test1;

5 . 數據操作

5 . 4查詢數據

//語法
//select [all | distinct] 字段或表達式列表 
//      [from子句] 
//      [where子句] 
//      [group by子句] 
//      [having子句] 
//      [order by子句] 
//      [limit子句];


//簡單查詢
select pro_id, pro_name, price from product  where  chandi=’北京’  order by  price  desc;

//聯合查詢
//select  XX1,  XX2,  ....  from   表1  【連接方式】 join 表2  【連接條件】  where ........
SELECT * FFROM user LERT JOIN addr ON user.addr_id = addr.id WHERE statur = 1;

//子查詢
//select  字段或表達式或(子查詢)  from  表名 或 (子查詢)  as  別名   where  字段  運算符  數據或(子查詢) group  by  xxx having 字段  運算符  數據或(子查詢)
select  *  from  product  where  price > (
select  max(price)  from  product  where  pinpai = ‘聯想’
);

5 . 2寫入數據

//形式1:
//insert [into] 表名 [(字段名1,字段名2,....)] values (值表達式1,值表達式2,....), (.....), ....;
INSERT INTO test (id,name,age,class) VALUES (2,'HOVER',18,3),(3,'TOM',19,4);

//形式2:
//replace [into] 表名 [(字段名1,字段名2,....)] values (值表達式1,值表達式2,....), (.....), ....;
REPLACE INTO test (id,name,age,class) VALUES (2,'HOVER',18,3),(3,'TOM',19,4);

//形式3:
//insert [into] 表名 [(字段名1,字段名2,....)] select 字段名1,字段名2,.... from 其他表名;
INSERT INTO test (name,age,class) SELECT name,age,class FROM class;
//這種方式也可以用來在一個表中複製大量的數據,不過能不有自增型的主鍵;

//形式4:
//insert [into] 表名 set 字段名1=值表達式1,字段名2=值表達式2,....;
INSERT INTO test SET name='jome',age=18,class=3;

5 . 3更新數據

//update  表名 set  字段1=新值1,字段2=新值2,......  【where篩選條件】 【order by排序設定】 【limit 數量限定】;
UPDATE test SET name='test' WHERE name='' LIMIT 10;

5 . 4刪除數據

//delete  from  表名  【where篩選條件】 【order by排序設定】 【limit 數量限定】;
DELETE FROM shop_cart WHERE user_id = 34 LIMIT 3;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章