- 【知识回顾】
- {mysql数据库的基本操作流程?}重点
安装-》登录-》建库-》打开库-》建表-》添加数据-》修改数据-》查询数据
【安装】安装mysql数据库软件(产品)---》升级数据库服务器
【登录】以某个身份登录到数据库服务器中(与mysql数据库建立连接)
mysql数据库产品有自带的数据库(mysql、sys、...)
mysql数据库里面存储整数产品及用户的信息
用户的信息:user表名
管理员:root,密码:123456
【建库】
格式1:create database 数据库名;
格式2:create database 数据库名 charset=utf8;
格式3:create database if not exists 数据库名 charset=utf8;
【打开库】
格式:use 数据库名;
【建表】
格式1:
create table 表名(列名1 数据类型(长度),列名2 数据类型(长度),...)
格式2:给列来增加约束
create table 表名
(列名1 数据类型(长度) 约束,列名2 数据类型(长度) 约束,...)
【往表中插入数据】
格式1:往表所有列中插入一行数据(一对小括号就代表一行数据)
insert into 表名 values
(‘列1数据’,’列2数据’,’列3数据’);
格式2:往表所有列中插入多行数据(多行数据需要多对小括号,且用逗号隔开)
insert into 表名 values
(‘列1数据’,’列2数据’,’列3数据’),
(‘列1数据’,’列2数据’,’列3数据’),
...;
格式3:往表中部分列插入一行数据,其中没有数据的列显示为null
(需要指定列,在表后面接括号,在括号里面写上列名)
insert into 表名(列名1,列名2) values
(‘列1数据’,’列2数据’);
格式4:往表中部分列插入多行数据
insert into 表名(列名1,列名2) values
(‘列1数据’,’列2数据’),
(‘列1数据’,’列2数据’),
...;
说明:
所有列---》直接写表名,意味着给表中所有列插入数据
部分列---》需要指定,在表名后面用小括号指定(在括号里写上部分列)
一行数据---》一对小括号
多行数据---》多对小括号,且用逗号隔开
- {借助navicat工具与mysql数据库进行交互操作}
含义:在navicat工具中将基本操作流程走一遍
提前:安装第三方软件(工具):navicat(带有图形界面)
方式1:手动交互(在图形界面上借助鼠标、键盘来完成)
方式2:编写代码 (重点)
操作1:在工具的内部新建文件并编写sql语句
操作:点击“新建查询”
操作2:在外部新建sql文件并编写sql语句,然后加载文件到工具中一次性执行
操作1:在桌面上新建一个.sql文件
操作2:打开sql文件并按照业务编写sql语句
操作3:在工具中加载文件
操作4:一次性执行sql文件,批量运行所有sql语句
- {使用sql语句来建库、打开库、建表}
建库: create database if not exists 数据库名 charset=utf8;
打开库:use 数据库名;
建表: create table 表名
(列名1 数据类型(长度) 约束,列名2 数据类型(长度) 约束,...);
如果没有约束,insert语句可以反复执行,最终导致数据重复插入,出现数据冗余
插入数据:
insert into 表名 values(真实数据);
【if not exists】
说明:这是一个判断语句,放在数据库或者表之前
作用:避免因数据库或者表重名而导致语句报错,进而中断整个代码的执行
原理:先去判断数据库或者表是否存在,如果存在,则不创建,
如果不存在,则创建
单词: exit :出口 exists:存在
在建表时,不仅需要给列声明合适的数据类型,而且还需给列设置合适约束
数据类型:声明某个列中的数据应该插入该类型的数据
三大类型
约束:约束列的数据必须要符合某种规则(主键约束一定要)
六种约束
- {mysql数据库常用的三大数据类型?}
分类:数字类型(整数和小数),字符类型(固定字符、可变字符),日期时间(日期、时间)
整数:int
小数:float
固定字符:char
可变字符:varchar
日期:date
作用:声明某个列中的数据应该插入那一类型的数据
说明:数据类型后面的长度是设定数据的范围
缺点:数据可以反复添加,从而导致数据冗余
- {扩展:建表时,为列设置(添加)适当约束} 了解
作用:约束列中的数据要符合某种规则
分类:
主键约束,规则:列中数据要做到唯一且非空
含义:数据不能重复,且不可以为空
单词:primary key
格式:列名 数据类型(长度) primary key
说明:一张表必须有主键
非空约束,规则:列中的数据不能为空
单词:not null
格式:列名 数据类型(长度) not null
唯一约束,规则:列中的数据不能重复
单词:unique
格式:列名 数据类型(长度) unique
说明:为空的次数可以多次
默认值约束,规则:在建表时给列设置了默认值,
如果不给列添加数据,则使用默认值数据
如果给列添加新数据,则使用新添加的数据
单词:default
格式:列名 数据类型(长度) default ‘默认值’
检查约束(在mysql不支持)
规则:检查列中的数据要符合我们自定义的规则
单词:check
格式:列名 数据类型(长度) check(自定义的规则)
比如:
Create table 表名
(列名 数据类型 primary key,
工资 float(7,2) check(工资>5000 and 工资<15000))
比如:
性别 char(1) check(性别=’男’ or 性别=’女’)
表名:员工信息表
列名
员工编号---》主键
员工姓名---》非空
身份证 ---》唯一
地址 ---》默认值
性别 ---》检查
邮箱 ---》检查
...
- {往表中插入数据}
单词:insert into values
特点:insert语句每次执行都是另起一行插入数据
【insert】:插入,是语句的开头
【into】:方向,往表中,后面一定接的是表
【values】:代表数据,引出真实数据,后面接真实数据
说明:
所有列:直接写表名,就代表表中所有列
部分列:指定列,在表后面加上小括号,小括号里写上部分列
一行数据:一对小括号
多行数据:多对小括号,且括号之间用逗号隔开
分类:
- 往表中所有列插入一行数据
格式:insert into 表名 values(‘列1数据’,’列2数据’,’列3数据’,...);
- 往表中部分列插入一行数据,没有数据显示null
格式:insert into 表名(列1,列2) values(‘列1数据’,’列2数据’);
- 往表中所有列插入多行数据
格式:insert into 表名 values
(‘列1数据’,’列2数据’,’列3数据’,...),
(‘列1数据’,’列2数据’,’列3数据’,...),
(‘列1数据’,’列2数据’,’列3数据’,...);
- 往表中部分列插入多行数据
格式:insert into 表名(列1,列2) values
(‘列1数据’,’列2数据’),
(‘列1数据’,’列2数据’),
(‘列1数据’,’列2数据’);
- {练习}
案例1:在navicat工具中编写代码完成以下需求:
在nanshan数据库中创建一张kejiyuan表,
结构如下:
列名 | 数据类型 | 长度 | 约束 |
tid | int | 2 | Primary key |
tname | varchar | 10 | Not null |
job | varchar | 5 | unique |
address | varchar | 10 | Default ‘深圳’ |
案例2:在桌面上的记事本中并编写代码完成以下需求:
在longgang数据库中创建一张huawei表,
结构如下:
列名 | 数据类型 | 长度 | 约束 |
hid | int | 2 | Primary key |
hname | varchar | 10 | Not null |
job | varchar | 5 | unique |
address | varchar | 10 | Default ‘深圳’ |
- 【每日单词】
单词 | 中文含义 | 中文发音 |
database | 数据库 | 德塔贝斯 |
create | 创建 | 科雷特 |
charset | 字符集 | 恰赛特 |
utf8 | 万国码 全称:utf-8 语言:utf-8 | Utf8 |
show | 查看 | 瘦 |
use | 打开 | 游丝 |
drop | 删除 | 叫破 |
table | 表 | 忒波 |
int | 整数 | 因特 |
float | 小数 | 佛洛特 |
date | 日期 | 德特 |
char | 固定长度字符 | 恰 |
varchar | 可变长度字符 | 瓦恰 |
desc | 查看表的结构 格式:desc 表名; | desc |
insert | 插入 | 银射特 |
into | 往 | 银土 |
values | 数据 | 歪留斯 |
Select | ||
from | ||
Primary key | 普雷麦雷 k | |
Not null | 偌特 浪 | |
unique | 由尼Q | |
default | ||
check | ||
update | 含义:修改表中列的数据 格式:update 表名 set 列名=’新数据’; 过程:
本质:就是对列赋予一个新的数据 | 阿婆德特 |
set | 设置 作用:指定列,后面接列名 | 色特 |
where | 歪耳 | |
and | 并且、和 作用:连接词,连接多个条件,多个条件之间关系是同时满足 | |
or | 或者 作用:连接词,连接多个条件,多个条件之间关系是任意一个满足即可 | |
Between and | 作用:介于2个数值范围之间,是闭区间 工资在1000到2000之间(包含1000和2000)
数值:数字、日期 工资不在1000到2000之间(包含1000和2000) 1)where 工资<1000 or 工资>2000 2)where 工资 not between 1000 and 2000 | |
in | 作用:在指定的值之间任选其一 工资为1000或者2000或者3000 1)where 工资=1000 or 工资=2000 or 工资=3000 2)where 工资 in(1000,2000,3000) 值:任意数据 姓名为james或者wade或者smith
|
- 【新知识点】
准备工作:
在navicat工具中执行外部的sql文件
数据库:shengge
表:emp (员工)
dept (部门)
- {修改表中的数据}
概念1:修改数据的本质:就是做设置
概念2:对谁做设置:对列设置
概念3:对列做什么样的设置:对列赋予一个新的数据
格式:update 表名 set 列名1=’新数据’,列名2=’新数据’,... where 条件;
单词:update set where
分析:
- update:指定表,后面一定要接表名。
- set:指定列,并给他赋一个新的数据
可以指定多个列
- where:带条件,定位行,满足条件的行才被修改,不满足的不会修改
分类:
全改:将整列的数据改为一样,在实际工作不实用
简称:不带条件的修改
格式:update 表名 set 列1="新的数据",列2="新的数据",...;
部分改:(重点)
概念:部分-》行和列的交集
简称:带条件的修改
原理:满足条件的行才被修改
定位行:借助where 条件表达式来定位行
格式:
update 表名 set 列1="新的数据",列2="新的数据"
where 条件表达式
过程:
指定表+指定列+给列赋值+带条件
比如:
将emp表中工资(sal)大于1200的员工的奖金(comm)改为500
代码:
update emp set comm=500 where sal>1200;
思路:
三找(找表、找列、找条件)
【找表】:被修改的是哪一张表
【找列】:那些列的数据要修改
【找条件】:要修改的是谁的数据
【条件表达式】
1)借助关系运算符来表达
> >= < <= = != <>
举例1:姓名为张三丰
where 姓名="张三丰"
举例2:工资大于2000
where 工资>2000
练习:
表名:emp表
列名:工资列--》sal
姓名列--》ename
奖金列--》comm
部门号--》deptno
update 表名 set 列1="新的数据",列2="新的数据"
where 条件表达式
案例1:
将emp表中姓名(ename)为’james’的员工工资(sal)改为3000
代码:update emp set sal=3000 where ename=’james’;
案例2:
将emp表中工资(sal)大于3000的员工奖金(comm)改为500
代码:update emp set comm=500 where sal>3000;
案例3:
将emp表中工资(sal)小于3000的员工的工资改为3500,
以及奖金(comm)改为600
代码:
update emp set sal=3500,comm=600 where sal<3000;
案例4:
将emp表中部门号(deptno)为30且工资(sal)大于1500的
员工的奖金(comm)改为700
代码:
update emp set comm=700 where deptno=30 and sal>1500;
案例5:
将emp表中10号部门(deptno)或者20号部门的奖金改为550
代码:
update emp set comm=550 where deptno=10 or deptno=20
概念1:
如果条件有多个,需要借助连接词来连接多个条件
概念2:
根据条件之间的关系,来选择合适连接词
连接多个条件的单词:
And: 并且
格式: 条件1 and 条件2
作用:多个条件要同时满足
Or: 或者
格式: 条件1 or 条件2
作用:多个条件中任意一个满足
笑话:
性别=’男’ or 性别=’女’
update 表名 set 列1="新的数据",列2="新的数据"
where 条件表达式
案例3:
将emp表中部门号(deptno)为30且工资(sal)小于1000的员工的奖金(comm)改为600
代码:
案例4:
将emp表中姓名为’james’或者姓名为’wade’的工资改为4000
代码:
案例5:
将emp表中姓名为’james’或者姓名为’wade’的工资增加100
代码:
2)借助特定的关键字来表达条件
between and :介于2个数字范围之间的闭区间(包含边界值)
not 取反
Not between and :在不在2个数字范围之间
Not in :不在指定的值之间
in :在指定的值之间
举例1:
工资在2000到3000之间(包含2000和3000)
写法1: where 工资>=2000 and 工资<=3000
写法2:where 工资 between 2000 and 3000
举例2:
工资不在2000到3000范围之间
写法1: where 工资<2000 or 工资>3000
写法2: where 工资 not between 2000 and 3000
举例3:
没有工资
where 工资=0 or 工资 is null
举例4:
有工资
where 工资>0 or 工资 is not null
举例5:工资为2000或者3000或者4000
where 工资=2000 or 工资=3000 or 工资=4000
where 工资 in(2000,3000,4000)
练习:
表:emp
列:empno(编号) ename(姓名) sal(工资) comm (奖金)
格式:update 表名 set 列1="新的数据",列2="新的数据"
where 条件表达式
三找:
找出要修改的是哪一张表
找出要修改的是那一个列(那个列的数据要被修改)
找出条件(用where引出)
案例1:
将emp表中的编号(empno)为7369的工资(sal)改为20000
代码:update emp set sal=20000 where empno=7369;
案例2:
将emp表中的姓名(ename)为’wade’的工资(sal)改为5000
代码:update emp set sal=5000 where ename=’wade’;
案例3:
将emp表中的姓名(ename)为king的工资(sal)减半
代码:update emp set sal=sal/2 where ename=’king’;
案例4:
将emp表中工资(sal)在3000到5000之间的工资翻2倍
代码:update emp set sal=sal*2 where sal between 3000 and 5000;