作为学习的积累和汇总,将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;