mysql-day01
一、前端开发的是否是软件?
APP/网站/小程序
C/S架构 先安装,例如:qq音乐、微信...
B/S架构 例如:浏览器运行、微信网页打开
二、软件工程--软件的生命周期
1.软件定义期
(1)可行性研究阶段
技术/人力/设备/时间/资金/回报率/政策/风俗
(2)需求分析阶段
功能性需求分析/非功能性需求分析
备注:非功能性需求是功能性运转的前提
2.软件开发期
(3)概要设计阶段(架构师)
子系统、模块、各自功能
(4)详细设计阶段(产品经理)(例如:app原型图)
页面、主题内容、属性、方法....
(5)编码实现阶段
UI设计--把产品经理的原型图转网页效果图
前端工程师--将效果图转换成网页(html)、app(css)、小程序(js)
后端工程师--为前端提供所需要的数据
3.软件维护期
(6)测试阶段
软件测试工程师
(7)部署阶段-运维工程师
部署到服务器 例:比特币 挖矿
(8)维护阶段(所有开发人员)
三、服务器
硬件:一台计算机(远程的电脑)
软件:可以提供各种服务,例:数据库服务器、游戏服务、WEB服务、视频服务
访问服务器:
大悦城(服务器)
名称:&域名
地址:&IP地址
门牌号:&端口
语言交流:&协议
找服务器:域名/IP地址
找服务:端口
使用服务要有对应的:协议
mysql-day02
一、项目中存储数据的方式有哪些?
特定文件(小批量)
内存(无法永久存数据)
第三方的云服务器
数据库服务器
二、数据库服务器
特点:1.永久存;2.快概念:数据是按照一定的形式来组织存储数据,便利数据的操作--增删改查
1.数据库发展历史网状数据库 > 层次型数据库 > 关系型数据库 >非关系型数据库(NoSQL)
2.关系型数据库逻辑结构
Server > Database > Table >Row > Column
服务器 数据库 数据表 行 列
MySQL
开源中小型数据库,可用于各种操作系统
SQL ServerMicrosoft
开发的中型数据库,只用于Windows系统
OracleOracle公司开发的中大型数据库,可用于各种操作系统
三、MySQL
Oracle:MySQL
马丁:MariaDB
XAMPP:是一款服务器套装,包含多个服务器,例如:MySQL、Apache、Tomcat
1.MySQL部署结构
服务器端:负责存储维护数据——银行数据库服务器
占用3306端口
启动文件:c:/xampp/mysql/bin/mysqld.exe
客户端:负责连接服务器,对数据进行操作——ATM机
c:/xampp/mysql/bin/mysql.exe
2.使用客户端连接服务器端
mysql.exe -h127.0.0.1 -P3306 -u -p
-h host 127.0.0.1/localhost 自己电脑的IP和域名
-P port 端口
-u user 用户名,MySQL默认有一个管理员账户root
-p password 密码,xampp下MySQL的密码是空
mysql.exe -h127.0.0.1/localhost(IP或域名) -P3306(端口) -uroot(用户名)-p(密码)
管理员身份 简写:mysql -uroot (结尾不能加分号)
3.常用的管理命令
quit; 退出服务器连接
show databases; 显示所有的数据库
use 数据库名称; 进入到指定的数据库
show tables;显示所有的数据表
desc 数据表名称;描述指定的数据表,表头都有哪几项
注意:结尾必须加分号
四、SQL命令
SQL:结构化查询语言,用于操作关系型数据库服务器
1.运行方式
(1)交互模式(一问一答)
在客户端输入一行,点击回车,服务器端就会执行一行,适用于临时性的查看数据
(2)脚本模式
客户端把执行命令写在一个脚本文件中,然后一次性的提交给服务器执行,适用于批 量的操作数据
mysql -uroot<拖拽脚本文件
2.SQL命令语法规范
(1)1条SQL命令可以跨越多行,以英文的分号作为结束
(2)SQL命令不区分大小写,建议关键字大写,非关键字小写
(3)假设某一条命令出现语法错误,则此条命令往后都不再执行
(4)分为单行注释(#..)和多行注释(/*..*/),注释的代码都不会被服务器执行
3.常见的SQL命令
(1)丢弃数据库如果存在的话 drop database if exists 数据库名称;
(2)创建新的数据库 create database 数据库名称;
(3)进入数据库 use 数据库名称;
(4)创建数据表 create table 数据表名称( 列名称 类型 ... );
标准的SQL命令:
定义数据结构(DDL):drop/create/alter(修改)
操作数据(DML):insert/delete(删除)/update(修改)
查询数据(DQL):select
控制用户权限(DCL):grant(授权)/revoke(收权)
常用的SQL命令:
1.修改数据
update 数据表名称 set 列名称=值,列名称=值 where 条件;
2.删除数据
delete from 数据表名称 where 条件;
mysql-day03
一、计算机如何存储字符
1.如何存储英文字符
ASCII:总共有128个,对所有的英文字母进行编码|
Latin-1:总共有256个,对欧洲字母进行编码,兼容ASCII
2.如何存储中文字符
GB2312:对常用的6000多汉字进行了编码,兼容ASCII
GBK:对2万多汉字进行了编码,兼容GB2312
Unicode:对世界上主流国家常用的语言进行了编码,具体有三种存储方案,分别是utf-8,utf-16,utf-32
3.mysql中文乱码产生的原因
默认使用Latin-1,不包含对中文的编码
4.解决中文乱码
(1)脚本文件另存为的编码为utf-8
(2)客户端连接服务器的编码为utf-8
(3)服务器端创建数据库存储字符的字符为utf-8
步骤:
#设置客户端连接服务器的编码为utf8
set names utf8;
#丢弃数据库,如果存在
drop database if exists sina;
#创建新的数据库,设置存储字符的编码为utf8
create database sina charset=utf8;
#进入创建的数据库
use sina;
#创建数据表
create table news(
nid int,
title varchar(60),
origin varchar(20),
ctime varchar(10),#2022-1-1
detail varchar(50)
);
#插入数据
insert into news
values('1','新闻1','新华网1','2020-1-2','中华共和国1');
insert into news
values('2','新闻2','新华网2','2020-1-5','中华共和国2');
insert into news
values('3','新闻3','新华网3','2020-1-8','中华共和国3');
#修改数据
update news set origin='华盛顿网'where nid='1';
#删除数据
delete from news where nid='3';
show databases;
use 数据库名称;
show tables;
desc 表名称;
select*from 表名称;
二、列类型
在创建数据表的时候,指定的列存储的数据类型
create table t1(
id 列类型
);
1.数值型-值可以不加引号
tinyint 微整型,占1个字节,范围-128~127(2进制:7个1)
1Byte = 8Bit
smallint 小整型,占2个字节,范围-32768~32767(2进制:15个1)
int 整型,占4个字节,范围-2147483648~2147483647(2进制:31个1)
bigint 大整型,占8个字节,范围很大
float 单精度浮点型,占4个字节,存储的数字越大精度越低
double 双精度浮点型,占8个字节
12345.6789e-1(向右)
1234.56789
123.456789e1(向左)
decimal(M,D) 定点小数,小数点不会发生变化,M代表总的有效位数,D代表小数点后的有效位数
99999.99
999.99
Boolean 布尔型,只有两个值,分别是true(真)和false(假),用于存储只有两个值得数据,例如:性别、是否在线.
使用时自动转为tinyint;true转为1,false.转为0,也可以直接插入1或0.
注意:true和false是关键字,使用的时候不能加引号
2.日期时间型-值必须加引号
date 日期型 '2021-12-30'
time 时间型 ' 15:21:30'
datetime 日期时间型 '2021-12-30 15:21:30'
3.字符串型-值必须加引号
varchar(M) 变长字符串,不会产生空间浪费,数据的操作速度相对慢,常用于存储变化长度的数据,例如:文章的标题、内容、姓名.....
M的最大值是65535
char(M) 定长字符串,可能会产生空间浪费,数据的操作速度相对快,常用于存储固定长度的数据,例如:手机号码、身份证号....
M的最大值是255
text(M)大型变长字符串,M的最大值是2G
使用合理的列类型
create table t2(
id int,
age tinyint,
title varchar(32),
price decimal(7,2), #99999.99
birthday date,
phone char(11),
sex Boolean #true-男 false-女
);
三、列约束
MySQL可以对插入的值进行验证,只有符合条件才允许插入
create table t1(
lid int 列约束
);
1.主键约束——primary key
声明了主键约束的列,不允许插入重复的值,一个表中只能有一个主键约束,
通常加在编号列上,会加快数据的查询速度。
null:表示空,是一个暂时无法确定的值,例如:暂时无法确定一个员工的手机号码,无法确定一个学生的成绩...
是关键词,使用时不能加引号
主键约束不允许插入null
2.非空约束——not null
声明了非空约束的列上,不允许插入null
mysql-day04
一.列约束
1.唯一约束--unique
声明了唯一约束的列不允许插入重复的值,允许为null,甚至多个null,一个表中可以有多个唯一约束
2.默认值约束-default
可以使用default关键字设置默认值,应用方式2种
(1)插入值的时候,没有出现的列自动应用默认值
insert into family(fid) values(50);
(2)在要使用默认值得地方直接写default,自动调用默认值
insert into family values(60,default);
3.检查约束-check
(了解)称自定义约束,可以自己指定约束条件
create table student(
score tinyint check(score>=0 and score<=100)
);
mysql不支持检查约束,认为会严重影响数据的插入速度
4.外键约束(外援)
要插入的值必须的在另一个表的主键列中出现过,外键列要和对应的主键列类型要保持一致
Foreign key(外键列) references 另一个表(主键列)
二、自增列
auto_increment:自动增长,在插入值的时候只需要赋值为null,就会获取最大值然后加1插入
注意:只适用于整数型的主键列上
允许手动赋值
三、简单查询
1.查询特定的列
示例:查询出所有员工的编号和姓名
select eid,ename from emp;
select ename,sex,birthday,salary from emp;
2.查询所有的列
示例:select eid,ename,sex,birthday,salary, deptid from emp;
select*from emp;
3.给列起别名
示例:查询出所有员工的编号和姓名,使用一个字母作为别名
select eid as a,ename as b from emp;
练习:查询出所有员工的姓名,生日,工资,使用一个字母作为别名
select ename as a,birthday as b,salary as c from emp;
简化:select ename a,birthday b,salary c from emp;
注意:
as 用来设置别名,可以省略的
4.查询时执行计算
示例:查询出所有员工的姓名及其年薪
select ename,salary*12 from emp;
练习:假设每个员工的工资增加2000,年终奖30000,查询出所有员工姓名及其年薪,使用一个字母作为别名
select ename a,(salary+2000)*12+30000 b from emp;
5.显示不同的记录
示例:查询出员工都分布在哪些部门
select distinct deptid from emp;
练习:查询出都有哪些性别的员工
select distinct sex from emp;
6.查询的结果排序
示例:查询出所有的部门,结果按照编号升序排列
select*from dept order by did asc;#ascendant 升序的
示例:查询出所有的部门,结果按照编号降序排列
select*from dept order by did desc;
Desc describe 描述
Desc descendant 降序的
练习:查询出所有的员工,结果按照工资降序排列
select*from emp order by salary desc;
练习:查询出所有的员工,结果集按照年龄从小到大排列
select*from emp order by birthday desc;
练习:查询所有的员工,结果集按照姓名升序排序
select*from emp order by ename asc;
练习: 查询所有的员工,结果集按照工资降序排列,如果工资相同,按照姓名排序
select*from emp order by salary desc,ename ;
练习: 查询所有的员工,结果集按照性别排序,如果性别相同,按照年龄从大到小排列
select*from emp order by sex asc,birthday ;
不加排序规则,默认是按照升序排列
7.条件查询
示例: 查询出编号为5的员工的数据
select*from emp where eid=5;
练习: 查询出姓名叫king的员工的数据
select*from emp where ename='king';
练习: 查询出30号部门下员工的数据
select*from emp where deptid=30;
> < >= <= = !=(不等于)
练习: 查询出不在10号部门的员工有哪些
select*from emp where deptid !=10;
练习: 查询出没有明确部门的员工有哪些
select*from emp where deptid is null;
练习: 查询出有明确部门的员工有哪些
select*from emp where deptid is not null;
and / && 并且
or/ || 或者
练习: 查询出工资在5000~8000之间的员工有哪些
select*from emp where salary >= 5000 and salary <=8000;
select*from emp where salary >= 5000 && salary <=8000;(注意)
select*from emp where salary between 5000 and 8000;
练习: 查询出工资在5000以下或者8000以上的员工有哪些
select*from emp where salary <= 5000 or salary >=8000;
select*from emp where salary <= 5000 || salary >=8000;(注意)
练习: 查询出工资在8000以上的女员工有哪些
select*from emp where sex = 0 and salary >=8000;
练习: 查询出20号部门和30号部门的员工有哪些
select*from emp where deptid= 20 or deptid= 30;
select*from emp where deptid in(20,30);
练习: 查询出不在20号部门和30号部门的员工有哪些
select*from emp where deptid != 20 and deptid != 30;
select*from emp where deptid not in(20,30);
8.模糊条件查询
示例: 查询出姓名中含有字母a的员工有哪些
select*from emp where ename like '%a%';
练习: 查询姓名中以a结尾的员工有哪些
select*from emp where ename like '%a';
练习: 查询姓名中第2个字符为a的员工有哪些
select*from emp where ename like '_a%';
% 匹配任意个字符 >=0
_ 匹配任意1个字符 =1
以上两个字符必须结合关键字like使用
9.分页查询
查询的结果集有太多的数据,一次显示不完,可以分页显示
需要有两个已知条件: 当前的页码、每页显示的数据量
select*from emp limit 开始查询的值,每页显示的数据量;
练习:假设每页显示5条记录,查询出前4页的数据
第1页:select*from emp limit 0,5;
第2页:select*from emp limit 5,5;
第3页:select*from emp limit 10,5;
第4页:select*from emp limit 15,5;
注意事项:limit后的两个值必须写数字,不能加引号.
每页开始查询的值=(当前页码-1)*每页的数据量
更多推荐
web前端——数据库
发布评论