Mysql自学之路-高级1

目录:

  1.CREATE DATABASE 创建数据库

  2.CREATE TABLE 创建数据表

  3.INSERT INTO SELECT 把一个表中的数据拷贝到另一个表中

  4.LIMIT 返回记录行

  5.BETWEEN AND 操作符

  6.AS 对表,列起别名

  7.JOIN 用于连接两个表或者多个表行

    1.INNER JOIN :如果表中至少有一个匹配,则返回行

    2.LEFT JOIN:即使右表中没有匹配,也从左表返回所有行

    3.RIGHT JOIN:即使左表中没有匹配,也从右表返回所有行
    
    4.FULL JOIN:FULL OUTER JOIN 关键字返回左表和右表中所有的行。如果左表中的行在右表中没有匹配或者右表中的行在左表中没有匹配,也会列出这些行
  8.UNION 连接两个或多个SELECT 语句结果集

实操:

1.CREATE DATABASE 建库

CREATE DATABASE BOKEYUAN;-- 建立一个名字为BOKEYUAN的数据库

2.CREATE TABLE 建表

 USE BOKEYUAN;-- 使用新建的数据库
CREATE TABLE MYTABLE -- 建立一个名字为MYTABLE的表
(
ID INT(4) PRIMARY KEY COMMENT '序号-唯一键' ,
NAME VARCHAR(255) NOT NULL COMMENT '网站名称',
URL VARCHAR(255) UNIQUE COMMENT '网址',
ALEXA INT(5) COMMENT '访问量',
COUNTRY CHAR(20) COMMENT '网站所属国家'
);

3.INSER INTO SELECT

  说明:上面我们已经创建好了表结构,但是还没有插入数据,那么前面基础部分已经写过插入数据的SQL语句,所有这部分我们换种方法来实现插入数据,其实是拷贝其他表的数据

  实例1:

  假设MYTABLE表不存在,我们可以使用下面的方法来拷贝其他表的结构和数据(因为我们用到的是相同的表数据,所以我会考虑这个方法,如果你是新的表只能先建表再插入数据)

 -- 假设我们的websites 表在MYDATABASE数据库中
CREATE TABLE MYTABLE SELECT * FROM MYDATABASE.WEBSITES;

  实例2:

  我们需要表MYTABLE已经存在,那么上面这个表已经建立好了,那么我们可以利用INSERT INTO SELECT语句直接插入数据(这里也是拷贝websites中的数据)

INSERT INTO MYTABLE SELECT * FROM MYDATABASE.WEBSITES;

  实例3:

  插入某一列数据

-- 只插入某一列数据

INSERT INTO MYTABLE(NAME)
SELECT NAME FROM MYDATABASE.WEBSITES;

4.LIMIT

  说明:返回记录行,上面的SQL执行完后我们会生成下面的数据表

# ID, NAME, URL, ALEXA, COUNTRY
'', 'Google', 'https://www.google.cm/', '', 'USA'
'', '淘宝', 'https://www.taobao.com/', '', 'CN'
'', '菜鸟教程', 'http://www.runoob.com/', '', 'USA'
'', '微博', 'http://weibo.com/', '', 'CN'
'', 'Facebook', 'https://www.facebook.com/', '', 'USA'
'', '百度', 'http://www.baidu.com', '', 'ZG'

  实例1:

-- 获取前3行数据 SELECT * FROM MYTABLE LIMIT 3;

-- 获取3,4,5行数据
SELECT * FROM MYTABLE LIMIT 2,3;

5.BETWEEN AND

  说明:配合WHERE使用的查询条件语句,下面是3种实现获取1到3行数据的方法,但是总的来说实例1比较方便,有逻辑性,且简单易于理解

  实例:

 -- 获取1到3行的数据
SELECT * FROM MYTABLE WHERE ID BETWEEN 1 AND 3;

  实例2:

 -- 获取1到3行数据还可以用WHERE IN 来实现
SELECT * FROM MYTABLE WHERE ID IN (1,2,3);

  实例3:

 -- 获取1到3行数据另一种实现
SELECT * FROM MYTABLE WHERE ID < 4;

6.AS 操作符

  说明:给列,表起别名

  实例1:

 -- 对列起别名
SELECT NAME AS '名字', URL AS '网址' FROM MYTABLE;

  实例2:

 -- 合并2个列,起别名 需要CONCAT关键字
SELECT NAME AS '名字', CONCAT(URL,COUNTRY) AS '网站国家' FROM MYTABLE;

  实例3:

-- 对表起别名,可以用别名来访问字段元素

SELECT M.ID,M.NAME,M.COUNTRY FROOM MYTABLE AS M;

7.JOIN

  说明:连接两个表,分左连接,右连接和全连接,这里我们还需要另一个表,假设表为ACCESS_LOG,结构如下:

# aid, site_id, count, date
'', '', '', '2016-05-10'
'', '', '', '2016-05-13'
'', '', '', '2016-05-14'
'', '', '', '2016-05-14'
'', '', '', '2016-05-14'
'', '', '', '2016-05-15'
'', '', '', '2016-05-15'
'', '', '', '2016-05-16'
'', '', '', '2016-05-17'

  实例1:

-- INNER JOIN 这里我们把MYTABLE看作左表ACCESS_LOG为右表,下面的sql语句会返回满足条件的行,可以想象成集合中两个集合的交集
1 SELECT M.*,A.SITE_ID FROM MYTABLE AS M
INNER JOIN ACCESS_LOG AS A
ON M.ID = A.SITE_ID
ORDER BY M.ID;

  实例2:

 -- 左连接,会返回所有左表的行,如果没有匹配也会返回
SELECT M.* FROM MYTABLE AS M
LEFT JOIN ACCESS_LOG AS A
ON M.ID = A.SITE_ID
ORDER BY M.ID;

  实例3:

 -- 右连接,返回满足条件的所有右表的行
SELECT * FROM MYTABLE AS M
RIGHT JOIN ACCESS_LOG AS A
ON M.ID = A.SITE_ID
ORDER BY A.SITE_ID;

  实例4:

 --全连接
SELECT M.name, A.count, A.date
FROM MYTABLE AS M
FULL OUTER JOIN access_log
ON M.id=A.site_id
ORDER BY A.count DESC;

8.UNION

  说明:操作符用于合并两个或多个 SELECT 语句的结果集。注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

假设存在表MYSOFTW

# id, soft_name, url, country
'', 'QQ APP', 'http://im.qq.com/', 'CN'
'', '微博 APP', 'http://weibo.com/', 'CN'
'', '淘宝 APP', 'https://www.taobao.com/', 'CN'

  实例1:

 -- 筛选全部的国家,不包括重复的数据
SELECT M.COUNTRY FROM MYTABLE AS M
UNION
SELECT W.COUNTRY FROM MYSOFTW AS W;

  实例2:

-- 查询国家为“cn”的所有网站和软件
SELECT M.URL ,W.COUNTRY FROM MYTABLE AS W
WHERE M.COUNTRY = 'CN'
UNION
SELECT S.APP_NAME,A.COUNTRY FROM MYSOFTW AS S
WHERE S.COUNTRY = 'CN';

总结:今天的内容有点多,但是感觉还是挺简单的,俗话说孰能生巧,多做多写多练,前面所有的SQL语句都比较简单化,因为没有什么实际意义,只是为了学习,工作当中的SQL语句都比较复杂,一个复杂的SQL语句都是简单的几个语句结合在一起的,只要用心梳理思路都不在话下。后面还有一些内容,学完再分享!如果有错误的地方留言指出, 加油!YES I CAN!

MySql 学习之路-高级1的更多相关文章

  1. MySql 学习之路-高级2

    目录: 1.约束 2.ALTER TABLE 3.VIEW 1.约束 说明:SQL约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止,约束可以在建表是规定,也可以在建表后规定,通 ...

  2. MySQL学习之路(一)——初涉MySQL。

    MySQL学习之路(一) 1.1MySQL的概述 MySQL由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一个开源的关系型数据库管理系统. MySQL分为社区版和企业版. 1 ...

  3. MySql 学习之路-基础

    Mysql 自学之路 本文包含基础部分与高级部分 一.基础 数据库操作 Show databases:显示所有的数据库 Show tables: 显示所有的数据库表 Use databasename: ...

  4. mysql学习之路_高级数据操作

    关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...

  5. MySQL学习笔记_9_MySQL高级操作(上)

    MySQL高级操作(上) 一.MySQL表复制 create table t2 like t1;               #复制表结构,t2可以学习到t1所有的表结构 insert into t2 ...

  6. mysql学习之路_事物_存储过程_备份

    数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...

  7. MySQL学习笔记_10_MySQL高级操作(下)

    MySQL高级操作(下) 五.MySQL预处理语句 1.设置预处理stmt,传递一个数据作为where的判断条件 prepare stmt from "select * from table ...

  8. mysql学习之路_基础知识

                    Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数 ...

  9. MySQL学习之路(1):SQL脚本语言

    使用MySQL数据库,首先安装MySQL数据库,本文所有SQL脚本在MySQL上测试和执行. 安装Mysql服务器:安装Mysql workbench客户端,可以以图形化界面管理mysql:安装php ...

随机推荐

  1. java基础(四)-----抽象类与接口

    抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们 ...

  2. asp.net core 系列 15 中间件

    一.概述 中间件(也叫中间件组件)是一种装配到应用管道以处理请求和响应的软件. 每个组件:(1)选择是否将请求传递到管道中的下一个组件;(2)可以在管道中的下一个组件之前和之后执行工作. 请求委托用于 ...

  3. java nginx等代理或网关转发请求后获取客户端的ip地址,原理

    在没有网关或者反向代理软件情况下,java里获取客户端ip地址的方法是request.getRemoteAddr() 先解释下http协议和TCP协议: 网页默认是进行http连接了,http协议即超 ...

  4. 域名注册域名解析域名绑定 dns服务器解析 域名记录的添加 记录类型含义@ www 访问域名请求过程

    创建一个web应用,简言之就是访问一个域名,可以到达一个地方,这个地方就是你存放供别人查看的文件的地方 就像一条绳,从这头拉一下,可以拉出来另一头的东西 主要有两个部分: 域名 虚拟主机(空间) 1. ...

  5. H5 和 CSS3 新特性

    博客地址:https://ainyi.com/52 H5 新特性 语义化标签:header.footer.section.nav.aside.article 增强型表单:input 的多个 type ...

  6. ----Juquery复选框全选反选及获取选中值Value

    --获取选中值 var pList = ""; $("[name='ckdProd']").each(function () { if ($(this).is( ...

  7. python学习笔记(八)、特殊方法、特性和迭代器

    1 新式类和旧式类 python类的工作方式在不断变化.较新的Python2版本有两种类,其中旧式类正快速退出舞台.新式类时Python2.2 引入的,提供了一些额外功能,如支持函数super 和 p ...

  8. Java开发笔记(六十五)集合:HashSet和TreeSet

    对于相同类型的一组数据,虽然Java已经提供了数组加以表达,但是数组的结构实在太简单了,第一它无法直接添加新元素,第二它只能按照线性排列,故而数组用于基本的操作倒还凑合,若要用于复杂的处理就无法胜任了 ...

  9. PHP 中的Trait

    概述 在PHP中有一种代码复用的技术, 因为单继承的问题, 有些公共方法无法在父类中写出, 而 Trait可以应对这种情况, 它可以定义一些复用的方法, 然后在你需要使用的类中将其引入即可. 刚开始的 ...

  10. jquery实现ajax提交表单的方法总结

    方法一: 分别获取所需数据元素,DOM结构外层不用包form标签(适用于数据量少,数据元素分散于整个页面) $.ajax({ type: 'POST', url:'', data: { residen ...