作爲學習的積累和彙總,將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;