MySQL常用语句总结

创建数据库
create database 数据库名

创建表
create table 表名(
列1 类型 [约束],
列2 类型 [约束],

);

查看表结构
desc 表名

alter 修改
修改表结构,为表新增一列
alter table 表名 add 列名 列的数据类型

修改表结构 , 修改列名
alter table 表名 change 旧列名 新列名 新列的数据类型

修改表结构 , 更改列的数据类型
alter table 表名 modify 列名 数据类型 ;

修改表结构 , 删除列
alter table 表名 drop 要删除的列名

更改表名
rename table 旧表名 to 新表名;

更改分类表的编码格式
alter table 表名 character set 要修改的编码格式;

删除数据库
drop database 数据库名
删除表
drop table 表名

插入 insert
向表中插入数据的公式 此时values后括号中的数值要和表结构中的数值的个数,类型,顺序一一对应
insert into 表名 values (数值1 ,数值2 ,数值3 ,…);

此时values后括号中的数值要和表名后括号中的数值的个数,类型,顺序一一对应
insert into 表名(列1,列2,列3,…)values (数值1 ,数值2 ,数值3 ,…);

updete 修改
为了不把表中的数据全部修改成一样的数据,我们要加上条件语句where
update 表名 set 列1 = 数据1 ,列2 = 数据2 ,…where id = 1;

delete 删除
为了不把表中的数据全部删除,我们要加上条件语句where FROM关键字不能省略
delete from 表名 where id = 1;

查询用户权限
show grants for 用户名; eg: SHOW GRANTS FOR ‘root’@‘localhost’;

赋予权限 GRANT
将查询表的权限赋予用户
grant select on * . * to 用户名;

收回权限 revoke
将查询表的权限从用户收回
revoke select on * . * from 用户名;

查询表的所有内容 其中*代表通配符 FROM不能省略
select * from 表名;

复制表
create table 新表名 as (select * from 旧表名);

primary key 创建主键 not null 非空约束 unique 唯一约束

单列查询
select 列名 from 表名;

多列查询
select 列名1,列名2 , . . . from 表名;

查询表中所有字段
select * from 表名;

distinct消除冗余
select distinct 列名 from 表名;

使用别名
select 列名1 as 别名1 ,列名2 as 别名2 from 表名;
select 列名1 别名1 ,列名2 别名2 from 表名;

算术运算符(+、-、、/、%) gprice 单价 gnum 数量 gid 编号 box 表名
select 列名,列名
列名 from 表名;SELECT gname 商品名称, gprice*gnum 总价格 FROM box;
SELECT (gprice - (SELECT gprice FROM box WHERE gid = 2)) 差额 FROM box WHERE gid = 1;

逻辑运算符(=、<>、!=、<、<=、>、>=)
select*from 表名 where 列名 <>要判断的信息;
SELECT * FROM box WHERE gclass <> ‘手机’; 查询商品表中商品不是手机的商品信息

关系运算符(and or not)
select * from 表名 where 判断条件 and 判断条件 ;
SELECT * FROM box WHERE gclass = ‘手机’ AND gprice >5000; 查询商品表中商品是手机并且价格大于5000

select * from 表名 where 判断条件 or 判断条件 ;
SELECT * FROM box WHERE gclass = ‘手机’ OR gprice >5000; 查询商品表中商品是手机或者价格大于5000商品信息

select * from 表名 where not 判断条件 ;
SELECT * FROM box WHERE NOT gclass = ‘手机’; 查询商品表中商品不是手机的商品信息

group by分组
select 列名1 , count(列名1) from 表名 group by 列名1;
SELECT job 职位, COUNT(job) 个数 FROM newemp GROUP BY job;

having分组条件
select 列名 ,count(列名) from 表名 group by 列名 having count(列名)>范围;
SELECT job 职位, COUNT(job) 个数 FROM newemp GROUP BY job HAVING COUNT(job) > 2;

order by 排序
排序order by(asc升序,desc降序)
select * from 表名 order by 列名1 asc , 列名2 desc;

limit分页
分页
每一页显示多少条数据
显示的第几页
n:当前页码
m:每页显示的数据
select * from 表名 limit (n-1)*m,m;
select * from 表名 limit 3,3;

in操作
in指的是根据一个指定的范围进行数据查询
select * from 表名 where 列名 = 2 , 列名 = 4, 列名 = 6;
select * from 表名 where 列名 in (2,4,6);

范围操作
between…and的主要功能是进行范围的查询
select * from 表名 Where 字段|数值 between 最小值 and 最大值;
select * from 表名 Where 字段|数值 列名 >= 最小值 and 列名 <= 最大值;

模糊查询:like
like可以实现数据的模糊查询操作,如果要想使用like则必须使用如下的两个匹配符号:
“_”:匹配任意的一位符号;
“%”:匹配任意的符号(包括匹配0位、1位、多位)
select * from 表名 where 列名 like ’ % 任意字 % ’ ;

多表

where子句多表查询
不加where条件,会有很多错误数据
select * from 表名1 , 表名2 where 表名1 . 列名1 = 表名2 . 列名2;

join子句多表查询
使用内连接,可以查询出两个表中的所有正确内容
select * from 表名1 inner join 表名2 on 表名1 . 列名1 = 表名2 . 列名2;

内连接(INNER JOIN)
使用内连接,可以查询出两个表中的所有正确内容
select * from 表名1 inner join 表名2 on 表名1 . 列名1 = 表名2 . 列名2;
INNER JOIN 内连接 -> 交集 on
SELECT * FROM box b INNER JOIN boxs s ON b.id = s.id;

左外连接(LEFT JOIN)左外连接会显示两个表都有的数据以及左表中的全部数据
select * from 表名1 left join 表名2 on 表名1 . 列名1 = 表名2 . 列名2;
– LEFT JOIN 左外链接 on
SELECT * FROM box b LEFT JOIN boxs s ON b.id = s.id;

右外连接(RIGHT JOIN)右外连接会显示两个表都有的数据以及右表中的全部数据
select * from 表名1 right join 表名2 on 表名1 . 列名1 = 表名2 . 列名2;
– RIGHT JOIN 右外链接 on
SELECT * FROM box b RIGHT JOIN boxs s ON b.id = s.id;

全外连接(FULL JOIN)
注意:mysql数据库暂时不支持全外连接,但是我们可以通过左外连接和右外连接的集合模拟全外连接
select * from 表名1 left join 表名2 on 表名1 . 列名1 = 表名2 . 列名2;
union
select * from 表名1 right join 表名2 on 表名1 . 列名1 = 表名2 . 列名2;
– 全外连接 FULL JOIN mysql 不支持全连接 但可以模拟全连接
SELECT * FROM box b LEFT JOIN boxs s ON b.id = s.id
UNION
SELECT * FROM box b RIGHT JOIN boxs s ON b.id = s.id;

Learn various commercial and open source products that perform SQL on Big Data platforms. You will understand the architectures of the various SQL engines being used and how the tools work internally in terms of execution, data movement, latency, scalability, performance, and system requirements. This book consolidates in one place solutions to the challenges associated with the requirements of speed, scalability, and the variety of operations needed for data integration and SQL operations. After discussing the history of the how and why of SQL on Big Data, the book provides in-depth insight into the products, architectures, and innovations happening in this rapidly evolving space. SQL on Big Data discusses in detail the innovations happening, the capabilities on the horizon, and how they solve the issues of performance and scalability and the ability to handle different data types. The book covers how SQL on Big Data engines are permeating the OLTP, OLAP, and Operational analytics space and the rapidly evolving HTAP systems. You will learn the details of: Batch Architectures ―an understanding of the internals and how the existing Hive engine is built and how it is evolving continually to support new features and provide lower latency on queries Interactive Architectures―an understanding of how SQL engines are architected to support low latency on large data sets Streaming Architectures ―an understanding of how SQL engines are architected to support queries on data in motion using in-memory and lock-free data structures Operational Architectures―an understanding of how SQL engines are architected for transactional and operational systems to support transactions on Big Data platforms Innovative Architectures―an exploration of the rapidly evolving newer SQL engines on Big Data with innovative ideas and concepts Table of Contents Chapter 1: Why SQL on Big Data? Chapter 2: SQL-on-Big-Data Challenges & Solutions Chapter 3: Batch SQL—Architecture Chapter 4: Interactive SQL—Architecture Chapter 5: SQL for Streaming, Semi-Structured, and Operational Analytics Chapter 6: Innovations and the Road Ahead
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值