美文网首页
可能是简书最全的MySQL常用语句

可能是简书最全的MySQL常用语句

作者: SailCoding | 来源:发表于2019-10-27 11:26 被阅读0次

在平时开发中主要使用DQL(数据查询语句),但在使用DQL之前,一般的操作\color{red}{**流程**}
 登录数据库  --> 创建数据库  -->  选择数据库 --> 插入(导入)数据 --> 删库跑路(哈哈)
 mysql -uroot -pxxxxx; --> create database sail; --> use sail; --> source D:\sail.sql --> drop databse sail;
还有一些常用操作,如下所示:
    查看所有数据库: show databases;
    查看对应数据库下所有的表:show tablse;
    查看表结构:desc tableName;


SQL分类:

简称 代表关键字
DQL
Data Query Language
select
DML
Data Manipulation Language
insert、 delete 、 update
DDL
Data Denifition Language
create、 drop、 alter
TCL
Trasactional Control Language
commit、 rollback
DCL
Data Control Language
grant、 revoke

    毋庸置疑DQL是最重要的一部分,而这里有很多常用过滤语句,一个select语句的执行过程如下所示:

select 
  * 
from  
  xxxx
where
  xxxx
group by
  xxxx
having
  xxxx
order by
  xxxx

MySQL中的DQL

    每个DQL的执行顺序不可改变,严格遵守以上询句的执行顺序:
1) from:将硬盘上的表文件加载到内存
2) where:将符合条件的数据行摘取出来,生成一张新的临时表
3) group by:根据列中的数据种类,将当前临时表划分成若干个新的临时表
4) having:可以过滤掉group by生成的符合条件的临时表
5) select:对当前临时表进行整列读取
6) order by: 对select生成的临时表,重新排序,生成临时表
7) limit:对最终生成的临时表的数据行,进行分页。
    其中使用到的关键字有:where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数)其中数条件查询使用的最多,其支持的运算符有:

运算符 说明
= 等于
select empno,ename,sal from emp where sal = 5000;
为字符串时使用''或“”
<>或!= 不等于
select empno,ename,sal from emp where sal <> 5000;
< 小于
<= 小于等于
> 大于
>= 大于等于
between … and …. 两个值之间,等同 >= and <=
select ename from emp where ename between “A” and "F";
select empno,ename,sal from emp where sal >= 1600 and sal <= 3000;
is null 为null(is not null 不为空)
select empno,ename,comm from emp where comm = null; (\color{red}×
select empno,ename,comm from emp where comm is null; (\color{red}√
and 并且
or 或者
select * from emp where sal>1800 and (deptno=20 or deptno=30);
in 包含,相当于多个or(not in不在这个范围中)
not not可以取非,主要用在is 或in中
select ename,job from emp where job in ('SALESMAN','MANAGER');
like like称为模糊查诟,支持%或_,%匹配任意个字符,_匹配一个字符
select ename from emp where ename like'M%';

\color{red}注:and的优先级高于or
order by 排序 (order by asc/order by desc)
    系统默认升序 oder by asc
    如果存在 where 子句,那么 order by 必须放到where之后。
group by 分组查询
    group by 的DQL询句中,select 询句后面只能能跟分组函数+参与分组的字段
    如果使用了 order by ,order by 必须放到 group by后面;
    提到了group by,则需要提提他的号搭档having,having对分组的数据再迚行过滤;
下面看下having和where的关系
    1) where 和 having 都是为了完成数据的过滤,它们后面都是添加条件;
    2) where 是在 group by之前前完成过滤;
    3) having 是在 group by 之后完成过滤;
为了使用方便,MySQL为我们提供了一些常用函数,如下表所示:

函数 含义
Lower 转为小写
select lower(ename) as ename from emp;
upper 转为大写
select upper(ename) as ename from emp;
substr 取子串(substr(被截取的字符串,起始下标,截取的长度))
select substr(ename,2,1) from emp;
length 取长度
select ename,length(ename) as nameLength from emp;
trim 去空格
select * from emp where job = trim(' manager ');
str_to_date 将字符串转换成日期
select ename,hiredate from emp where hiredate = str_to_date(‟02-20-1981‟,‘%m-%d-%Y’ );
date_format 格式化日期
format 设置千分位
round 四舍五入
rand() 生成随机数
Ifnull 可以将null转换成一个具体值
select ename,ifnull(comm,0) from emp;
case…when…then…else…end case job
when ‘MANAGER’ then sal * 1.1
when ‘SALESMAN’ then sal * 1.5
else sal
end case使用

注:count()与count(filed的区别*
    1、 count(*)表示叏得当前查诟表所有记录
    2、 count(字段名称),丌会统计为 null 的记录
多表的查询
    公司中表的结构一般满足三级范式,这也导致数据不是存储在一张表中,而是在多张表中,所以会出现连接查询,也称为跨表查询。提到连接查询就不得不提到笛卡尔积。主要有:
内连接,关键字为inner(可忽略)
外连接
    左连接,关键字 left join
    右连接,关键字 right join
注:连接过程中不推荐使用where
        select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;(\color{red}×)
多张表的查询语法:

select
          xxxx
from
          A表
join
          B表
on
          连接条件1
join
          C表
on
          连接条件2;

子查询
还有一种经常使用的查询,称为子查询,常用结构如下:

from …(select)…
where …(select)…

示例:
select ename,sal from emp where sal > avg(sal);                (\color{red}×)
select ename,sal from emp where sal > (select avg(sal) from emp);(\color{red}√)
联合查询,关键字为union
分页查询,关键字limit,如查询i页时,使用如下:

limit (i-1)*pageSize, pageSize

MySQL中的DML

DML在平时也会使用到,但要求不高。
首先,建表,在建表前先连接下字段类型

数据类型 占用字节数 描述
char char(n) 定长字符串,存储空间大小固定
使用 char(2)来表示类型
VARCH AR(3)表示存储的数据长度不能超过3个字符长度
varchar varchar(n) 变长字符串,存储空间等
数据空间
叧包含英文字符的字符串
CHAR(3) 表示存储的数据长度丌能超过3个字符长度
int 4 个字节 表示整型,
比如自增 ID 和表示數量
INT(3)表示最大可以存储999
bigint 8 个字节 表示长整型,比如自增(数量比较大的情况下)
float(有效数字位数,小数位) float(有效数字位数,小数位) 数值型
FLOAT(7,2)表示7个有效数字,2个有效小数位
double(有效数字位数,小数位) double(有效数字位数,小数位) 数值型
DOUBLE(7,2)表示7个有效数字,2个有效小数位
date 8 字节 表示日期和时间
实际开发中,常用字符串代替日期类型
BLOB Binary Large Object (二进制大对象)专门存储图片、视频、声音等数据
CLOB Character Large Object (字符大对象)可存储超大文本,可存储4G+字符串
其它….. 其它….. 其它…..
语句 注意点
create table t_dg_student (
  id INT(10) not null,
  name varchar(256),
  sex(1),
  birth DATE,
  email VARCHAR(128)
  unique(name, email),
  constraint t_user_pk primary key(id)
);
1) 表格名称最好以 t_ 戒 tbl_ 开始,增强可读性
2) VARCHAR长度最好是2的倍数,方便存储中文
3)约束 not null,
4)unique(name, email),也可以写到字段后
5)约束名称可以不写constraint t_user_pk
drop table t_fck; 库中不存在, 则会报错
drop table if exists t_fck;
insert into t_student(name,email) values('yangwei','ywdreamgo@163.com');
insert into t_student(no,name,birth) values(1,'Jack',str_to_date('1980-10-19','%Y-%m-%d'));
插入
show create table t_student; 查看建表语句
create table emp1 as select * from emp; 复制表
alter table t_student add tel varchar(10); 新增字段
alter table t_student modify tel varchar(20); 修改字段类型
alter table t_student drop tel; 删除字段
INSERT INTO tableName1 SELECT columnName1,columnName2,… FROM tableName2; 将查询结果查到表中
update t_student set name = 'zhangsan',email = 'zhangsan@126.com' where no = 3; 修改数据
delete from t_student where no = 3; 删除数据
CREATE USER username IDENTIFIED BY 'password'; 创建用户
grant all privileges on dbname.tbname to 'username'@'login ip' identified by 'password' with grant option; 1) dbname=表示所有数据库
2) tbname=
表示所有表
3) login ip=%表示任何ip
4) password为空,表示不需要密码即可登录
5) with grant option; 表示该用户还可以授权给其他用户

还有外键的概念,现在使用的不多
注:常用系统表在information_schema中
主键会自动添加索引

相关文章

  • 可能是简书最全的MySQL常用语句

    在平时开发中主要使用DQL(数据查询语句),但在使用DQL之前,一般的操作:登录数据库 --> 创建数据库  --...

  • BigData-MySQL总结大全(一)苏暖人

    BigData之MySQL总结大全 MYSQL常用的基本语句 MYSQL常用的基本语句 例:SELECT TOP ...

  • MySQL常用语句

    MySQL常用语句 tags: MySQL 常用语句 语法 随便写的标签 建表 insert 语句 msyql 把...

  • MySQL常用语句

    本篇主要是归纳一下最常用、入门的 MySQL 语句。以安装完 MySQL 登录为起点,简单总结一下常用的几条语句。...

  • MySQL的SQL语句执行过程

    理解MySQL当中的SQL语句 MySQL的sql语句和我们常用的编程语句一样,都是我们输入文本,编译器编译或者解...

  • MySQL的函数认识

    理解MySQL当中的SQL语句 MySQL的sql语句和我们常用的编程语句一样,都是我们输入文本,编译器编译或者解...

  • Mysql 语句

    Mysql 语句 Mysql 语句以考察各种常用连接为重点 几种常见连接 内连接(INNER JOIN):两个表都...

  • MySQL语法模板

    本系列文章主要归纳MySQL的SQL语句和常用的函数。 SQL语句:主要分为常用的,show,表、索引,视图,函数...

  • MYSQL | 常用mysql语句

    1、创建数据库 2.删除数据库 3.选择数据库 4.创建表 注意: 5.删除数据表: 6.向数据表插入数据 插入所...

  • mysql(二)——用户管理、数据备份、常用sql语句

    13.4 mysql用户管理13.5 常用sql语句13.6 mysql数据库备份恢复 13.4 mysql用户管...

网友评论

      本文标题:可能是简书最全的MySQL常用语句

      本文链接:https://www.haomeiwen.com/subject/yrypvctx.html