数据库概述

  本菜鸟使用的数据库软件为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入门 数据库第一天的更多相关文章

  1. Javaweb入门 JDBC第一天

    JDBC的定义和作用 DBC(Java DataBase Connectivity) Java数据库连接, 其实就是利用Java语言/程序连接并访问数据库的一门技术. 之前我们可以通过cmd或者nav ...

  2. Javaweb入门 数据库第二天

    接着说昨天语法中提到的drop,delete和truncate的区别 drop用于删除库和表,不能用于删除表记录 delete和truncate都可以用于删除表记录,不能用于删除库和表 而delete ...

  3. Storm入门之第一章

    Storm入门之第一章 1.名词 spout龙卷,读取原始数据为bolt提供数据 bolt雷电,从spout或者其他的bolt接收数据,并处理数据,处理结果可作为其他bolt的数据源或最终结果 nim ...

  4. Entity Framework 6.0 入门系列 第一篇

    Entity Framework 6.0 入门系列 第一篇 好几年前接触过一些ef感觉不是很好用,废弃.但是 Entity Framework 6.0是经过几个版本优化过的产物,性能和功能不断完善,开 ...

  5. Elasticsearch7.X 入门学习第一课笔记----基本概念

    原文:Elasticsearch7.X 入门学习第一课笔记----基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...

  6. Newbe.Claptrap 框架入门,第一步 —— 开发环境准备

    Newbe.Claptrap 框架依托于一些关键性的基础组件和一些可选的辅助组件.本篇我们来介绍一下如何准备一个开发环境. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如 ...

  7. 《进击吧!Blazor!》系列入门教程 第一章 8.部署

    <进击吧!Blazor!>是本人与张善友老师合作的Blazor零基础入门教程视频,此教程能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力. 视频地址:https://s ...

  8. Mybatis最入门---数据库的下载与安装

    [一步是咫尺,一步即天涯] 近期.因为工作进度调整,之前的Spring教程就先临时告一段落了,兴许找个时间继续更新,假设有那位看官想了解某个内容的,敬请留言,大家一起学习. 作为数据库工具的使用开篇. ...

  9. JavaWeb入门——Tomcat的目录结构

    JavaWeb入门——Tomcat的目录结构 摘要:本文主要了解了Tomcat的目录结构. 目录结构 打开Tomcat的目录,可以看到如下文件和文件夹: bin目录 该目录下存放的是二进制可执行文件. ...

随机推荐

  1. Quartz.Net实现作业定时调度详解

    1.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的作业调度框架,你能够用它来为执行一个作业而创建简单的或复杂的作业调度.它有很多特征,如:数据库支持,集群,插件,支持cron- ...

  2. Spring Boot的学习之路(01):缘起

    有人说,Spring Boot的出现,让Java迎来了又一春,它是Java应用开发的颠覆者,彻底改变了Java应用开发的模式. 2017年,SpringBoot闯入我的生活, 也让我迎来了又一春 我开 ...

  3. Spring Boot:实现MyBatis动态创建表

    综合概述 在有些应用场景中,我们会有需要动态创建和操作表的需求.比如因为单表数据存储量太大而采取分表存储的情况,又或者是按日期生成日志表存储系统日志等等.这个时候就需要我们动态的生成和操作数据库表了. ...

  4. Hive —— 安装部署

    一.安装Hive 1.1 下载并解压 下载所需版本的Hive,这里我下载版本为cdh5.15.2.下载地址:http://archive.cloudera.com/cdh5/cdh/5/ # 下载后进 ...

  5. 纯异步nodejs文件夹(目录)复制

    思路: 1.callback 驱动 2.递归所有需要复制文件 3.在一定阀值下并发复制文件 4.运行需要安装 async.js     npm install async 代码如下: var asyn ...

  6. Linux不重启识别新添加的磁盘

    现网的一台EXSI 下的虚拟机一般在进行配置变更后都会通过重启来识别新增的配置,不过业务侧某台主机因为业务需要无法重启,想通过不重启直接识别护容上去的新磁盘.经测试,发现如下方可以解决. 1.通过ex ...

  7. python学习 -女神或者男神把微信消息撤回后好慌,有了这个妈妈再也不担心你看不到女神或者男神撤回的消息了(超详解)

    简介 有时候在忙工作,女朋友发了一个消息,就撤回了,但是人天生的都有一颗好奇心,而且在当今这个时代找个女朋友不容易,一个程序猿找一个女朋友更是不容易的.人家好不容易跟你,你还不得把人家当老佛爷侍候着, ...

  8. epoll使用详解:epoll_create、epoll_ctl、epoll_wait、close

    epoll - I/O event notification facility 在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是 ...

  9. pdfminer获取整页文本

    #! python2 # coding: utf-8 import sys from cStringIO import StringIO from pdfminer import pdfinterp ...

  10. 【POJ - 1190】生日蛋糕 (dfs+剪枝)

    Descriptions: 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为 ...