テスト開発シリーズ - 強化されたデータベース

キーワード

  • DB
  • DBMS
  • DBA

DB:データベースデータベース
一般:データウェアハウス
狭義:DBMS、データベース管理システムは、サーバー側のソフトウェアです。、(十分な速さクエリの速度)を取得し、試験データの正確性および完全性を保存する:ソフトウェアは機能を持っている必要があります。

  • リレーショナルデータベースは、Oracle、DB2、Microsoft SQL Serverの、Microsoft Accessのは、MySQLとのようです。
    • コラム - フィールズ
    • テーブルの行は、レコードと呼ばれています
  • 非リレーショナルデータベース、RedisのMongoDBのなどがあります。

ユーザーテーブル
のカラム(列)

ID 名前 年齢
1 溶解 23
2 24

MySQLのインストール

  • mysqlの-5.0.22-win32.rar
  • MySQLのインストール図の.DOC
  • MySQLのダウンロードします。https://dev.mysql.com/downloads/installer/
    MySQLのダウンロード
  • サービス開始
    インストール中に、メモ:
    1、ユーザー名とパスワードを覚えて
    2を、UTF-8を選択する符号化形式

MySQLは、一般的にコマンドを使用します

  • 内蔵クライアント
  • MySQLのMySQLが不可欠研究ガイドは、一般的に使用されるコマンドで見つけることができテスター:http://www.lemfix.com/topics/343

どこに:mysqlのデータベースとINFORMATION_SCHEMAシステム。

mysqlクライアント

  • Navicatは
  • SQLyogの

+データベーステーブルを作成します。

従業員テーブルの従業員

テーブルのフィールド フィールドタイプ
ID 整数
名前 文字
性別 文字
お誕生日 日付タイプ
申し込み日 日付タイプ
ジョブ 文字
給料 DECIMAL型
履歴書 テキスト

データモデリング

  • エンティティ問い合わせ(Entity Relationship Approach)

  • 实体、属性和联系
    实体:学生就叫实体
    属性:
    联系:实体与实体之间也不是孤立存在的,是有联系的。

  • 联系的三种类型

    • 1:1 学生证和学生 拆表(主表,从表)主表的主键列和从表的
    • 1:M 用户和订单 一个用户可能有多个订单,一个订单只可能属于一个用户,用户表的主键列在订单表里面做外键列。外键列的值可以为null。
    • M:N 学生和课程 拆成两个一对多1:M

项目场景

某宾馆需开发一个客房入住系统,该系统的基本描述如下:
1、系统操作员可以登录该系统,操作员信息为:操作员编号、操作员密码、操作员姓名、操作员联系电话。
2、宾馆提供客房,如状态为“空闲”则可以入住,如状态为“客满”则不能再次被入住,客房信息为:客房编号、客房状态。
3、客房有多种类型,例如:“单人间”、“双人间”、“豪华套房”等,类型信息为:类型编号、类型名称、收费标准(价格)、拥有客房数量。
4、客户可以预定客房,客户信息为:身份证号、客户姓名、客户性别、客户联系电话。

1、一种客房类型有多间客房,一间客房只能是某一种客房类型;
2、一个客户可以预订多间客房,一间客房在不同的日期可以被不同的客户入住,入住信息包括入住日期、入住天数。

数据库3范式

https://blog.csdn.net/CharlesYooSky/article/details/89204229

  • 第一范式:保证每列的原子性
  • 第二范式:保证一张表只描述一件事情
  • 第三范式:保证每列都和主键直接相关

数据完整性

  • 主键约束
  • 非空约束
  • 唯一约束
  • 默认值default
  • 外键约束(可以没有,可以交给程序去控制)
  • check约束(mysql没有)

SQL语言

SQL(Structured Query Language)结构化查询语言

  • 在70年代早期,由IBM公司推出。
  • SQL是关系型数据库管理系统中用的缺省语言。像Oracle、Sybase、DB2、Informix、SQL Server这些大型数据库系统支持SQL语言作为查询语言。
  • DDL DCL DML

表记录的操作CUD

一、插入语句—insert
1、向employee中插入三个员工信息,要求员工姓名分别是zs,ls,wangwu
二、更新语句—update
1、将所有员工薪水改为5000元。
2、将姓名为‘zs’的员工薪水修改为3000元。
3、将姓名为‘ls’的员工薪水修改为4000元,job改为ccc。
4、将wangwu的薪水在原有基础上增加1000元。
三、删除语句—delete
1、删除表中名称为‘zs’的记录。
2、删除表中所有记录。

表简单查询1

1、查询表中所有学生的信息。
2、查询表中所有学生的姓名和对应的英语成绩。
3、过滤表中重复数据。
4、在所有学生分数上加10分特长分。
5、统计每个学生的总分。
6、使用别名表示学生分数。—使用where子句
7、查询姓名为刘备的学生成绩。
8、查询英语成绩大于90分的同学。
9、查询总分大于200分的所有同学。
10、查询英语分数在80-90之间的同学。
11、查询数学分数为89,75,91的同学。
12、查询所有姓刘的学生成绩。
13、查询所有姓刘两个字的学生成绩。
14、查询数学分>80并且语文分>80的同学。
15、查询数学分>80或者语文分>80的同学。—使用order by排序

表简单查询2

16、对数学成绩排序后输出。
17、对总分排序按从高到低的顺序推出。
18、对姓刘的学生成绩排序输出。—使用count(函数)
count统计的是结果集的行数,count()或者count(任意一列)。
count(1)效率最高,1就是第一列,count(
)是性能最慢的。
19、统计一个班级共有多少学生?
20、统计数学成绩大于或等于90的学生有多少个?
21、统计总分大于250的人数有多少?—使用sum函数
22、统计一个班级数学总成绩?
23、统计一个班级语文、英语、数学各科的总成绩。
24、统计一个班级语文、英语、数学的成绩总和。
25、统计一个班级语文成绩平均分。—使用avg函数
26、求一个班级数学平均分?
27、求一个班级总分平均分。—使用max,min函数
28、求班级最高分和最低分(数值范围在统计中特别有用)

建表和数据初始化

create table exam(
id int primary key auto_increment,
name varchar(20) not null,
chinese double,
math double,
english double
);

insert into exam values(null,‘关羽’,85,76,70);
insert into exam values(null,‘张飞’,70,75,70);
insert into exam values(null,‘赵云’,90,65,95);
insert into exam values(null,‘刘备’,97,50,50);
insert into exam values(null,‘曹操’,90,89,80);
insert into exam values(null,‘司马懿’,90,67,65);

分组——GROUP BY

  • 根据一列或多列对结果集进行分组
    • GROUP BY 字段1,字段2
    • 字段1、字段2相同的为一组
  • 在分组的列上可以使用聚合函数
    • COUNT、SUM、AVG、MAX、MIN
      • SELECT AVG(字段) FROM S GROUP BY 字段;
    • SELECT中没有使用聚合函数的列,必须出现在GROUP BY后面

SQL执行顺序

  1. from
  2. on
  3. join
  4. where
  5. group by (开始使用select中的别名,后面的语句中都可以使用)
  6. avg, sum…
  7. having
  8. select
  9. distinct
  10. order by
  11. limit
    可参阅:sql执行顺序是什么
    https://www.php.cn/sql/421993.html

子查询概念

  • 出现在其它SQL语句内的SELECT字句
    • 子查询也叫做内部查询,包含子查询的语句称为外部查询或主查询
    • 子查询自身可以包含一个或多个子查询,一个查询语句中可以嵌套任意数量的子查询

子查询的分类

  • 非相关子查询
    • 独立于外部查询,子查询只执行一次,执行完将结果传递给外部查询
    • A.id =(B FROM SELECT ID)A SELECT * FROM。
    • 外側のクエリのサブクエリの条件の結果として、
    • サブクエリのテーブルの結果
  • 相関サブクエリ
    • たびに外部データクエリ、外部クエリに依存して、サブクエリを一度に実行されます
    • サブクエリ列の結果として
    • 出会う各クラスのすべての学生は、このクラスでは平均よりも高い得点
    • tb_grade T1からSELECT *
      ここt1.score>

      tb_grade t2からSELECT AVG(t2.score)
      WHERE t1.class_name = t2.class_name
      )。

練習

  1. ターゲットユーザーは「花」と呼ばれる一方向の情報、条件を特定します
  2. クエリの従業員のマルチライン情報テーブルマネージャ、テーブル
  3. すべてのユーザー名とオブジェクトをチェックアウトする非関連のランク付け

単一行副問合せ

サブクエリ比較演算子を使用します

  • =、>、<、> =、<=、!=、<>
  • A ID =(A FROM SELECT MAX(ID))SELECT * FROM。

EXISTS、NOT EXISTSサブクエリ

  • サブクエリがデータの戻りラインかどうかをチェックするために使用されますEXISTS
    • 彼はその返します結果セットを強調しました
    • (サブクエリ)EXISTSテーブルSELECT * FROM。
  • サブクエリは、任意のタイプのデータを返しませんEXISTS
    • 戻り値がtrueまたはfalseであるように、それは理解することができます
    • サブクエリが含まれている場合は、行(結果セット)がtrueを返し、そうでない場合はfalse
公開された14元の記事 ウォンの賞賛1 ビュー852

おすすめ

転載: blog.csdn.net/anniewhite/article/details/104174538