MySQL训练营01
一、数据库基础知识:
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的更多相关文章
- MySQL案例01:Last_SQL_Errno: 1755 Cannot execute the current event group in the parallel mode
周五同事监控报警,有个MySQL从库复制状态异常,让我帮忙排查下,经过排查发现是MySQL5.6并行复制的一个Bug所致,具体处理过程如下: 一.错误信息 登录mysql从库服务器,检查复制状态 my ...
- MySql笔记01
用了两天的时间终于把MySql安装好了,还是很麻烦的,之所以没有选择直接安装,使用的是免安装版本,主要是想了解这个数据库的配置,这样以后就可以更好的了解它了. 登录MySql:mysql –h loc ...
- mysql笔记01 MySQL架构与历史、Schema与数据类型优化
MySQL架构与历史 1. MySQL架构推荐参考:http://www.cnblogs.com/baochuan/archive/2012/03/15/2397536.html 2. MySQL会解 ...
- MYSQL基础01(新增,修改,删除)
首先说明一下,本人之前一直都是用MSSQL,由于工作原因,每天写上百条sql语句,并持续了几年;由于换了工作目前主要接触的MYSQL;所以现在开始学习MYSQL. 我的学习计划很简单,我在MSSQL使 ...
- MySQL高级01
MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB. 官网下载地址:http://dev.mysql.com/downloa ...
- Datawhale MySQL 训练营 Task6 实战项目
作业 项目十:行程和用户(难度:困难) Trips 表中存所有出租车的行程信息.每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键.St ...
- Datawhale MySQL 训练营 Task5
数据导入导出 导入table http://www.runoob.com/mysql/mysql-database-import.html 导出table http://www.runoob.com/ ...
- Datawhale MySQL 训练营 Task4 表联结
学习内容 MySQL别名 列别名,将查询或者筛选出来列用AS 命名,如果有空格则需要引号 '' SELECT xxx AS xxxx FROM WHERE GROUP BY HAVING 表别名, 把 ...
- Datawhale MySQL 训练营 Task3 表操作
目录 学习内容 1.MySQL 表数据类型 2. 用SQL语句创建表 3. 用SQL语句向表中添加数据 4. 用SQL语句删除表 5. 用SQL语句修改表 作业 参考链接 学习内容 1.MySQL 表 ...
随机推荐
- java操作文件常用的 IO流对象
1.描述:流是字节数据或字符数据序列.Java采用输入流对象和输出流对象来支持程序对数据的输入和输出.输入流对象提供了数据从源点流向程序的管道,程序可以从输入流对象读取数据:输出流对象提供了数据从程序 ...
- CSU 1023 修路(二分+模拟)
前段时间,某省发生干旱,B山区的居民缺乏生活用水,现在需要从A城市修一条通往B山区的路.假设有A城市通往B山区的路由m条连续的路段组成,现在将这m条路段承包给n个工程队(n ≤ m ≤ 300).为了 ...
- JavaScript:改变 HTML 内容
使用Javascript来处理HTML元素的内容是非常强大的功能. <!DOCTYPE html><html><head><meta http-equiv=& ...
- 用c#语言编写分解质因数
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- html+css让网页自动适应手机屏幕
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scal ...
- 使用补丁破解IntelliJ IDEA 2017收费版本(转)
1. 首先去官网http://www.jetbrains.com/idea/download/#section=windows下载Ultimate版(注意不是community版)下载并安装.一定要记 ...
- 使用js获取表单元素的值
function getParams(formName) { var frmMain = document.getElementById(formName)?document.getElementBy ...
- WebGL学习笔记(4)
本篇笔记加强了上篇笔记示例代码的程序,实现了使用nodejs-websocket来广播每个玩家的坐标数据并在同一个世界模型中进行多人在线交互. websocket服务端: 安装nodejs与npm,创 ...
- 关系型数据库设计——E-R图
一.数据管理技术的三个发展阶段: 1)人工管理阶段(20世纪50年代中期) 特点:数据不保存:应用程序管理数据:数据不共享:数据没有独立性: 2)文件系统阶段(20世纪50年代后—60年代)特点:数据 ...
- 如何安全地跨窗体调用Timer控件 从一个窗体调用控制另外一个窗体的控件
具体的情况是Form1中有一个Timer2时钟,Timer2时钟事件弹出Warning窗体,点击Warning窗体上面的按钮,重新激活一下Form1中的Timer2.从而实现了从一个窗体调用另外一个窗 ...