数据库DB-database-mysql

课程安排

第一天:

1.数据库定义以及设计

2.mysql服务端的安装

3.mysql-dos操作

库的操作

表的操作

4.mysql客户端navicate工具的安装及使用

5.建表

第二天

单表语句的查询-select

第三天

多表语句的查询

等值连接

内连接

嵌套

外连接

第四天

增加、删除、修改

增删改查

数据库测试关注点

扩展数据库的高级知识

1.性能测试

2.sql注入

安全测试

3.数据库连接测试

4.数据库事务测试

5.存储过程

第一天

数据库定义以及设计

什么是数据库

按照数据结构来组织、存储、管理数据的仓库

数据库的作用

存储管理数据

目标

1.熟练掌握sql结构化查询语言(structed query language)语句

2.拓展测试深度:将数据库和功能测试联系到一起

不仅测试界面可以看到的数据 还可以看到界面不可以看到的数据

数据库产品分类

数据库名称

所属公司

是否免费开源

支持平台

适用项目

port端口号

(面试)

mysql

甲骨文

windows和linux

大型,中型/互联网

3306

sqlserver

微软

windows

中小型/传统

1433

oracle

甲骨文

windows和linux

大型/金融

1521

数据库的组成

由若干个二维表组成,表格里面有若干记录和字段

数据库的设计

学生管理系统:

学生界面

课程界面

成绩界面

step1:确定功能列表-SRS

需求编号

需求类型

需求名称

优先级

xsxxglxt-fun-SRS-001

功能

学生增加

高中低

非功能/接口

学生修改

step2:确定每个界面的可见数据类型和长度

整型

int

默认为11位

字符型

char

长度固定,占用空间,查询效率较高

varchar

长度不固定,不占用空间,查询效率较低

日期类型

timestamp

浮点型

decimal(m,n)

 存储数值不会超过m位,小数点不超过n位

decimal(5,2)

step3: 确定实体:

一类数据对应一个实体

学生信息

课程

成绩

step4:确定实体的属性

每个表中的字段值

界面可见

界面不可见

注册日期

step5:确定实体间的关系 E-R entity-relationship图

主键

用来标识唯一一条记录,不能重复

每张表都要有主键

(不是必须)

多个字段组合成主键或新建一个自增的列作为主键

外键

用来与另外一张表进行关联

保持数据的一致性

可以重复

和主键类型长度必须一致

step6:数据库的约束

主键约束

primary key

唯一、不为空

学生表中学号

外键约束

foreign key

可以为空,依赖于主键

成绩表中学号

非空约束

not null

不能为空

姓名

范围约束

enum枚举

举例、有范围选择

性别(男,女)

唯一约束

unique

唯一的,至多一个为空

身份证号

在表中记录,最多一个值为空

默认约束

default

默认的值

注册日期:2016-03-20

mysql服务端的安装

安装过程注意事项

1.mysql默认端口号3306

2.手动勾选防火墙

add fire wall...

不拦截此端口号

3.默认字符集:utf8

防止乱码

4.默认账号账号密码为:root

5.勾选远程访问

6.四个选项打钩表示安装成功

mysql-dos操作

进入mysql方式

1.开始-所有程序-mysql-打开窗口

2.cmd-进入mysql安装bin目录 mysql -uroot -p

u:user

p:password

环境变量:系统找到应用程序的位置

我的电脑右键-属性-高级-环境变量

退出

ctrl c

quit

exit

\q

注意:dos中sql语句后面加分号;

库database的操作

显示库

show databases;

创建库

create database 库名;

库名不能以数字开头

删除库

drop database 库名;

使用(进入)库

use 库名;

表table的操作

显示表

show tables;

创建表

create table 表名(xm varchar(20),nl int);

create table xsb(xm varchar(20),nl int);

create table 表名(字段1 类型(长度) 约束类型1 约束类型2,字段2....);

主键

组合

在语句末尾 primary key(字段1,2..)

自增字段

create table xsb(id int primary key auto_increment, )

外键

字段1 类型(长度),          foreign key(字段1) references 主表名(主键名)

显示表的结构

desc 表名;

删除表

drop table 表名;

先删从表再删主表

mysql客户端navicate工具的安装及使用

安装

1.一路下一步

2.注册registration

SN.txt内容复制

navicate使用

connection 建立与服务器之间的连接

connection name:连接名-自定义

ip地址

服务器ip地址

port

3306

username

root

password

root

双击连接---绿色

创建库

连接--右键--new database

库名

两个字符集都选最后一个

utf8

utf8-Unicode-ci

创建表

tables-右键-new table--添加字段,类型,长度,约束

金钥匙--primary key

allow null-勾选表示允许为空

add field->在下方增加字段

insert field->在上方增加字段

向表中插入数据

双击表--填写字段值

下方√号表示更新数据

下方+号表示增加新数据

下方-号表示删除数据

query-

注意:1.每个单词之间要空格

2.有小括号不用空格

3.英文标点--搜狗输入法--设置属性--常规--中文时使用英文标点

4.注释

单行

--

#

多行

/* */

创建学生表

create table xsb( xh varchar(20) primary key, xm varchar(20) not null, xb enum('男','女'), jg varchar(50), nl int, bj varchar(20) default '117班', sfzh char(18) unique, zcrq timestamp default current_timestamp )

第二天

单表语句查询 select

查询张三的学生基本信息

1.找库

xsxxglxt

2.找表

xsb

_

3.找字段

全部信息*

select *

年龄

select nl

年龄和性别

select nl,xb

4.找条件

张三

where xm=‘张三’

5.组合语句

3-2-4

select * from xsb where xm='张三'

练习:查询李四学生信息

单表查询语法运算

精确查询

= <> !=

练习:查询除张三的学生信息

比较查询

> >= < <=

练习:查询年龄>18岁的学生信息

模糊查询

like

练习1:查询姓张同学信息

select *

from xsb

where xm like '张%'

练习2:查询姓名中间带“张字”学生信息

select * from xsb where xm like '%张%'

not like

单字符匹配

_下划线

多字符匹配

%

逻辑运算

and   or

练习1:同时显示张三和李四的信息

练习2:nl<25,jg不是北京的同学信息

select *

from xsb

where nl<25 and jg <>'北京'

练习3:将籍贯是北京、上海、南京、山东、黑龙江同学的信息显示出来

select * from xsb where jg='北京' or jg='上海' or jg='南京' or jg='山东' or jg='黑龙江'

练习4:查询班级为1班,性别为女生同学信息

select *

from xsb

where bj='1班' and xb='女'

练习5:不姓李,班级1班,性别为男学生信息

select * from xsb where xm not like '李%' and bj ='1班' and xb ='男'

集合运算

in、not in

练习1:将籍贯不是北京、上海同学的信息显示出来

select * from xsb where jg!='北京' and jg!='上海'

select * from xsb where jg not in('北京','上海')

练习2:姓名叫李_龙,且籍贯不是南京、新疆的学生信息

select * from xsb where xm like '李_龙' and jg not in ('南京','新疆')

练习3:   性别为男生,且籍贯是南京、新疆的学生信息

select *

from xsb

where xb = '男' and jg in ('南京','新疆')

非空运算

is null

练习1:成绩为空的学号有哪些

select xh from cjb where cj is null

is not null

练习2:成绩不为空的课程号

select kch from cjb where cj is  not null

区间运算

练习1:年龄大于18小于25的学生信息

select *

from xsb

where nl > 18 and nl < 25

between  and

select * from xsb where nl between 18 and 25

练习2:查找注册日期在2016-4-20到2016-4-29之间的学生信息

select * from xsb where zcrq between '2016-04-21' and '2016-4-29'

排序运算

order by

练习1:按年龄从大到小排序,显示学生信息

练习2:成绩从低到高排序且kch不为1

select * from cjb where kch != 1 order by cj asc

升序

asc

默认升序

降序

desc

别名

as

select nl as '年龄',xb as '性别' from xsb where xm='张三'

查询 成绩为90分的学生’学号‘和‘课程号’

select xh as '学号',kch as '课程号'

from cjb

where cj =  90

去重关键字

distinct 去掉重复的记录

查询男生女生分别来自哪些省

select distinct xb,jg from xsb

注意:distinct必须放在字段前面

聚合函数(统计函数)--select后面

统计记录

count(*)

练习1:统计有多少个学生

avg(字段名)

平均值

max(字段名)

最大值

min(字段名)

最小值

sum(字段名)

求和

练习1:查询xh为002学生的平均分

select avg(cj),max(cj),min(cj),sum(cj) from cjb where xh='002'分

练习2:查询xh为003学生考了几门课

select count(*) as '考试科目数量' from cjb where xh = '003'

问题:统计2班同学男生女生各有多少人(难)

解决:分组统计

分成多少组就有多少条记录

步骤

1.找表

from xsb

2.找字段

分组字段

3.分组条件

bj=‘2班’

4.分组

group by xb

练习1:统计每个班的平均年龄

select  bj,avg(nl) from xsb group by bj

练习2:统计每个班级中男女人数并且按班级降序排序

select  bj,xb,count(*) from xsb group by bj,xb order by bj desc

练习3:统计每个班人数且人数在2人以上

select  bj as '班级',count(*) as '人数' from xsb group by bj having count(*)>2

练习4:统计每个班最小年龄且最小年龄在18以上的班级

select  bj as '班级',min(nl) as '最小年龄' from xsb group by bj having min(nl)>18

group by 分组字段

分组后条件

having

limit

select * from cjb order by cj desc limit 0,3

mysql数据库单表增删改查命令的更多相关文章

  1. Vc数据库编程基础MySql数据库的表增删改查数据

    Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...

  2. Django框架(八)--单表增删改查,在Python脚本中调用Django环境

    一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...

  3. Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境

    目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...

  4. Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)

    day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库:    简称:DataBase ---->DB    数据库即存放数据的仓库, ...

  5. MySQL初步理解,简易单表增删改查

    什么是数据库? 存储数据的仓库,本质是一个文件系统,封装了算法和文件之前数据的存储模式 阶段1:集合 数组 变量 缺点:数据存储在内存中,不能实现数据的持久化存储 阶段2:IO流 结合文件 .txt ...

  6. $Django orm增删改字段、建表 ,单表增删改查,Django请求生命周期

    1 orm介绍  ORM是什么   ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM.  一 ...

  7. 48.Python中ORM模型实现mysql数据库基本的增删改查操作

    首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...

  8. Django ORM基本的单表增删改查

    创建表 步骤: 1.app下models.py里创建类(继承models.Model) from django.db import models class UserInfo(models.Model ...

  9. 【Python + Mysql】之用pymysql库连接Mysql数据库并进行增删改查操作

    用pip下载pymysql并引用 具体请参考文章: <Python之MySQL数据库增删改查操作> <python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删 ...

随机推荐

  1. JSON和Django内置序列化

    JSON 什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * J ...

  2. smokping的部署使用

    本文是介绍如何的使用smokeping来监控idc机房的网络质量情况,从监控图上的延时与丢包能分辨出你机房的网络是否稳定,是否为多线,是否为BGP机房,到各城市的3个运行商网络各是什么情况,如果出现问 ...

  3. asp.netMVC中权限控制论

    这里设想了一个简单的思路,如果用户登录了,也就是session中有值才可以在控制器中操作,这样先添加一个控制器,如下代码: public class AuthController : Controll ...

  4. android面试(1)----布局

    1.说出android 五中布局,并说出各自作用? FrameLayout: 堆叠布局,也是就可以堆在一起.最长应用于Fragment的使用上. LinearLayout: 线性布局,可以是竖排或水平 ...

  5. 【刷题】BZOJ 5248 [2018多省省队联测]一双木棋

    Description 菲菲和牛牛在一块n行m列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手.棋局开始时,棋盘上没有任何棋子, 两人轮流在格子上落子,直到填满棋盘时结束.落子的规则是:一个格子可以落子 ...

  6. 【NuGet】使用NuGet打包并发布至ProGet过程 (步骤详细,附python脚本)【上篇】

    一.基本知识 (1)NuGet : NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件, ...

  7. NOIP模拟

    1.要选一个{1,2,...n}的子集使得假如a和b在所选集合里且(a+b)/2∈{1,2,...n}那么(a+b)/2也在所选集合里 f[i]=2*f[i-1]-f[i-2]+g[i] g[n]:选 ...

  8. BZOJ5333 [Sdoi2018]荣誉称号 【差分 + 树形dp】

    题目链接 BZOJ5333 题解 看到式子,立即想到二叉树上一个点及其\(k\)个父亲权值和[如果有的话]模\(m\)意义下为\(0\) 考虑如何满足条件 我们假设\(1\)号为第\(0\)层 那么我 ...

  9. Linux分析第六周——进程的描述和进程的创建

    Linux分析第六周--进程的描述和进程的创建 李雪琦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/US ...

  10. intellij 插件结构(文件结构以及概念层面上的结构)

    1.插件内的文件 2.插件类加载器 3.插件组件(component) 4.插件的扩展以及扩展点(Extensions.Extension Points) 5.插件的Action 6.插件的Servi ...