必备sql和表关系及授权

graph LR
执行1[必备sql和授权]
执行2[SQL强化和实践]
执行3[索引和函数以及存储过程]
执行4[Python操作mysql和应用]
执行5[常见SQL语句]
执行6[表关系]
执行7[授权管理]
执行8[一对多]
执行9[多对多]
Mysql --> 执行1
Mysql --> 执行2
Mysql --> 执行3
Mysql --> 执行4
执行1 --> 执行5
执行1 --> 执行6
执行1 --> 执行7
执行6 --> 执行8
执行6 --> 执行9

简要:

  • 必备SQL(八个必备)
  • 表关系
  • 授权

1.必备SQL语句

通过下面这两张表进行SQL语句延申测试

depart表跟info表

create database test default charset utf8 collate utf8_general_ci;

在test数据库创建两个需要关联的表

use test;
create table depart (
id int not null auto_increment primary key,
title varchar(16) not null
)default charset utf8; create table info (
id int not null auto_increment key,
name varchar(16) not null,
email varbinary(32) not null,
age int,
depart_id int
);

插入数据

use test;
insert into depart(title) value ("开发"),("运营"),("销售");
insert into info(name,email,age,depart_id) value("吴佩琦","wupeiqi@live.com",19,1);
insert into info(name,email,age,depart_id) value("张三","zhangsan@live.com",49,1);
insert into info(name,email,age,depart_id) value("李氏","lishi@live.com",9,2);
insert into info(name,email,age,depart_id) value("王五","wangwu@live.com",29,1);
insert into info(name,email,age,depart_id) value("李杰","lijie@live.com",39,3);
insert into info(name,email,age,depart_id) value("超","cao@live.com",49,1);
insert into info(name,email,age,depart_id) value("关羽","guanyu@live.com",49,1);

1.1.条件

根据条件搜索结果

select * from info where id > 1;
select * from info where id = 1;
select * from info where id >= 1;
select * from info where id != 1;
select * from info where id between 2 and 4; -- id 大于2且小于4 select * from info where name = "张三" and age = "49";
select * from info where name = "张三" or age = "49";
select * from info where (name = "张三" or email = "zhangsan@live.com") and age = "49"; select * from info where id in (1,4,6); -- 多个取值
select * from info where name in ('吴佩琦','王五','超'); -- 或者这样除数字外条件需要单引号
select * from info where id in (select id from depart); -- 联合查询info表的id字段跟depart表的所有id字段匹配
select * from info where exists (select * from depart where id = 5); -- exists判断相当于if,如果depart表有id=5的字段成立进行查询,如果depart表有id=5的字段不成立不进行查询
select * from info where not exists (select * from depart where id = 5); -- exists判断相当于取反 -- 不直接查莫一张表,先通过SQL查询到这张表的数据然后再做筛选
select * from (select * from info where id > 5) as T where T.age > 10; -- as T 这个T相当于括号里面查询出来后重新定义出来的临时表
select * from info where info.id > 5; -- where 条件的时候用表名加字段,一般用于多表联合查询时区分info.id

1.2.通配符



如果数据量小可以使用下面的通配符方法的sql进行查询,如果数据量大一般需要工具进行查询,如使用es

select * from info where name like "%王%";  -- %取任意长度的任意字符
select * from info where name like "王%"; -- 匹配后面任意长度的任意字符,如果%在前面的任意字符就不存在
select * from info where name like "%佩琦";
select * from info where name like "吴%琦"; select * from info where email like "__peiqi@live.com"; -- 一个下划线代表一个字符
select * from info where email like "__peiqi_live.com";

1.3.映射

-- max/min/sum
-- 注意少用select * 这种方法在程序里面去查数据,根据需求几列获取几列
select
id,
name,
666 as num, -- 添加一个字段数据,并定义字段名为num
(select max(id) from depart) as mid, -- 定义depart表的id最大值为mid字段数据
(select min(id) from depart) as nid, -- 定义depart表的id最小值为nid字段数据
(select sum(id) from depart) as sid, -- 定义depart表的id的和为sid字段数据
age
from info;
-- 下面这两种查询方式效率比较低程序用的比较少
select
id,
name,
(select title from depart where depart.id=info.depart_id) as x1
from info; select
id,
name,
(select title from depart where depart.id=info.depart_id) as x1,
(select title from depart where depart.id=info.id) as x2
from info;
-- case when then else的使用方法,相当于if,then(如果成立就是什么)
select
id,
name,
case depart_id when 1 then "第一部门" end v1
from info; select
id,
name,
case depart_id when 1 then "第一部门" end v1,
case depart_id when 1 then "第一部门" else "其它" end v2,
case depart_id when 1 then "第一部门" when 2 then "第二部门" else "其它" end v3,
case when age < 18 then "少年" end v4,
case when age < 18 then "少年" else "油腻男" end v5,
case when age < 18 then "少年" when age < 39 then "青年" else "油腻男" end v6
from info;

1.4.排序

-- order by (先查询再进行排序)
select * from info order by age desc; -- 倒序排列
select * from info order by age asc; -- 顺序排列(默认顺序) select * from info order by age asc,id desc; -- 有限安装age进行从小到大,如果age相同则按照id从大到小
select * from info where id > 5 order by age asc,id desc; -- 添加个筛选条件在进行排序
select * from info where id > 10 or info.email like '%guan%' order by age asc,id desc;

1.5.取部分

select * from info limit 5;                       -- 取前五行
select * from info order by id desc limit 3; -- 先排序再取前三行
select * from info where id >5 order by id desc limit 3;
select * from info limit 3 offset 2; -- 从位置2开始,向后获取前3条

1.6.分组

-- group by
select age,max(id),min(id),sum(id) from info group by age;

MySQL数据库SQL语法常规操作的更多相关文章

  1. MySQL的操作数据库SQL语法

    MySQL的操作数据库SQL语法 顺序:操作数据库 > 操作数据库中的表 > 操作数据库中的表的数据 MySQL不区分大小写字母 1. 操作数据库 1.创建数据库 2.删除数据库 3.使用 ...

  2. 数据库-SQL 语法

    数据库-SQL 语法 二十余年如一梦,此身虽在堪惊. 简介:数据库-SQL 语法 一.基础 模式定义了数据如何存储.存储什么样的数据以及数据如何分解等信息,数据库和表都有模式. 主键的值不允许修改,也 ...

  3. MySQL 数据库SQL语句——高阶版本2

    MySQL 数据库SQL语句--高阶版本2 实验准备 数据库表配置: mysql -uroot -p show databases; create database train_ticket; use ...

  4. 我的mysql数据库sql优化原则

    原文 我的mysql数据库sql优化原则 一.前提 这里的原则 只是针对mysql数据库,其他的数据库 某些是殊途同归,某些还是存在差异.我总结的也是mysql普遍的规则,对于某些特殊情况得特殊对待. ...

  5. sql点滴41—mysql常见sql语法

    原文:sql点滴41-mysql常见sql语法 ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename ...

  6. Swift3.0服务端开发(四) MySQL数据库的连接与操作

    本篇博客我们来聊聊MySQL数据库的连接与操作.如果你本地没有MySQL数据库的话,需要你先安装MySQL数据库.在Mac OS中使用brew包管理器进行MySQL的安装是及其方便的.安装MySQL的 ...

  7. MySQL与SQL语句的操作

    MySQL与SQL语句的操作 Mysql比较轻量化,企业用的是Oracle,基本的是熟悉对数据库,数据表,字段,记录的更新与修改 1. mysql基本信息 特殊数据库:information_sche ...

  8. MySQL 数据库SQL语句——高阶版本1

    MySQL 数据库SQL语句--高阶版本 实验准备,数据表配置 mysql -uroot -p show databases; create database train_ticket; use tr ...

  9. 第二百八十一节,MySQL数据库-SQL注入和pymysql模块防止SQL注入

    MySQL数据库-SQL注入和pymysql模块防止SQL注入 SQL注入就是通过SQL语句绕开程序判断,获取到数据库的内容 下面以一个简单的程序登录SQL注入举例: 正常登录 1.数据库有一张会员表 ...

  10. 数据库SQL语法到MySQL实操

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 ...

随机推荐

  1. MAC实用操作记录---使用命令执行文件上传下载解压打包与解包

    1.使用命令执行文件上传下载 https://www.cnblogs.com/sugartang/p/12743470.html 2.提示:打不开xx软件,在 OS X 安装软件打不开提示" ...

  2. BC7-牛牛的字符矩形

    题目描述 牛牛尝试用键盘读入一个字符,然后在屏幕上显示用这个字符组成的 3*3 的矩形. 输入描述 一行读入一个 char 类型的字符. 输出描述 输出这个字符组成的 3*3 矩形. 示例 1 输入: ...

  3. Git入门图文教程(1.5W字40图)🔥🔥--深入浅出、图文并茂

    01.认识一下Git!-简介 Git是当前最先进.最主流的分布式版本控制系统,免费.开源!核心能力就是版本控制.再具体一点,就是面向代码文件的版本控制,代码的任何修改历史都会被记录管理起来,意味着可以 ...

  4. Django框架之drf:8、断点调试,权限、认证、频率组件源码分析,基于APIView编写分页,异常处理

    Django框架之drf 一.断点调式使用 ​ 指,在我们编写代码的时候,程序运行出现报错是无可避免的,当程序 出现报错时,我们需要找到出现报错的代码进行修改,如果时简短的代码很容易就可以找到报错位置 ...

  5. scroll-view滚动导航自动居中

      =>      代码片段:https://developers.weixin.qq.com/s/2fE1QWmE7xFR (复制在微信开发者工具打开) <!-- enable-flex ...

  6. 计算机网络基础06-Email应用

    1 构成组件 邮件客户端 邮件服务器 SMTP协议 Simple Mail Transfer Protocol 1.1 邮件客户端 读写Email消息 和服务器交互,收发消息 1.2 邮件服务器 邮箱 ...

  7. 【Go语言基础】slice

    一.概述 数组(Array)的长度在定义之后无法再次修改:数组是值类型,每次传递都将产生一份副本. 显然这种数据结构无法完全满足开发者的真实需求.Go语言提供了数组切片(slice)来弥补数组的不足. ...

  8. python3使用requests模块发https请求,提示caused by ssl error, can't connect to https url because the ssl module is not available

    Q: python3使用requests模块发https请求,提示caused by ssl error, can't connect to https url because the ssl mod ...

  9. MySQL视图、存储过程、函数、触发器、定时任务、流程控制总结

    视图的增删改查 视图相当于一张只能读的表,不可以修改.当组成视图的表发生数据变化的时候,视图会相对应的进行改变. 存储过程的练习 创建存储过程: create [if not exists] proc ...

  10. Python实战项目6-后端多方式登录接口/手机登录接口

    为开源项目共享代码 步骤: 1先fork开源项目 2clone下来,修改代码,进行提交 3提交pr,等作者同意 Pycharm 使用Git 右键文件会列出Git命令 登录注册功能分析 多方式登录接口: ...