什么是数据库:按照特定的形式组织起来方便存储数据,便于日后增删改查

数据库的发展历史:网状数据库--层次型数据库--关系型数据库--非关系型数据库

关系型数据库的逻辑结构:server--》Database--》Table--》Row--》Column

现在主流的数据库软件Mysql有收费的也有免费的这里学习以用Xampp为例示范

Xampp的下载网盘:

链接:https://pan.baidu.com/s/1XWEUJW6HWt9V82MvUWegRw
提取码:1111

在文本框累输入MySQL -hlocalhost -P3306 -uroot -p(password)一般没有密码回车两下即可

得到的效果如图此过程可简化为mysql -uroot 回车即可

-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开发之数据库基础相关推荐

  1. Web阶段--Oracle数据库基础知识点

    Web阶段–Oracle数据库基础知识点 一.数据库 1.定义 是一个数据存储管理的软件,全称rdbms(关系数据库管理系统),简称数据库(db) 2.为什么需要应用数据库? 1.现有文本文件存放数据 ...

  2. 名师讲坛——Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)

    [书名]<名师讲坛--Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax)> [作者]李兴华.王月清 [ISBN]9787302231585 ­}:YKf: ...

  3. 名师讲坛—Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)

    名师讲坛-Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax) 基本信息 作者: 李兴华    王月清   出版社:清华大学出版社 ISBN:9787302231585 ...

  4. 一个Web开发的客户端基础技术测试Demo

    最近参加了一个Web开发的客户端基础技术测试,虽然对于做前台开发的程序员来说比较简单,但对于一直做后台代码编写的程序员想掌握前台开发的基础来说,应该是一个比较好的Demo.对于Web初学者来说,也是一 ...

  5. Bootstrap响应式Web开发笔记01——基础入门

    Bootstrap响应式Web开发笔记01--基础入门 Bootstrap响应式Web开发笔记02--移动端页面布局 Bootstrap响应式Web开发笔记03--Bootstrap栅格系统 Boot ...

  6. Web开发之数据库总结

    Web开发之数据库总结 mybatis中useGeneratedKeys用法--插入数据库后获取主键值 1.keyProperty对应的是实体中的属性,不是数据库字段 2.对于非自增主键,必须显式写出 ...

  7. 开课吧:Web开发要学习哪些基础知识?

    今天带来的知识点主要是让大家在学习过程中有一个清晰的思路,如果想在网络后端开发的道路上走得更远,还需要修炼自己的内功,这些基础知识是很重要的. 前端知识 最好能了解一些前端知识(HTML,CSS,Ja ...

  8. python上手--flask框架web开发实践-数据库

    这篇文章,由易而难,步骤清晰,思路讲得很明白.花两小时跟着作者稻谷先生的这篇文章走一遍,对学习python使用Flask来开发web的应用很有帮助. python上手--flask框架web开发实践 ...

  9. python开发小型数据库_python web开发之数据库ORM的 peewee库 动手学习实践笔记

    背景 在web开发的时候,一些比较简单的小型系统其实也得ORM框架,显而易见其实开发速度上是提升很多,因为有必要学习一下对应的ORM库. 关于ORM一些说明 关于ORM(Object Relation ...

最新文章

  1. 如果三国中有5G网,刘关张该这样拜把子!
  2. 怎么提高单片机编程水平?
  3. php强制下载压缩包损坏,php 通过header下载中文文件名 压缩包损坏或文件不存在的问题...
  4. Selenium的默认配置文件和创建自己的配置文件
  5. java实例拷贝,Apache Commons包 BeanUtils 对象拷贝实例demo
  6. Office 2016中Excel的部分快捷方式
  7. LINUX系统用户操作命令
  8. android 清理大师 编程,清理大师 Android v2.3.3
  9. 超酷!Python 绘制属于你的世界地图
  10. 谈谈ILDasm的功能限制与解除
  11. NAND Flash内部结构简介
  12. iphone双重认证关闭不了怎么办_怎么关闭iPhone双重认证?苹果手机关闭双重认证的两种操作方法 ... ......
  13. python 删除字典none_python – 从字典中删除NoneTypes
  14. 如何按州跟踪缺席选票
  15. 先决条件检查失败错误
  16. 《大数据时代:生活、工作与思维的大变革》:看“大数据时代预言家”的真知灼见
  17. 据说,这四招能提高你的打字速度 快来试试
  18. docker容器不阻塞的进入
  19. 5G网络架构(接入网,传输网,核心网)
  20. python0.618方法

热门文章

  1. 音视频八股文(1)--音视频基础
  2. 查看MAC CPU型号
  3. 飘云QQ2007现有BUG解决办法...终于搞定!
  4. SpringBoot 集成 Swagger2
  5. 看懂数据,有这4个武器就够了
  6. Struts,JSP和XML解析三个问题
  7. slf4j从LoggerFactory.getLogger()说起
  8. Java小项目中WEB-INF下jsp页面如何访问?
  9. python学习笔记:python文件操作与异常处理
  10. python-None