一、数据库基础知识:

  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. JDBCUtils工具类(转)

    JdbcUtils.java import java.sql.Connection; import java.sql.SQLException; import javax.sql.DataSource ...

  2. 蚯蚓(noip2016,贪心,单调性)

    题目描述 本题中,我们将用符号⌊c⌋ 表示对 c 向下取整,例如:⌊3.0⌋=⌊3.1⌋=⌊3.9⌋=3 . 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭 ...

  3. 选课(树形DP)

    题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门课有个学分,每门课有一 ...

  4. <逆向学习第三天>手动脱FSG壳,修复IAT。

    其实对于简单的壳来说,脱壳常用的方法也无非是那几种,但是每种有每种的好处,具体使用那种方法视情况而定,我今天学习的这个壳很简单,但是重点在于修复IAT. 一.查壳: FSG 2.0的壳. 二.脱壳: ...

  5. mysql 查询各个阶段所消耗的时间

  6. 汇编:汇编语言实现冒泡排序(loop指令实现)

    ;=============================== ;循环程序设计 ;loop指令实现 ;冒泡排序 ;for(int i=0;i<N;i++){ ; for(int h=0;j&l ...

  7. css3圆角矩形、盒子阴影

    css3圆角矩形 div{ width: 200px; height: 200px; border: #f00 solid 1px; margin-bottom: 10px; } 1.设置 borde ...

  8. ThinkPHP 5 整合支付宝微信支付(支付宝H5,微信H5、APP支付、公众号支付)

    因项目没有PC站所以没有写电脑网站支付. Pay.php支付控制器 <?php // +----------------------------------------------------- ...

  9. PHP 使用程序进行数据库字典文件生成 导出数据库字典

    作为一个程序员肯定是不愿意写文档的!!! 尤其最麻烦的数据库字典文档 所以偷懒写了一个PHP程序来进行数据库字典导出 记录一下  以免以后忘记 //使用的是Laravel框架 可以转换成原生导出$ta ...

  10. Hadoop(8)-HDFS的读写数据流程以及机架感知

    1. HDFS的写数据流程 1.客户端通过fs模块向NameNode申请文件上传,NameNode检查请求是否合法,如用户权限,目标文件是否已存在,父目录是否存在等等 2.NameNode返回是否可以 ...