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 表 ...
随机推荐
- UVA - 136 Ugly Numbers(丑数,STL优先队列+set)
Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 1, 2, 3, 4, 5, 6, 8, 9 ...
- js中实现页面跳转(返回前一页、后一页)
一:JS 重载页面,本地刷新,返回上一页 代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a ...
- kali linux 中文出现乱码问题的解决
确定locales已经安装,用”apt-get install locales”命令:之后可用”locale -a”查看当前系统支持的字符集. 1. 在命令行输入”dpkg-reconfigure l ...
- 范围for语句的整理
1.如何处理stirng中的每个字符?(来自C++Primer中文版5th中P83) 使用基于范围的for语句,比如下面的例子,输出每个字符 #include<iostream> #inc ...
- fjutacm 3700 这是一道数论题 : dijkstra O(mlogn) 二进制分类 O(k) 总复杂度 O(k * m * logn)
/** problem: http://www.fjutacm.com/Problem.jsp?pid=3700 按二进制将k个待查点分类分别跑dijkstra **/ #include<std ...
- JDBC编程:使用 Statement 修改数据库
获取数据连接后,即可对数据库中的数据进行修改和查看.使用 Statement 接口可以对数据库中的数据进行修改,下面是程序演示. /** * 获取数据库连接,并使用SQL语句,向数据库中插入记录 */ ...
- 使用Python对SQLite数据库操作
SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在IOS和Android的APP中都可以集成. Python内 ...
- 20180803UnionPay银联支付
LNMP环境下开发的银联支付(测试环境) 1.准备条件 a.银联支持API:https://open.unionpay.com/ajweb/help/api b.选择开发软件包 图示: c.我选择: ...
- CentOS下安装pip
CentOS下安装pip 通常情况下使用命令: yum -y install pip 也有可能报错,无法安装.这是应该使用第二种方法. 1.首先需要先安装扩展源EPEL: yum -y install ...
- Python的scrapy之爬取boss直聘网站
在我们的项目中,单单分析一个51job网站的工作职位可能爬取结果不太理想,所以我又爬取了boss直聘网的工作,不过boss直聘的网站一次只能展示300个职位,所以我们一次也只能爬取300个职位. jo ...