一、数据库基础知识:

  1. 数据库(database):保存有组织的数据的容器(通常是一个或者一组文件)

  2. 数据库管理系统(DBMS):数据库软件,外界通过DBMS来创建和操纵数据库,具体是什么,因数据库不同而不一样。

  3. 关系型数据库:一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

  4. 表(table):

      可以把数据库想象成一个文件柜,则,表就是文件柜里面的一个个文件夹,数据就是具体的文件,被放在一个个文件夹里面,而不是直接全都裸露的放置在文件柜的抽屉里。

      表的关键在于:

        (1)存储在表中的数据,都是同一件事的数据,eg:顾客和商品,就是两件事物,所以每个顾客的信息和每件商品的信息,就应该放在两个不同的表里面。

        (2)每张表的名字都是唯一的,是表名唯一,实际上是根据“数据库名+表名”的组合,所以,在不同的数据库之间,可以使用相同的表名,但是同一个数据库内部,不能使用相同表名。

        (3)模式(schema):关于表的特性的信息

  5. 行(row):表中的数据按行存储,水平的就是“行”,“行”也被称为“记录(record)”

  6. 列(column):表由列组成,列是表中的一个字段。

           数据库中的每个列,都有相应的数据类型(datatype),数据类型定义了,该列可以存储哪些类型的数据

  7. 主键(primary key):表中的一列或者几列,其值能够唯一的标识表中的每一行,能唯一标识表中每一行的列,被称为主键。

            • 应该永远定义主键
            •  表中的任何列都可以当主键,但需要满足条件:

                (1)表中任意两行,都不能具有相同的主键值

                (2)每一个行都必须有一个主键值(主键列,不允许Null值)

                (3)主键列中的值不允许修改和更新

                (4)主键值不能重用(如果表中的某一行被删除了,则它的主键值不能再赋给以后插入的新行)

            • 多列主键:主键通常定义在一列上面,但是并不是必须这么做,也可以一起使用多个列作为主键。使用多个列作为主键时,上述条件必须应用到所有列,所有主键列值的组合必须是唯一的(但是其中单个主键列的值,可以不唯一)

  8. 外键:

  9. 视图: 视图封装了一个查询,使用视图可以重用SQL语句,可以简化SQL操作,还可以保护数据

     9.1 创建视图: Create view 视图名 as (整个查询操作语句)

      注意:如果想覆盖或者更新视图,必须先删除视图,然后再次重建。

     9.2 删除视图:Drop view 视图名

    例:

      原操作:Select cust_name, cust_contact From Customers, Orders, OrderItems Where Customers.cust_id = Orders.cust_id and OrderItems.order_num = Orders.order_num;

      

      变成视图操作:Create View ProductCustomers As Select cust_name, cust_contact From Customers, Orders, OrderItems Where Customers.cust_id = Orders.cust_id and OrderItems.order_num = Orders.order_num;

      后来再查询,只需要查询视图即可:Select * from ProductCustomers

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
项目一:查找重复的电子邮箱(难度:简单)

创建 email 表,并插入如下三行数据

+----+---------+
| Id | Email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+

编写一个 SQL 查询,查找 email 表中所有重复的电子邮箱。

根据以上输入你的查询应返回以下结果:

+---------+
| Email |
+---------+
| a@b.com |
+---------+

说明:所有电子邮箱都是小写字母。

建表语句:

-- 创建表

CREATE TABLE email (
ID INT NOT NULL PRIMARY KEY,
Email VARCHAR(255) NOT NULL
);

-- 插入数据

INSERT INTO email VALUES('1','a@b.com');
INSERT INTO email VALUES('2','c@d.com');
INSERT INTO email VALUES('3','a@b.com'); 解:
   select Distinct Email from email where Email.email in (select email from Email group by email having count(*) > 1);
项目二:查找大国(难度:简单)

创建如下 World 表


+------------+----------+---------+--------------+---------------+
| name | continent| area | population | gdp |
+------------+----------+---------+--------------+---------------+
| Afghanistan| Asia | 652230 | 25500100 | 20343000 |
| Albania | Europe | 28748 | 2831741 | 12960000 |
| Algeria | Africa | 2381741 | 37100000 | 188681000 |
| Andorra | Europe | 468 | 78115 | 3712000 |
| Angola | Africa | 1246700 | 20609294 | 100990000 |
+------------+----------+---------+--------------+---------------+

如果一个国家的面积超过 300 万平方公里,或者(人口超过 2500 万并且 gdp 超过 2000 万),那么这个国家就是大国家。


编写一个 SQL 查询,输出表中所有大国家的名称、人口和面积。


例如,根据上表,我们应该输出:


+--------------+-------------+--------------+
| name | population | area |
+--------------+-------------+--------------+
| Afghanistan | 25500100 | 652230 |
| Algeria | 37100000 | 2381741 |
+--------------+-------------+--------------+
解:  select name, population, gdp from world where world.area > 3000000 or (population > 25000000 and gdp > 2000000);

MySQL训练营01的更多相关文章

  1. MySQL案例01:Last_SQL_Errno: 1755 Cannot execute the current event group in the parallel mode

    周五同事监控报警,有个MySQL从库复制状态异常,让我帮忙排查下,经过排查发现是MySQL5.6并行复制的一个Bug所致,具体处理过程如下: 一.错误信息 登录mysql从库服务器,检查复制状态 my ...

  2. MySql笔记01

    用了两天的时间终于把MySql安装好了,还是很麻烦的,之所以没有选择直接安装,使用的是免安装版本,主要是想了解这个数据库的配置,这样以后就可以更好的了解它了. 登录MySql:mysql –h loc ...

  3. mysql笔记01 MySQL架构与历史、Schema与数据类型优化

    MySQL架构与历史 1. MySQL架构推荐参考:http://www.cnblogs.com/baochuan/archive/2012/03/15/2397536.html 2. MySQL会解 ...

  4. MYSQL基础01(新增,修改,删除)

    首先说明一下,本人之前一直都是用MSSQL,由于工作原因,每天写上百条sql语句,并持续了几年;由于换了工作目前主要接触的MYSQL;所以现在开始学习MYSQL. 我的学习计划很简单,我在MSSQL使 ...

  5. MySQL高级01

    MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB. 官网下载地址:http://dev.mysql.com/downloa ...

  6. Datawhale MySQL 训练营 Task6 实战项目

    作业 项目十:行程和用户(难度:困难) Trips 表中存所有出租车的行程信息.每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键.St ...

  7. Datawhale MySQL 训练营 Task5

    数据导入导出 导入table http://www.runoob.com/mysql/mysql-database-import.html 导出table http://www.runoob.com/ ...

  8. Datawhale MySQL 训练营 Task4 表联结

    学习内容 MySQL别名 列别名,将查询或者筛选出来列用AS 命名,如果有空格则需要引号 '' SELECT xxx AS xxxx FROM WHERE GROUP BY HAVING 表别名, 把 ...

  9. Datawhale MySQL 训练营 Task3 表操作

    目录 学习内容 1.MySQL 表数据类型 2. 用SQL语句创建表 3. 用SQL语句向表中添加数据 4. 用SQL语句删除表 5. 用SQL语句修改表 作业 参考链接 学习内容 1.MySQL 表 ...

随机推荐

  1. 旧文备份:FFTW介绍

    1. FFTW介绍 FFTW由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换(DFT)的计算库,开源.高效和标准C语言编写的代码使其得到了非常广泛的应用,Intel的数学库和Sci ...

  2. 协议类接口 - UART

    一.何为协议类接口? 双方约定信号的协议和满足时序要求. 二.UART如何传数据 通用异步收发器简称 UART,即“Universal Asynchronous Receiver Transmitte ...

  3. Swift_控制流

    Swift_控制流 点击查看源码 for-in 循环 //for-in 循环 fileprivate func testForIn() { //直接循环提取内部数据 //[1,5] for index ...

  4. Angularjs基础(六)

    AngularJS HTML DOM AngularJS为HTML DOM 元素的属性提供了绑定应用数据的指令. ng-disabled指令 ng-disabled指令直接绑定应用数据到HTML的di ...

  5. vue中的$on,$emit,$once,$off源码实现

    这几种模式是基于订阅观察者模式的,维护一个事件中心,on的时候将事件按名称存在事件中心里,称之为订阅者,然后emit将对应的事件进行发布,去执行事件中心里的对应的监听器. 第一步就是创建一个构造构造, ...

  6. 2018 Wannafly summer camp Day3--Knight

    Knight 题目描述: 有一张无限大的棋盘,你要将马从\((0,0)\)移到\((n,m)\). 每一步中,如果马在\((x,y)(x,y)\),你可以将它移动到 \((x+1,y+2)(x+1,y ...

  7. centos7 openvpn代理搭建

    系统环境:centos7.1 拨号ip地址:125.112.194.40(公网) server端部署 一.准备工作 1.检查SELinux状态,关闭 sed -i 's/enforcing/disab ...

  8. BC追踪

    项目又要开始改造了,记录一下改造过程中碰到的坑和解决思路,避免以后回头看看自己的笔记都不知道写了什么. (一)敏感信息混淆 (二)活用ComponentScan (三)Swagger配置多项目共用 ( ...

  9. djangorestframework怎么这么好用!

    一年前就已经用过restframework, 当时觉得这个只是给web框架打辅助的, 他能实现的我也都实现(可能没有那么好用, 嘿嘿) 但是我有一种东西叫做效率, 时间就是金钱, 别人造好的就直接用就 ...

  10. Qt on Android 蓝牙通信开发

    版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...