Mysql :(一)

顶哥说sql语句其实不难,尤其对于那些英语稍好一些的人来说!

最最最重要的就是搞清楚sql语句的执行顺序!!!数据就像沙子, 语句就是筛子, 沙子按照顺序经过给定的筛子,留下来的就是你要的!!!并不是写在前面的就先执行!!! 如下:

SELECT  *, SUM(pnum)  '商品总数量'  (4)

FROM  products            (1)

GROUP BY  con             (2)

HAVING SUM(pnum) > 200;   (3)

这句sql语句其实是先执行 (1) FROM  products  从products表中筛选所有数据

再执行(2) GROUP BY con 将数据按照con字段进行分组

再执行(3) HAVING  SUM(pnum) > 200 筛选出pnum总数大于200的分组

最后执行(4) SELECT * , SUM(pnum)  将层层过滤的数据显示出来

注意:  顶哥较懒, 下文的sql语句统统小写啦

如遇诸如  :  Incoreect  string   value : .....  之类的报错请通过以下sql语句查看自己的数据库默认编码是否和输入环境的编码一致:

SHOW  VARIABLES  LIKE  'character%';


今天内容:

l  数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库, 表, 列等. 关键字: create , alter , drop 等;

l  数据操作语言:简称 DML(Data Manipulation Language), 用来对数据库中表的记录进行更新. 关键字:insert , delete, update等;

l  数据控制语言:简称 DCL(Data Control Language), 用来定义数据库的访问权限和安全级别,及创建用户;

l  数据查询语言:简称DQL(Data Query Language), 用来查询数据库中表的记录. 关键字:select, from,  where 等;

DDL --database相关操作


create  database  demo;  # 创建名为demo的数据库(默认编码)

create  database  if  not  exists  demo; #  不存在则创建demo数据库

create  database  demo  character  set  'gbk’;     # 创建名为demo gbk编码的  数据库

show  databases;  # 列出mysql服务器中所有的数据库

show  create database  demo;  # 查看demo数据库的定义信息

drop  database demo;  # 删除数据库demo

select  database();  # 查看正在使用的数据库

use  demo;  # 使用demo 数据库

DDL—table相关操作


create table  demo(         # 创建demo表, 指定 id 字段为主键约束,

idint primary key,      #  name 字段为非空约束

name varchar(12)  not null

);

create  table  demo1  like  demo; #  创建demo1表,表结构和demo表相同

show  tables ;  # 查看数据库中所有的表

desc   demo;  #  查看demo表的结构(Tips:为何是desc?  describe是描述的意思!

drop  table  demo; # 删除demo表

drop  table  if  exists  demo; #  demo表存在则删除

alter  table   demo  add  address  varchar(20); # 为demo表增加地址字段

alter  table    demo   modify   address  varchar(30); # 修改表中字段的类型长度;

alter  table   demo   change   address    addr   varchar(30);  # 修改表中字段名;

alter  table   demo   drop   addr; # 删除表中的字段

rename  table  demo  to   dmeo1; # 将demo表重命名为demo1

alter  tabel  demo1  character  set  'gbk'; #将demo1表的编码修改为gbk

DML 相关操作


插入表记录: insert

insert  into  demo(id,  name)  values(1, "song");

insert  into  demo(id)  values(2);  # 无数据字段会使用null

更新表记录:update

update  demo  set  id = 1, name = 'song';  # 将demo表中记录全部更新

update  demo  name = 'hui'  where  id = 2; #  将id为2的记录名字更新为hui

删除表记录

delete  from  demo; #  删除demo表中的所有数据

delete  from  demo  where  name = 'song'; # 删除demo表中name为song的记录

truncate  table  demo;  # 摧毁demo表并重建同结构的表

DQL 相关操作


select  *  from  demo ; #  查询demo表中所有的数据

select  id, name  from  demo; # 查询demo表中id 和 name 列的数据

select  id  as   编号,  name  as  姓名  from  demo  as  学生表; #  使用别名,as 可以省略;

select   distinct  name, age  from  demo; # 去除重复值

select  math + english  总成绩  from  student;  # 从学生表中查询熟悉和英语的总分并使用别名;

select  name , age + 10  from student; # 查询姓名年龄,并将每个人的年龄增加10岁;

select  *  from  student   where   math > 100  or english  > 100; # 查询任意一科超过100的学生;

select  *  from  student   where   name   like   '_宋%宝'; # 查询所有名字第二个字是宋且以宝结尾的学生;

select  *  from  student   where   age > 12  order  by  id  asc,  age   desc; # 查询年龄大于12的按照id升序排序显示,id一样时按照年龄降序排序

select   max(age)  from student; #  查询学生表中年龄最大的

select  *  from  student  where   age  >  18  group  by  sex    having   name is not  null;  #   查询 年龄大于18的按照性别进行分组,且姓名不为空的记录


Tips:  having 和where的区别:

having 是在分组后对数据进行过滤

where 是在分组前对数据进行过滤

having 后面可以使用聚合函数

where 后面不可以使用聚合函数

select   *  from  student  limit  0, 3 ; #  查询索引从0开始,共3条记录

Tips:  起始索引 = (当前页页码数 -1 ) * 每页显示条数

#查询第一页的数据信息

select  *  from  sudent  limit  0, 3;

#查询第二页的数据信息

select  *  from  student  limit  3,  3;

(0)

相关推荐

  • OGG12.1(LINUX) for 11G R2 RAC classical install 经典抽取模式单项同步配置OGG12.1

    博文结构图如下: 一.环境描述以及注意事项1.1 环境简介IP系统Oracle版本OGG版本源端172.16.10.16/36RHEL6.5oracle1120412.1目标端172.16.10.15 ...

  • Python+MySQL随机试卷及答案生成程序

    一.背景 本文章主要是分享如何使用Python从MySQL数据库中面抽取试题,生成的试卷每一份都不一样. 二.准备工作 1.安装Python3 下载地址:https://www.python.org/ ...

  • UC头条:MySQL数据库定时备份到其他电脑

    最近我的一个学弟问了我一个问题,说他要实现一个功能,他老师给他提出来一个问题,让他的项目实现定时备份数据库到其他电脑,确保安全.他就来问我,还好我之前弄过,虽然我是干前端的,哈哈哈,之前学的比较杂. ...

  • Docker定时备份MySQL数据到七牛云

    前言:我Linux服务器安装了docker,docker容器跑了springboot项目,用到了mysql数据库.所以必须准备程序,数据备份功能,万一哪天系统挂了,数据丢了,我可以随时恢复.因为没钱开 ...

  • 面试被问MySQL 主从复制,怎么破?

    一.前言 随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作. 此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求 ...

  • mysql进阶学习二之搭建主从

    前面说了主从复制的原理,现在我们搭建主从结构 1. 提前准备 我准备了两台主机,主节点是远程的centos7,从节点是本机windows 主从复制的原理在上一篇已经说了:主节点中mysql创建一个用户 ...

  • mysql进阶学习三之mycat读写分离和分库分表

    前面已经配置了mysql的主从复制,其实很容易,主节点写入了数据,从节点进行同步,所以写操作使用主节点,读操作使用从节点,这样就有效降低了数据库的压力 但是我们用java程序不可能去连接多个数据源,执 ...

  • VB远程访问MYSQL代码图解

    首先需要安装MySQL Connector/ODBC 地址:http://dev.mysql.com/downloads/connector/odbc/ 根据自己的系统(运行环境: Win7/XP/W ...

  • (9条消息) CentOS 8 设置 MySQL 8 允许远程访问

    (9条消息) CentOS 8 设置 MySQL 8 允许远程访问

  • mysql router是干什么的

    mysql router是干什么的_mysql router是什么 阿依图娜 2021-01-27 18:03:19  44  收藏 文章标签: mysql router是干什么的 版权 工程师小C的 ...

  • MySQL Router 8 详解

    wzy0623 2019-09-03 15:35:32 版权 目录 一.功能介绍 1. 透明路由 2. 元数据缓存 3. 简单重定向 4. MySQL Router 8.0的新特性 二.安装与启动 1 ...