how to use MySQL with cmd

how to use mysql with CMD

标签(空格分隔): 数据库


连接本地MySQL:
进入mysql路径连接:

mysql -h localhost -u root -p 密码 -P3306(默认端口可以省略)

退出:

exit;
\q
quit;

查看数据库:

show databases;
show database 数据库名;
-- 匹配以xx开头的数据库
show database like 'xx%'-- 匹配以xx开头后面跟一个字符的数据库
show database like 'xx_';

查看数据库创建语句

show create database 数据库名;

创建数据库:create database name [库选项]
库 选 项 { 字符集设置(charset ) 校队集设置(collate) 库选项 \begin{cases} \text{字符集设置(charset )}\\ \text{校队集设置(collate)} \end{cases} {字符集设置(charset 校队集设置(collate

create database 数据库名;
create database if not exists 数据库名;
create database 数据库名 charset utf8;

修改数据库(不能修改数据库名,只能修改数据库的库选项)

-- 修改字符集,校对集也会随着改变
alter database name charset gbk;

删除数据库:

drop database 数据库名;

新建表:
先进入数据库

use database name;

创建表:create table name () [表选项]
表 选 项 { 字符集设置(charset ) 存储引擎(engine) 表选项 \begin{cases} \text{字符集设置(charset )}\\ \text{存储引擎(engine)} \end{cases} {字符集设置(charset 存储引擎(engine

create table 表名
(
	字段名 数据类型 null/(not null) default auto increment primary key,
	字段名 数据类型。。。
 )charset utf8 engine  innodb;

查看表:

show tables;
-- 查看表结构
desc name;
describe name;
show columns from name;

修改表结构

-- 修改表名
rename table oldname to newname;
-- 修改字段名
alter table name change oldname newname 字段类型 (字段位置);
-- 增加字段,默认在最后
alter table name add column 字段名 数据类型...;
-- 修改字段位置
alter table name modify 字段名 after 字段名;
-- 修改字段类型
alter table name modify 字段名 数据类型;
-- 删除字段
alter table name drop 字段名;

删除表:

drop table 表名1,表2;

插入数据:

insert into 表 (字段名) values (值);

注意:

值的个数,类型,顺序必须与字段名一致
插入字段名的顺序可以和表中的字段顺序不一致
通过插入null执行插入自动增长
通过default来插入默认值
名字是关键字、中文等加反引号(键盘ESC下面)
_等前面加转义
名字使用字母、下划线、数字构成

删除数据:

delete from 表 where 条件;

修改数据:

update 表名 set 字段= 值 , 。。。 where 条件

查询数据:

select 列名  from  表名 where 条件  order by 排序(默认asc升序 ,desc表示降序) limit 限制
-- 查询所有字段
select * from 表名;
-- 查询为空的字段
select * from 表名 where 字段 is null;

查看警告

show warnings;

增加主键

alter table name add primary key;
-- 无法修改主键,需要修改需要先删除主键
alter table name  drop primary key;

删除唯一键(unique key)

alter table name drop index 唯一键名(字段名)

插入主键冲突的解决

-- 使用主键冲突:主键不存在就插入,存在就更新
insert into 表名 values('字段值','字段值',...) on duplicate key update 字段名=字段值,...;
-- 替换插入:其实是先删除再插入
reolace into 表名 values(值列表);

limit用于分页

-- 显示0-7 八个数据
select * from name where 条件 limit 0,8;
-- 显示8-15八个数据
select * from name where 条件 limit 8,8;
-- 显示16-23八个数据
select * from name where 条件 limit 16,8;

联合查询

select * from name1
-- union选项默认distinct
union all/distinct
select * from name2;
------------------------------
-- union中使用order by需加括号
(select * from name1)
union all
(select * from name2);

视图

-- 创建视图
create view 视图名 as select 字段1,2 from 表名;

-- 查看视图
desc 视图名;

-- 查看创建语句
show create table 视图名;

-- 查看数据
select * from 视图名;

-- 修改视图
alter view 视图名 as select 字段1,2 from 表名;

-- 删除视图
drop view 视图名;

-- 单表视图插入数据(必须保证原表中没在视图中的字段可以为NULL),没有在视图中的字段插入数据时为NULL
insert into 视图名 values ();

-- 单表视图删除数据
delete from 视图名 where 条件;
 
-- 多表视图无法插入数据,无法删除数据

-- 单表、多表视图的修改数据
update 视图名 set 字段='xx' where 条件; 

-- 视图算法
-- 将外部的select语句与视图的select语句合并后执行
create algorithm=merge view 视图名字 as select语句

--将视图先执行存成一张临时表,然后再执行select 语句
create algorithm=temptable view 视图名字 as select语句

-- undefined系统根据需要会自动选择,默认merge(效率高)
create algorithm=undefined view 视图名字 as select语句

数据库的备份与还原

KaTeX parse error: Expected '}', got '\t' at position 118: …与字段直接用什么分开,默认的是\̲t̲)}\\ \text{esca…


$$lines格式 \begin{cases} \text{terminated by(行以什么结束,默认是\r\n)}\\ \text{starting by(行以什么开始,默认是’’)} \end{cases}$$
-- 数据的备份,文件在目录不存在才能新增
select 字段列表 into outfile '文件路径/文件名' [fileds格式] [lines格式] from 表名

-- 数据的还原
load data infile '文件路径/文件名字' into table 表名 
[fileds格式] 
[lines 格式];

-- 数据与结构的备份(备份形式以sql语句存在),使用mysqldump.exe备份
mysqldump -hlocalhost -P3306 -uroot -p 数据库名 数据表名,数据表名 >文件路径\文件名

-- 数据与结构的还原
-- 外部还原使用mysql.exe(路径中\)
mysql -hlocalhost -P3306 -uroot -p 数据库名 数据表名,数据表名 <文件路径\文件名

-- 内部还原使用source(路径中/)
mysql>source 文件路径/文件名

事务

-- 开始事务
start transaction;
begin transaction;
-- 执行sql语句
-- 成功提交事务
commit;
-- 失败提交事务回滚
rollback;

触发器
触 发 器 时 间 { before after 触发器时间 \begin{cases} \text{before} \\ \text{after} \end{cases} {beforeafter


触 发 器 时 间 { insert update delete 触发器时间 \begin{cases} \text{insert} \\ \text{update} \\ \text{delete} \end{cases} insertupdatedelete

-- 修改结束符
delimiter 临时符号(///)
	create trigger 触发器名 触发时间 事件类型 on 表名 for each row
begin
	//触发器的内容;
	//可以是各种SQL语句,一般是增删改;
	//流程控制:if,while;
end
临时符号(///)
-- 改回语句结束符
delimiter ; 


-- 查看触发器
show  triggers;

-- 删除触发器
drop  trigger 触发器名;

常用的

  • 查看数据库版本: select version() from dual;
  • 多个字段链接:concat
select concat (id, name) as info from table;
···
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值