mysql命令汇总

最近花差不多一周,零零散散地读完了《mysql必知必会》,回过来复习一遍,再对里面的命令总结一哈。

连接数据库

 1. 登录数据库 shell命令:
	mysql -u root -p //输入密码就OK
 2. 显示数据库 mysql命令:
	show databases; 
 3. 选择数据库:
 	use 数据库名;
 4. 显示表:
 	show tables;
 5. 显示列:
 	desc 表名; 
 	show column from 表名 //和上面等价

简单选择-select(distinct,limit,as,desc)

 1. 选择多行:
 	select * from 表名; //选择所有记录
 	select a1,a2 from表名; //选择特定的列
 2. 选择不同的行:
 	select distinct a1 from 表名; //a1相同的合并成一个
 	select distinct a1,a2 from 表名; //a1,a2任一不同都显示
 3. 取前行-limitselect * from 表名 limit 3; //显示前三行
 	select * from 表名 limit 2 offset 3; //从第3行(第一行为0)开始取2个
 4. 取别名-asselect b1.a1 from 表名 as b1;
 5. 排序-descselect a1,a2 from 表名 order by a1 desc,a2;//先按a1逆序,a1相同的行按a2正序,默认大小写一样

过滤数据-where(and,or,in,not)

 1. and or
	select * from 表名 where a1=2 and(or) a2=1; //先处理and 再处理or,尽量加括号
 2. between
 	select * from 表名 where a1 between 2 and 5; //一般包含两端值[2,5]的闭区间
 3. in
 	select * from 表名 where a1 in (2,5); //包含2,5,速度比or快,还能包含其他select子句
 4. null
 	select * from 表名 where a1 is not null; //非空,与0、空字符串和空格不同

通配符like和正则表达式regexp

 1. like和通配符% _匹配
	select * from 表名 where a1 like '2%'; //%表示任意数量的任意字符
	select * from 表名 where a1 like '2_'; //_表示一个任意字符
	//这一般要注意字符前后空格,采用Ltrim和Rtrim和trim(去除左右空格)
 2. regexp和正则表达式. or [] * +binary(区分大小写)
	select * from 表名 where a1 regexp binary '2'; //只要包含2都选出来,binary用来区分大小写
	//只写regexp后面的
	'2|3'//或
	'[123]s' //匹配多个字符之一  1或2或3 + 's' [^12]排除1或2
	'[1-5]' '[a-c]' //范围
	'\\\'   '\\n'  //特殊字符前面两个\\
	'{n,m}' \\前面那个字符出现n-m次
	'^' //文本的开始 $文本的结尾
like和regexp的区别在于,like关注的是列,而regexp关注的列值。如果匹配项在列值中like找不到,最明显的例子,'ha' like必须列值为ha才匹配,而regexp列值里只要有ha就匹配。hahaha这个like就匹配不了

拼接concat()、函数abs()avg()sum()min()max()

	upper() lower() //大小写转换
	length() locate() //字符串长度
	soundex() //发音相似
	这里面函数基本忽略null

在这里插入图片描述在这里插入图片描述在这里插入图片描述

过滤分组group by和having,以及子句顺序

 1. 纵向统计 with rollup
	select coalesce(a1,'总个数') as a1, count(*) from 表名 group by a1 with rollup; //coalesce是这一列里面的列值为a1对应,如果没有则为后一个。with rollup是纵向统计分组后的结果
 2. 分组过滤 having
	select count(*) from 表名 group by a1 having count(*)>2; 
 3. 子句顺序
	select  from where group-by having order-by limit

联结表 join

 1. 内部联结inner join或者where on
	select * from1 inner join2 on1.id=2.id; //取交集,会出现重复的列,例如表1,2的id都会列出来
 2. 自然联结
 	select (列出所有需要的列,也就是说id只出现一次) from1,表2; //自然联结是内部联结的一种特殊情况,即相同的列只出现一次,将所有需要的select列都列出来,防止相等的列同时出现
 3. 外部联结left-join right-join
 	select a1,a2,b1,b2 from1 left join2 on1.id=2.id; //left是以左表为准,右表有就出现;right是右表都出现,左表有就出现。

组合查询union

 1. 多子句union union-all
	select a1 from1 where a3<102 union select a1 from1 where a2<10; //必须包含相同的列,union隐藏相同的行,union all显示所有行,order by只能有一个,出现在最后一个子句

插入insert 更新update 删除delete

update和delete弄之前用select看看where对不对

 1. 插入insert-into
 	insert into 表名(a1,a2) values(1,'2'); 
	insert low_priority into 表名(a1,a2) values(1'2'),(2,'4'); //low_priority降低优先级,先查询完所有的再插入。
 2. 利用insert as复制表
	create table 新表名 as select * from13. 更新update
	update ignore table set a1='2' where a2=4; //一定要加where要不全更新了,ignore多条更新时忽略错误
 4. 删除delete truncate
 	delete from 表名 where a1='2'; //delete删除行,可rollback
 	truncate table 表名;
 	delete from 表名; //truncate 删除表再重建,速度快

建表create-table 更新alter 删除drop table


 1. 创建create
 	create table 表名 if exists
 	(
 		id bigint not null auto_increment, //select last_insert_id()可知道最后插入的id,auto_increment 自增id
 		name char(50) not null,
 		age int null default 1, //默认1
 		primary key(id)foreign key(for_id) references for_table_name(for_id)
 	)enging=innodb; //引擎innodb只支持事物可靠,myisam只支持全文本搜索速度快,memory 存在内存临时表与myisam相似,外键不能跨引擎
 2. 更新表 alter
 	alter table 表名
 	add  constraint yueshu_id //外键约束名
 	foreign key(for_id) references for_table_name(for_id); //更新表一般都是针对外键添加和删除
 3. 删除表 drop
 	drop table 表名;
 4. 重命名 rename
	rename table 原表名 to 新表名; 

 	

数据类型

名称类型说明
INT整型4字节 ±22亿的范围
BIGINT长整型8字节 ±922亿
REAL浮点型4字节浮点数,±10^38
DOUBLE浮点型8字节浮点,±10^308
DECIMAL(M,N)高精度小数DECIMAL(20,10)20位中10位小数
CHAR(N)字符串固定长度N,只能存长度N的字符串
VARCHAR(N)可变字符串可变长度,最大为N,可取0-N位
BOOLEAN布尔True False
DATE日期1995-08-24
TIME时间11:30:21
DATETIME日期时间1995-08-24 11:30:21

视图view

不能重名,若使用时用的order-by会把视图里的order-by覆盖,不能索引,能和表一起用。

 1. 创建视图 create-view
	create view 视图名 as 
	select * from 表名; //视图是对mysql语句进行封装
 2. 删除视图 drop-view
 	drop view 视图名;
 3. 替换视图 replace
 	create or replace view 视图名; //没有同名的则创建,否则覆盖
 4. 查看视图语句
 	show create view 视图名;

存储过程procedure 游标cursor

相当于函数,注意函数里用; 如果在命令行里输入要将别的字符如//作为语句结束标志。
delimiter // 用//代替;作为语句结束标志
游标只能在存储过程中用


 1. 创建存储过程,包括循环fetch
	create procedure 过程名(
	in p0 bigint, //输入值
	out p1 decimal(8,2) //输出值
	)
	begin
	declare 游标名 cursor // 记录后面select中的每一行,自动加一
	for 
	select count(*) from 表名;
	
	declare down boolean default 0; //循环标志位
	declare continue handler for sqlstate '02000' set donw 1; // 02000是循环结束的标志
	open 游标名 //打开游标
	repeat //循环开始
		fetch 游标名 into p1; //将游标中的值,赋值给输出变量p1
	until done end repeat; //循环结束
	close 游标名
	end; //参数只能是数,不能是多行,多列
 2. 使用过程call
 	call 过程名(
 	@变量名1,
 	@变量名2
 	);
 	select @变量名2; //查看输出值
 3. 删除从存储过程
	drop procedure 过程名;
 4. 查看所有存储过程信息 show
 	show procedure status;
 5. 查看存储过程创建语句
 	show create procedure 过程名 like 'asd'; //加like可以指定输出

触发器 trigger

触发器在表内的,表内不可同名,只能对delete insert update使用

 1. 创建触发器
	create trigger 触发器名 after insert on 表名
	for each row select '添加了' //这样每次插入后,都会打印出 添加了,如果是before触发器,如果触发器失败了,不执行后面的命令
 2. insert 触发器
	create trigger 触发器名 after insert on 表名
	for each  row select new.num; //new为虚拟表,表示被插入的行,before触发器可以被更新,在auto_increment中执行前为0
 3. delete 触发器 和 begin-end语句
 	create trigger 触发器名 before delete on 表名
	for each row 
	begin 
		insert into 另一个表(a1,a2) values(old.a1,old.a2);
	end; //before触发器可实现删除前备份,old表示删除的行,好处是,如果转存失败则不删除。
 4. update触发器
 	create trigger 触发器名 before insert on 表名
 	for each row set new.a1=upper(new.a1); //可以用old访问更新之前的,new访问更新之后的。

事物处理 start transaction

一般情况mysql执行完一个语句会自动提交,要用这个一般就要关闭自动提交
set autocommit=0; //这个是针对每个连接也就是客户端,而不是服务器


 1. 事物开始start 提交commit
 	start transaction
 	delete from 表名 where a1='2';
 	commit;
 2. 事物回滚
	start transaction
	savepoint delete1;
	delete from 表名 where a1='2';
	rollback to delete1; //回滚到保留点delete1,如果没有则回到start之前,rollback和commit之后保留点自动释放或者,release savepoint 手动释放 

控制访问和服务器管理


 1. 查看用户名库
 	use mysql;
 	select user from user;
 2. 创建带密码的用户名
 	create user 用户名 identified by paasword('密码'); //paasword函数散列表加密方式
 3. 重命名 rename
 	rename user 旧用户名 to 新用户名;
 4. 删除 drop
 	drop user 用户名; //要先删除权限 revoke
 5. 权限 grant
 	show grants for 用户名; //查看有多少权限
 	grant select,delete,insert on 数据库名.* to 用户名; //给这个用户赋予查询这个数据库所有表的权限 逗号可多次授权
 	revoke select on 数据库名.* to 用户名; //删除权限,注意删除数据库或表,但用户对这个名的权限不会删除,如果再重建,用户对这个数据库或表,还有权限
	grant-all revoke-all 赋予它整个服务器权限
	on 数据库名.* 这个数据库权限
 	on 数据库名.表名 特定的表
 6. 设置和改密码
 	set password for 用户名 = password('密码');
	set paasword = password('密码');

数据库维护


 1. 查看键是否正常 analyze
 	analyze table 表名;
 2. 检查状态 check changed
 	check table 表名; //检查多种问题
 	/*
 	changed table 表名; //查看自上一次检查后修改的表
 	extended table 表名; //最彻底检查
 	fast table 表名; //检查为正常关闭的表
 	medium table 表名; //检查所有被删除的链接和键校验
 	quick table 表名; //快速扫描
*/
 3. 查看语句执行顺序explain
 	explain select * from 表名; //查看后面语句的执行情况

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值