数据库入门

1.数据库介绍

1.1 什么是数据库

存储数据用文件就可以了,为什么还需要数据库呢?
用文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

使用数据库来为了解决上述问题,它能够跟有效地管理数据。数据库可以提供远程服务,通过远程连接来使用数据库,因此也称为数据库服务器。

1.2 一些名词解释

服务器:

  1. 硬件: 提供远程主机的服务
  2. 软件: 网络上提供服务的软件
    (1)数据库服务器:提供管理数据(增删改查)的服务给远程来管理。
    (2)Web服务器:提供Web(浏览器访问)提供的远程服务。

服务端:
数据库服务器就是数据库服务端(软件)。

客户端:
需要通过客户端先连接到服务端,来操作数据。
如果(客户端)连接到远程的数据库服务器(服务端),数据都是保存在服务端。

数据库和数据结构的区别:
数据库:数据保存在硬盘
数据结构:数据保存在内存

硬盘和内存的区别:

  1. 硬盘大,内存小。
  2. 内存的成本相对于硬盘更高。
  3. 内存中的数据,不用担心断电的问题。
  4. 内存访问速度更快,硬盘中的数据访问及保存要慢很多。

1.3 数据库学习内容

(1)设计数据库表结构----类似数据结构中,要保存对象时,定义对象的属性。
(2)SQL语句(增删改查)
(3)通过Java来操作数据库

2. 数据库的操作

2.1 显示当前的数据库

show databases;

2.2 创建数据库

语法:

create database [if not exisis] db_name [create_specification[,create_specification]...]

create_specification:
[default] character set charset_name
[default] collate collation_name

说明:

  • 大写的表示关键字
  • []是可选项
  • character set:指定数据库采用的字符集
  • collate:指定数据库字符集的校验规则

示例:

  • 创建名为db_test1的数据库
create database db_test1;

说明: 当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf-8

  • 如果不存在名为db_test2的数据库,则创建一个名叫db_test2的数据库,如果存在则不创建
create database if not exists db_test2;
  • 如果系统没有db_test的数据库,则创建一个使用utf8mb4字符集的do_test数据库,如果有则不创建
create database if not exists db_test character set utf8mb4;

注意:

  • 我们在创建的时候常常结合if not exists 来操作,避免报错,如果不存在才创建,已经存在的话就不做任何操作。
  • MYSQL的utf8编码不是真正的utf8编码,其中没有包含某些复杂的中文字符。MYSQL真正的utf8是使用utf8mb4

2.3 使用数据库

use 数据库名;

2.4 删除数据库

语法:

drop database [if exists] db_name;

注意:

  • 数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除。
  • 删除常常结合if exists 来操作,避免报错,如果存在才删除,没有就不做任何操作。
drop database if exists db_test1;
drop database if exists db_test2;

3. 常用数据类型

3.1 数值类型

数据类型大小说明对应java类型
bit[(M)]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围: 0 − 2 M − 1 0-2^M-1 02M1适合存储只有两个值的数据Boolean
tinyInt1字节Byte
smallInt2字节Short
Int4字节Integer
bigInt8字节Long
float(M,D)4字节单精度,M指定长度,D指定小数位数,会发生精度丢失。Float
double(M,D)8字节Double
decimal(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数,精确数值。BigDecimal
numeric(M,D)M/D最大值+2和demical一样BigDecimal

3.2 字符串类型

数据类型大小说明对应Java类型
varchar(size)0-65,535字节可变长度字符串String
text0-65,535字节长文本数据String
mediumtext0-16777215字节中等长度文本数据String
blob0-65,535字节二进制形式的长文本数据byte[]

说明:

  • 对于字符串的存储,比较小的话就使用varchar;比较多的长文本使用text,更长可以使用mediumtext
  • 对于二进制数据,如文件,视频,音乐等等,一般不在数据库中存储(网络流量有限,假如把文件保存在数据库,那么花费在文件数据传输的流量就会多,真实的数据传输速度下降,一般是把文件存储在专门的文件服务器上)

3.3 日期类型

数据类型大小说明对应Java类型
datetime8字节范围从1000到9999年,不会进行时区的检索及转换 ,即不带时区java.util.Date、java.sql.Timestamp
timestamp4字节范围从1970到2038年,自动检索当前时区并进行转换,即带时区java.util.Date、java.sql.Timestamp

说明:MYSQL中也自带了一些日期的函数/变量:now()表示当前日期,日期包含:年月日时分秒毫秒

  1. 插入,where条件查询,使用日期的时候,建议带’当做字符串查询。
  2. 格式:yyyy-MM-dd HH:mm:ss(默认)。

4. 表的操作

需要操作数据库中的表时,需要先使用该数据库:

use db_test;

4.1 查看表结构

显示当前数据库中的所有表

show tables;

显示表的结构

desc 表名;

在这里插入图片描述
数据库与Java的对应关系
在这里插入图片描述

4.2 创建表

语法:

create table table_name(
field1 datatype,
field2 datatype,
field3 datatype
);

可以使用comment增加字段说明
示例:

create table stu_test(
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码',
age int,
sex varchar(1),
birthday timestmp,
amout decimal(13,2),
resume text
);

注意:最后的字段不要带" , "

4.3 删除表

语法格式:

drop [temporary] table [if exists] tbl_name [, tbl_name]

示例:

--删除 stu_test表
drop table stu_test;
--如果存在 stu_test表,则删除 stu_test表
drop table if exists stu_test;

5. 总结

SQL注意事项:

  1. 在命令行工具写sql时,最后;表示结束整个语句
    本质是输入;+回车,客户端才会发送sql语句到服务器,由服务端执行这条语句。
  2. sql的注释 – 注释内容(–后面要有一个空格)
    创建表时使用comment,可以加在表、字段上,可以在表结构中看到。
  3. 写sql时,表名、字段名尽量避免使用关键字,如果是关键字,在前后加’,如表名desc,创建时就应该写成create table ‘desc’ stu_test。
  4. 字符串,都需要使用单引号’字符串内容’。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值