Javaweb入门 数据库第一天
数据库概述
本菜鸟使用的数据库软件为Mariadb,以下内容都是以Mariadb数据库软件来写的学习总结。
数据库
所谓的数据库就是用于存储、管理数据的仓库,数据库根据底层存储数据结构的不同可以分为很多类,但现在流行的是关系型数据库和非关系型数据库。
关系型数据库
关系型数据库底层是以二维表的形式保存数据的数据库。(模型就是我们常使用的表格)
常用的关系型数据库有SQL server 、Oracle、Mysql、Mariadb 以及DB2。
非关系型数据库
非关系型数据库底层是key-value结构。
数据库名词解释
数据库服务器
安装的mysql服务器软件,将数据库服务器软件安装在电脑上才可以对外提供服务。
数据库
一个数据库服务器可以有很多个数据库,但是一般情况下一个网站的所有数据会存放在一个数据库当中。
表(数据表)
一个数据库中可以有多个表,一般情况下,一类型的数据会存放在一张表中,比如跟用户相关的数据可以存放在用户表中。
在Java中一个类封装一类型信息,因此就像Java中一个类对应一张表。
表记录
一张表中可以有多个记录(可以将一行称为一条记录信息)。
在Java中一个类可以创建多个实例,就像Java中的一个实例对应一条表记录。
数据库中的数据类型
数值类型
数据库中的数值类型跟Java中整型数据类型一一对应,而这提到的数据库常用数值类型有:int和double,名字不一定一样,但数据库中的int 和double类型跟Java中一样。
int占用4个字节
double 占用8个字节
字符串类型
mysql中包含的字符串类型并不是Java中的String,而是char和varchar两种。
char和varchar的区别
char(n) 为定义字符串长度,数据的长度可以小于等于n个字符,但是当数据的字符数小于定义的字符串长度时,char会在数据后面补齐数据长度,也就是说不管你存储的数据是否达到了定义长度,最后的字符串长度始终为定义的长度。
varchar(n)也为定义字符串长度,数据长度同样可以小于等于n个字符,与char不同的是当你存储的数据不足定义的长度时,varchar会把多出来的空间让出来,数据字符个数是多少,字符串长度就是多少。
说了区别再说一下优缺点:char存储数据的速度会比varchar快,但是可能会有空间浪费;varchar存储数据比char慢,但是不会有空间浪费。
大文本类型
Text 0-65535个字节长度
bigtext 4GB字节长度
日期类型
date
date类型格式为:年月日
time
time类型格式为:时分秒
datetime
datetime类型格式为:年月日 时分秒
timestamp
时间戳(存的是1970-1-1到指定日期的毫秒值,但是看着还是日期时间格式
timestamp类型的类可以设置自动更新为当前时间,而datetime不行。
Mariadb内的数据库里表的增删查改操作语法
在操作语句中只有少部分语句可以结尾不加分号,为了便捷操作,将所有语句结束都加上分号
通过cmd连接mysql
在cmd命令中输入:mysql -uroot -proot(根据安装时的设置来连接)
查看mysql服务器中的数据库
show databases;
进去某一数据库(进入数据库后才能操作库中的表和表记录)
use 数据库名;
查看进入的数据库名:select database();
查看当前数据库中的所有表
show tables;
删除某一数据库
drop database 库名;
判断是否存在这个库,若不存在什么都不做
drop database if exists 库名;
创建数据库,指定编码为utf8
create database 库名 charset utf8;
查看建库时的语句(并验证数据库使用的编码)
show create database 库名;
删除数据库中的表
drop table 表名;
数据库中创建表
create table 表名(
列名 数据类型,
列名 数据类型,
......
);
查看表结构
desc 表名;
查询建表语句
show create table 表名;
在表中插入数据
insert into 表名(列1,列2,列3...) values(值1,值2,值3...);列跟值要一一对应
查询表中所有信息
select * from 表名;
查询指定列
select 列名,列名 from 表名;
修改表中的数据
update 表名 set 列=值;
删除表中所有表记录
delete from 表名;
将表摧毁再重新创建
truncate table stu;
有一张表,表中的id列为整值类型,email列,gender列
思考1:如果id是编号,编号应该是唯一的且不能为空,如何保证这一点?
1.主键约束
如果为一个列添加了主键约束,该列就是这张表的主键,主键要求唯一且不能为空。添加主键约束的语法是:
create table stu(
id int primary key,
...
);
2.唯一约束
如果为一个列添加了唯一约束,该列的值就不能重复(但是可以为null), 添加唯一约束的语法是:
create table user(
email varchar(50) unique,
...
);
3.非空约束
如果为一个列添加了非空约束,该列的值就不能为空(但是可以重复), 添加非空约束的语法是:
create table stu(
gender varchar(2) not null,
...
);
思考2:在插入数据时,如何保证插入的id不会因为重复而报错?
如果id(主键)是数值类型, 可以设置主键自增机制, 让数据库帮我们维护id的值, 即我们在插入记录时, 可以不用给id赋值, 只需要给一个null, 数据库会通过自身保存的变量给id赋值!
create table stu(
id int primary key auto_increment,
...
);
思考3:如果id主键设置了自增后,在插入数据时,是否可以设置id的值?
即使id设置了自增, 也可以在插入数据时为id赋值。
如果赋的id的值比自增变量的值要大,结果是将赋的id值加1后赋值给自增变量
Javaweb入门 数据库第一天的更多相关文章
- Javaweb入门 JDBC第一天
JDBC的定义和作用 DBC(Java DataBase Connectivity) Java数据库连接, 其实就是利用Java语言/程序连接并访问数据库的一门技术. 之前我们可以通过cmd或者nav ...
- Javaweb入门 数据库第二天
接着说昨天语法中提到的drop,delete和truncate的区别 drop用于删除库和表,不能用于删除表记录 delete和truncate都可以用于删除表记录,不能用于删除库和表 而delete ...
- Storm入门之第一章
Storm入门之第一章 1.名词 spout龙卷,读取原始数据为bolt提供数据 bolt雷电,从spout或者其他的bolt接收数据,并处理数据,处理结果可作为其他bolt的数据源或最终结果 nim ...
- Entity Framework 6.0 入门系列 第一篇
Entity Framework 6.0 入门系列 第一篇 好几年前接触过一些ef感觉不是很好用,废弃.但是 Entity Framework 6.0是经过几个版本优化过的产物,性能和功能不断完善,开 ...
- Elasticsearch7.X 入门学习第一课笔记----基本概念
原文:Elasticsearch7.X 入门学习第一课笔记----基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...
- Newbe.Claptrap 框架入门,第一步 —— 开发环境准备
Newbe.Claptrap 框架依托于一些关键性的基础组件和一些可选的辅助组件.本篇我们来介绍一下如何准备一个开发环境. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如 ...
- 《进击吧!Blazor!》系列入门教程 第一章 8.部署
<进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...
- Mybatis最入门---数据库的下载与安装
[一步是咫尺,一步即天涯] 近期.因为工作进度调整,之前的Spring教程就先临时告一段落了,兴许找个时间继续更新,假设有那位看官想了解某个内容的,敬请留言,大家一起学习. 作为数据库工具的使用开篇. ...
- JavaWeb入门——Tomcat的目录结构
JavaWeb入门——Tomcat的目录结构 摘要:本文主要了解了Tomcat的目录结构. 目录结构 打开Tomcat的目录,可以看到如下文件和文件夹: bin目录 该目录下存放的是二进制可执行文件. ...
随机推荐
- idea提交代码到自己git账号的master branch
1.注册GitHub账号 2.创建本地密钥与远程仓库连接(使用idea的话,这第二步可能不是必须的,但是密钥我之前配置过.所以写下来) ①安装git 客户端sudo apt-get install g ...
- Codeforces 1133E - K Balanced Teams - [DP]
题目链接:https://codeforces.com/contest/1133/problem/C 题意: 给出 $n$ 个数,选取其中若干个数分别组成 $k$ 组,要求每组内最大值与最小值的差值不 ...
- Python基础-使用range创建数字列表以及简单的统计计算和列表解析
1.使用函数 range() numbers = list(range[1,6]) print (numbers) 结果: [1,2,3,4,5] 使用range函数,还可以指定步长,例如,打印1~1 ...
- leetcode的Hot100系列--序
小白程序猿,练练手,做做题目,分享下经验, 有不对的,还请大家能够指出,多多包涵!谢谢!! 先简单,后复杂,循序渐进,希望能够坚持下来, 大家一起进步~~
- Codeforces 730I:Olympiad in Programming and Sports(最小费用流)
http://codeforces.com/problemset/problem/730/I 题意:有n个人参加两种比赛,其中每个人有两个参加比赛的属性,如果参加了其中的一个比赛,那么不能参加另一个比 ...
- HDU 5521:Meeting(最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=5521 Meeting Problem Description Bessie and her friend E ...
- .NET中生成动态验证码
.NET中生成动态验证码 验证码是图片上写上几个字,然后对这几个字做特殊处理,如扭曲.旋转.修改文字位置,然后加入一些线条,或加入一些特殊效果,使这些在人类能正常识别的同时,机器却很难识别出来,以达到 ...
- 在Ubuntu16.04 TLS 安装LAMP
准备在虚拟机上搭建一个靶机系统(DoraBox),但是还不想使用一键搭建所以起了心思准备使用LAMP框架搭载这个靶机系统,于是有了以下文章,先从百度搜索一下,Ubuntu搭建LAMP. 然后点进去第一 ...
- Android native进程间通信实例-socket本地通信篇之——基本通信功能
导读: 网上看了很多篇有关socket本地通信的示例,很多都是调通服务端和客户端通信功能后就没有下文了,不太实用,真正开发中遇到的问题以及程序稳定性部分没有涉及,代码健壮性不够,本系列(socket本 ...
- 基于 Jmeter 的 web 端接口自动化测试平台(转载)
框架 功能点 批量导入har包生成接口用例 接口用例分组树形展示 用例编辑失焦自动保存 用例编写提供快捷调试模块 支持多类型参数,json+文本两种校验 支持同一个项目中接口参数传递 提供即时任务+每 ...