web开发之数据库基础
什么是数据库:按照特定的形式组织起来方便存储数据,便于日后增删改查
数据库的发展历史:网状数据库--层次型数据库--关系型数据库--非关系型数据库
关系型数据库的逻辑结构:server--》Database--》Table--》Row--》Column
现在主流的数据库软件Mysql有收费的也有免费的这里学习以用Xampp为例示范
Xampp的下载网盘:
链接:https://pan.baidu.com/s/1XWEUJW6HWt9V82MvUWegRw
提取码:1111
在文本框累输入MySQL -hlocalhost -P3306 -uroot -p(password)一般没有密码回车两下即可
-h host 表示服务器的域名或者ip地址
-P port 端口mysql服务占用的是3306端口
-u user 用户名,root是管理员账户
-p password 密码 xampp下root密码为空
常用的管理命令(结束都以英文的分号结尾)
quit;\q; exit; 都为退出服务器连接
show databases;显示当前数据库服务下所有的数据库
use + 数据库名称; 进入到指定的数据库
show tables;显示当前数据库下所有的数据表
desc + 数据表名称;描述指定数据表都有哪些列
创建数据局库及插入数据库一般流程(脚本模式)
(1). set names utf8 (设置客户端连接服务器端的编码)
(2) drop database if exists 数据库名称 (丢弃数据库如果数据库存在)
(3) create database 数据库名称 charset=utf8(创建数据库,同时设置储存的编码)
(4) use 数据库 (进入数据库)
(5) create table 数据表名称(
ID int,
name varchar(8),
ege int
); 创建表并插入列名称
(6) insert into 表名称 values(1,'张山',22) 插入对应的列表数据
(7)select * from 表名称 (查看表)
以上为脚本模式 若是交互模式则需要在命令窗口一行一行键入
以上所用到脚本编辑软件为editplus(没有单词提示适用于初学者)
1.SQL命令
(1)修改数据
update 表名 set 列名=‘新插入的数据’,列名=‘新插入的数据’ where 列名(一般是编号列)=‘对应的列序号’
(2)删除数据
delete from 表名 where 列名(一般是编号列)=‘对应的列序号’
2,计算机是如何存储数据的(这关系到编码的问题在我的另一篇博客已经说明这里不赘述了)
3.列类型
(1)数值型--不必加引号
tinyint 微整形 2字节 范围-128~127
smallint 小整型 2字节 范围 -32768~32767
int 整型 4字节 范围 -2147483648~2147483647
bigint 大整型 8字节 范围 很大
float单精度浮点型 4字节存在误差
double 双精度浮点型 8字节 有误差
decimal(M,D)定点小数 小数点位数不会发生变化M为总的有效位数,D代表小数点后的有效位数
bool/boolean 布尔型 通常只有两个值,分别为True ,false ,在数据库中布尔型会自动转换为tinyint true代表1 false代表0 bool通常用于存储只有两个结果的数据 如性别等
(2)日期型 --需要加引号
date 日期 2020-12-31
time 时间 12:30:59
datetime 日期时间 为上面两者相加
(3)字符串型 --需要加引号
varchar(M)变长字符串,几乎不会造成空间浪费,数据操作速度相对慢,M的最大值65535
char(M)定长字符串,可能产生浪费,数据操作速度相对快,M的最大值255,常用于存储固定长度的数据,例如手机号码、身份证号码..
text(M)大型长字符串
4.列约束 mysql可以对要插入的数据进行特定的验证,只有符合格式才允许插入,否则认为非法的插入,
(1)主键约束--primary key声明了主键约束的列上,不允许出现重复的值;一个数据表中只能有一个主键约束,通常加在编号列上,可以加快数据的查找速度。
null 表示表示一个暂时无法确定的值(未知的值),
(2) 非空约束--not null
声明了非空约束的列上,不允许插入null
(3)唯一约束--unique 声明了唯一约束的列上禁止插入重复的值
(4)默认值约束--default 使用default关键之设置默认值,有两种方式可以应用默认值
insert into 表名 values(6, ‘小米Air’, default….);添加数据时直接使用默认值 或者在创建列名是直接在数据类型后设置默认值 default (somthing)
insert into 表名(列名(无默认值),列名(无默认值),列名(无默认值)) values(7,’tpe470’,2999);直接添加不需要默认值的数据,默认值自动生成使用
(5)检查约束--check 也称为
自定义约束 由于前端编程时大都会考虑到检查约束如邮箱格式,电话号码,身份证号码等 所以MySQL不支持检查约束这样会极大影响数据的插入速度,造成服务器压力
6)外键约束
声明了外键约束的列上,取值会到另一个表的主键列。
外键列和对应的另一个表主键列,列类型要保持一致。
在添加表的列名最后加入外键约束 foreign key(外键列) references 另一个表(主键列)
5.自增列
auto_increment:自动增长,一但设置了自增列,只需要赋值为null,就会获取最大值然后加1插入。
注意:
自增列必须添加在整数形式的主键列
自增列允许手动赋值
--------------------------------------------------------
数据库之简单查询
1,查询特定的列
SELECT 列名,列名 FROM 表名
2,查询所有的列
SELECT * FROM 表名
3,给列起别名
SELECT 列名 AS 新列名,列名 AS 新列名,FROM 表名 //(其中AS 可以省略)
4,显示不同的记录/合并相同的记录
SELECT DISTINCT 列名 FROM 表名
5 查询时执行计算
SELECT 计算内容(列名+计算方式)FROM 表名 //(如计算工资*12等等)
6查询结果集排序
SELECT * FROM 表名 ORDER BY 列名 desc/asc (默认asc desc为由大到小 asc反之)
7按照条件查询
SELECT * FROM 表名 WHERE 条件 //可以通过这些:(< > = != >= <=)(between and/not between and)(in/not in) 设置限制条件
8模糊条件查询
SELECT * FROM 表名 WHERE 列名 LIKE '% 或_' //(% 大于0的任意字符)(_等于1的任意字符)
9分页查询
分页查询需要两个数据:当前的页码,当前页码数据的数量
每页开始查询的值 = (页码-1)*每页数据量 //每页开始查询的值有点类似于重第几个id开始分页 仅仅只是类似 便于理解
SELECT 列名(可以多列) FROM 表名 LIMIT 每页开始查询的值,每页码数据的数量 //LIMIT后面空格是必须的
复杂查询
1聚合查询/分组查询
SELECT COUNT(列名) FROM 表名 #查询 列名的总数量 列名一般为表的id(主键)
SELECT SUM(列名) FROM 表名 WHERE (条件) #查询 列名的总和
SELECT AVG(列名) FROM 表名WHERE(条件)#查询 列名的平均数
SELECT MAX(列名) FROM 表名WHERE(条件)#查询 列名的最大值
SELECT MIN(列名) FROM 表名WHERE(条件)#查询 列名的最小值
2,分组查询: 只能查询分组条件和聚合函数 关键字为GROUP BY
SELECT 列名,MAX(列名),MIN(列名),AVG(列名) FROM 表名 GROUP BY 列名;#红色列名最好相同否则得到的数据可能不准确 例如:
3,查询日期中的年月
SELECT YEAR(2020-12-12) FROM 表名 #查询日期中的年份2020
SELECT MONTH(2020-08-30) FROM 表名 # 查询日期中的月份08
4子查询
SELECT * FROM 表名1 WHERE 列名=(SELECT 列名 FROM 表名2 WHERE 列名=’列内容’); #一般两表含有相同或相似的内容
SELECT * FROM 表名1 WHERE YEAR(日期)=( SELECT YEAR(日期) FROM 表名1 WHERE #同一表中相同如期的数据
5多表查询
SELECT 表1列名1,表2列名1 FROM 表名1,表名2 WHERE 表名1列名2=表名2列名2;(此法可能会些许数据由于数据不对称二查询不到,两个表列名2一般含有外键关系)
(1)内连接——和之前查询结果一致
SELECT 表1列名1,表2列名1 FROM 表名1 INNER JOIN 表名2 ON 表名1列名2=表名2列名2 #两个表列名2一般含有外键关系
(2)左外连接——显示左侧表中所有的记录
SELECT 表1列名1,表2列名1 FROM 表名1 LEFT OUTER JOIN 表名2 ON 表名1列名2=表名2列名2 #两个表列名2一般含有外键关系
先写哪个表哪个表就是左侧的,OUTER关键字可以省略
(3)右外连接——显示右侧表中所有记录
SELECT 表1列名1,表2列名1 FROM 表名1 RIGHT OUTER JOIN 表名2 ON 表名1列名2=表名2列名2 #同上;
后写哪个表哪个表就是右侧,OUTER关键字可以省略
(4)全连接
显示左侧和右侧表中所有记录——FULL JOIN
mysql不支持全连接
UNION 合并相同的记录
UNION ALL 不合并相同的记录
把左外连接的结果和右外连接的结果合并起来
(SELECT 表1列名1,表2列名1 FROM 表名1 LEFT OUTER JOIN 表名2 ON 表名1列名2=表名2列名2)
UNION
( SELECT 表1列名1,表2列名1 FROM 表名1 RIGHT OUTER JOIN 表名2 ON 表名1列名2=表名2列名2);
到此web前端的数据库基本结束
JavaScript基础传送门https://www.cnblogs.com/CIBud/p/14105500.html
web开发之数据库基础相关推荐
- Web阶段--Oracle数据库基础知识点
Web阶段–Oracle数据库基础知识点 一.数据库 1.定义 是一个数据存储管理的软件,全称rdbms(关系数据库管理系统),简称数据库(db) 2.为什么需要应用数据库? 1.现有文本文件存放数据 ...
- 名师讲坛——Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)
[书名]<名师讲坛--Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax)> [作者]李兴华.王月清 [ISBN]9787302231585 }:YKf: ...
- 名师讲坛—Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)
名师讲坛-Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax) 基本信息 作者: 李兴华 王月清 出版社:清华大学出版社 ISBN:9787302231585 ...
- 一个Web开发的客户端基础技术测试Demo
最近参加了一个Web开发的客户端基础技术测试,虽然对于做前台开发的程序员来说比较简单,但对于一直做后台代码编写的程序员想掌握前台开发的基础来说,应该是一个比较好的Demo.对于Web初学者来说,也是一 ...
- Bootstrap响应式Web开发笔记01——基础入门
Bootstrap响应式Web开发笔记01--基础入门 Bootstrap响应式Web开发笔记02--移动端页面布局 Bootstrap响应式Web开发笔记03--Bootstrap栅格系统 Boot ...
- Web开发之数据库总结
Web开发之数据库总结 mybatis中useGeneratedKeys用法--插入数据库后获取主键值 1.keyProperty对应的是实体中的属性,不是数据库字段 2.对于非自增主键,必须显式写出 ...
- 开课吧:Web开发要学习哪些基础知识?
今天带来的知识点主要是让大家在学习过程中有一个清晰的思路,如果想在网络后端开发的道路上走得更远,还需要修炼自己的内功,这些基础知识是很重要的. 前端知识 最好能了解一些前端知识(HTML,CSS,Ja ...
- python上手--flask框架web开发实践-数据库
这篇文章,由易而难,步骤清晰,思路讲得很明白.花两小时跟着作者稻谷先生的这篇文章走一遍,对学习python使用Flask来开发web的应用很有帮助. python上手--flask框架web开发实践 ...
- python开发小型数据库_python web开发之数据库ORM的 peewee库 动手学习实践笔记
背景 在web开发的时候,一些比较简单的小型系统其实也得ORM框架,显而易见其实开发速度上是提升很多,因为有必要学习一下对应的ORM库. 关于ORM一些说明 关于ORM(Object Relation ...
最新文章
- 如果三国中有5G网,刘关张该这样拜把子!
- 怎么提高单片机编程水平?
- php强制下载压缩包损坏,php 通过header下载中文文件名 压缩包损坏或文件不存在的问题...
- Selenium的默认配置文件和创建自己的配置文件
- java实例拷贝,Apache Commons包 BeanUtils 对象拷贝实例demo
- Office 2016中Excel的部分快捷方式
- LINUX系统用户操作命令
- android 清理大师 编程,清理大师 Android v2.3.3
- 超酷!Python 绘制属于你的世界地图
- 谈谈ILDasm的功能限制与解除
- NAND Flash内部结构简介
- iphone双重认证关闭不了怎么办_怎么关闭iPhone双重认证?苹果手机关闭双重认证的两种操作方法 ... ......
- python 删除字典none_python – 从字典中删除NoneTypes
- 如何按州跟踪缺席选票
- 先决条件检查失败错误
- 《大数据时代:生活、工作与思维的大变革》:看“大数据时代预言家”的真知灼见
- 据说,这四招能提高你的打字速度 快来试试
- docker容器不阻塞的进入
- 5G网络架构(接入网,传输网,核心网)
- python0.618方法