mysql数据库单表增删改查命令
数据库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数据库单表增删改查命令的更多相关文章
- Vc数据库编程基础MySql数据库的表增删改查数据
Vc数据库编程基础MySql数据库的表增删改查数据 一丶表操作命令 1.查看表中所有数据 select * from 表名 2.为表中所有的字段添加数据 insert into 表名( 字段1,字段2 ...
- Django框架(八)--单表增删改查,在Python脚本中调用Django环境
一.数据库连接配置 如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可 如果连接mysql,需要在配置文件中的setting中进行配置: 将DATABASES={} 更新为 DA ...
- Django框架(九)—— 单表增删改查,在Python脚本中调用Django环境
目录 单表增删改查,在Python脚本中调用Django环境 一.数据库连接配置 二.orm创建表和字段 三.单表增删改查 1.增加数据 2.删除数据 3.修改数据 4.查询数据 四.在Python脚 ...
- Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
- MySQL初步理解,简易单表增删改查
什么是数据库? 存储数据的仓库,本质是一个文件系统,封装了算法和文件之前数据的存储模式 阶段1:集合 数组 变量 缺点:数据存储在内存中,不能实现数据的持久化存储 阶段2:IO流 结合文件 .txt ...
- $Django orm增删改字段、建表 ,单表增删改查,Django请求生命周期
1 orm介绍 ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM. 一 ...
- 48.Python中ORM模型实现mysql数据库基本的增删改查操作
首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.my ...
- Django ORM基本的单表增删改查
创建表 步骤: 1.app下models.py里创建类(继承models.Model) from django.db import models class UserInfo(models.Model ...
- 【Python + Mysql】之用pymysql库连接Mysql数据库并进行增删改查操作
用pip下载pymysql并引用 具体请参考文章: <Python之MySQL数据库增删改查操作> <python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删 ...
随机推荐
- 第120天:移动端-Bootstrap基本使用方法
一.Bootstrap使用 1.搭建Bootstrap页面骨架及项目目录结构 ``` ├─ /weijinsuo/ ··················· 项目所在目录 └─┬─ /css/ ···· ...
- jquery中的append功能相当于剪切的作用 将原来的元素剪切走
jquery中的append功能相当于剪切的作用 将原来的元素剪切走
- bzoj2013[CEOI2010] A huge tower
题意 有N(2<=N<=620000)快砖,要搭一个N层的塔,要求:如果砖A恰好在砖B上面,那么A不能比B的长度+D要长.问有几种方法,输出 答案 mod 1000000009的值 分析 ...
- P4623 [COCI2012-2013#6] BUREK
题目描述 给定N个三角形,和M条直线,直线要么平行于X轴,要么平行于Y轴,问这M条直线 分别经过多少个三角形内部 (注意是内部即分开的两个多边形的面积均大于零). 输入输出格式 输入格式: 第一行一个 ...
- hdu4554 A Famous Game 概率期望
题面 题意:n个球,2种颜色,可能有0~n个红球,每种情况的概率相同.现在从箱子里取出了$p$个球,其中有$Q$个是红球,问现在再取一个球是红球的概率为多少? 题解:因为0 ~ n的概率相同,所以每个 ...
- Unity3D手游开发日记(3) - 场景加载进度条的完美方案
我以为做个进度条很简单,分分钟解决,结果折腾了一天才搞定,Unity有很多坑,要做完美需要逐一解决. 问题1:最简单的方法不能实现100%的进度 用最简单的方法来实现,不能实现100%的进度,原因是U ...
- BZOJ4408 [Fjoi 2016]神秘数 【主席树】
题目链接 BZOJ4408 题解 假如我们已经求出一个集合所能凑出连续数的最大区间\([1,max]\),那么此时答案为\(max + 1\) 那么我们此时加入一个数\(x\),假若\(x > ...
- 应用程序的日志通过rsyslog推送到syslog服务器
centos5系列系统自带为syslog1.4.1 centos6系列自带rsyslog版本为5.8.10 centos7系列自带rsyslog版本为7.4.7 目前最新版rsyslog为8.27.0 ...
- 据说要写一个CTSC&APIO的收获
就不写流水帐了,总的写一下吧.先从最浅显的地方开始——知识.大概被普及了一发带花树,算上自己的考试,还被普及了一发洲阁筛.当然更多的还是对于一些知识的强化,比如:乱搞(这东西真是太重点了啊).DP.数 ...
- js中字符串全部替换
废话不多说,直接发结果 在js中字符串全部替换可以用以下方法: str.replace(/需要替换的字符串/g,"新字符串") 比如: "yyyy-MM-dd-hh-mm ...