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前端——数据库