当前位置: 首页 > article >正文

【JavaWeb学习Day09】

数据库

定义

1.数据库:DataBase(DB),是存储和管理数据的仓库。

2.数据库管理系统:DataBase Management System(DBMS),操纵和管理数据库的大型软件。

3.SQL:Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

一、MySQL概述

1.安装(省略)

MySQL连接:

mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)

2.数据模型

关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库

特点;

1.使用表存储数据,格式统一,便于维护。

2.使用SQL语言操作,标准统一,使用方便,可用于复杂查询。

二、SQL语句

1.SQL

sql:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

分类:

2.DDL

  1. 查询数据库
  • 查询所有数据库

show databases;
  • 查询当前数据库

select database();
  1. 创建数据库
  • 语法:

create database [ if not exists ] 数据库名  [default charset utf8mb4];
-- 数据库不存在,则创建该数据库;如果存在则不创建
create database if not exists itcast; 
  1. 使用数据库
  • 语法:

use 数据库名 ;
  1. 删除数据库
  • 语法:

    drop database [ if exists ] 数据库名 ;
    • 如果删除一个不存在的数据库,将会报错。

    • 可以加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。

  • 案例:删除itcast数据库

    drop database if exists itcast; -- itcast数据库存在时删除

说明:上述语法中的database,也可以替换成 schema

  • 如:create schema db01;

  • 如:show schemas;

3.图形化工具

  1. 介绍

前面我们讲解了DDL中关于数据库操作的SQL语句,在我们编写这些SQL时,都是在命令行当中完成的。大家在练习的时候应该也感受到了,在命令行当中来敲这些SQL语句很不方便,主要的原因有以下 3 点:

  1. 没有任何代码提示。(全靠记忆,容易敲错字母造成执行报错)

  2. 操作繁琐,影响开发效率。(所有的功能操作都是通过SQL语句来完成的)

  3. 编写过的SQL代码无法保存。

在项目开发当中,通常为了提高开发效率,都会借助于现成的图形化管理工具来操作数据库。

目前MySQL主流的图形化界面工具有以下几种:

DataGrip是JetBrains旗下的一款数据库管理工具,是管理和开发MySQL、Oracle、PostgreSQL的理想解决方案。

官网: DataGrip:由 JetBrains 开发的数据库和 SQL 跨平台 IDE

DDL-表结构-创建

创建表的语法:

-- 创建表
create table user(
    id int comment 'ID,唯一标识',
    username varchar(50) comment '用户名',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '性别'
) comment '用户信息表';
SHOW VARIABLES LIKE 'character_set%';

约束:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确性、有效性和完整性。

create table user(
    id int primary key auto_increment comment 'ID,唯一标识',-- 主键约束 anto_increment
    username  varchar(50) not null unique comment '用户名',-- 非空,唯一
    name varchar(10) not null comment '姓名',-- 非空
    age int comment '年龄',
    gender char(1) default '男' comment '性别'-- 默认
) comment '用户信息表';

主键自增:auto_increment

  • 每次插入新的行记录时,数据库自动生成id字段(主键)下的值

  • 具有auto_increment的数据列是一个正数序列开始增长(从1开始自增)

数据类型:

1.数值类型:

类型大小(byte)有符号(SIGNED)范围无符号(UNSIGNED)范围描述备注
tinyint1(-128,127)(0,255)小整数值
smallint2(-32768,32767)(0,65535)大整数值
mediumint3(-8388608,8388607)(0,16777215)大整数值
int4(-2147483648,2147483647)(0,4294967295)大整数值
bigint8(-2^63,2^63-1)(0,2^64-1)极大整数值
float4(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值float(5,2):5表示整个数字长度,2 表示小数位个数
double8(-1.7976931348623157 E+308,1.7976931348623157 E+308)0 和 (2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值double(5,2):5表示整个数字长度,2 表示小数位个数
decimal小数值(精度更高)decimal(5,2):5表示整个数字长度,2 表示小数位个数

数值类型的选取原则: 在满足业务需求的前提下, 尽可能选择占用磁盘空间小的数据类型

2.字符串类型:

类型大小描述
char0-255 bytes定长字符串
varchar0-65535 bytes变长字符串
tinyblob0-255 bytes不超过255个字符的二进制数据
tinytext0-255 bytes短文本字符串
blob0-65 535 bytes二进制形式的长文本数据
text0-65 535 bytes长文本数据
mediumblob0-16 777 215 bytes二进制形式的中等长度文本数据
mediumtext0-16 777 215 bytes中等长度文本数据
longblob0-4 294 967 295 bytes二进制形式的极大文本数据
longtext0-4 294 967 295 bytes极大文本数据

如果一个字段的长度是固定的,建议使用char;如:身份证、手机号

如果一个字段的长度不是固定的,建议使用varchar;如:用户名、姓名

3.日期时间类型:

类型大小(byte)范围格式描述
date31000-01-01 至 9999-12-31YYYY-MM-DD日期值
time3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
year11901 至 2155YYYY年份值
datetime81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
timestamp41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
案例:根据页面原型,设计员工表

1.阅读并分析页面原型及需求

2.分析表中包含那些字段,以及字段的类型、约束

3.创建表结构

-- 案例:设计员工表 emp
-- 基础字段:id 主键:create_time 创建时间:update_time 修改时间
create table emp(
    id int unsigned primary key auto_increment comment 'ID,主键',
    username varchar(20) not null unique comment '用户名',
    password varchar(32) default '123456' not null comment '密码',
    name varchar(10) not null comment '姓名',
    gender tinyint unsigned not null comment '性别,1 男:2 女',
    phone char(11) not null comment '手机号',
    job tinyint unsigned comment '职位,1 班主任,2 讲师,3 学工主管,4 教研主管,5 咨询师',
    salary int unsigned comment '薪水',
    entry_date date comment '入职日期',
    image varchar(255) comment '头像',
    create_time datetime comment '创建时间',
    update_time datetime comment '修改时间'
​
) comment '员工表';

DDL-表结构-查询、修改、删除

-- 查询当前数据库所有表
    show tables;
-- 查看表结构
    desc emp;
-- 查询建表语句
    show create table emp;
-- 字段:添加字段 qq varchar(13)
    alter table emp add qq varchar(13) comment 'qq号码';
-- 字段:修改字段 qq varchar(15)
    alter table emp modify qq varchar(15) comment 'qq号码';
-- 字段 修改字段名 qq -> qq_num varchar(15)
    alter table emp change qq qq_num varchar(15) comment 'qq号码';
-- 字段:删除字段 qq_num
    alter table emp drop column qq_num;
-- 修改表名
    alter table emp rename employee;
-- 删除表
    drop table employee;


http://www.kler.cn/a/469893.html

相关文章:

  • PyTorch 框架实现线性回归:从数据预处理到模型训练全流程
  • Java SpringBoot使用EasyExcel导入导出Excel文件
  • Docker:安装 XXL-JOB 分布式调度任务的技术指南
  • 网络安全抓包
  • 第30天:Web开发-PHP应用组件框架前端模版渲染三方插件富文本编辑器CVE审计
  • 【开源】创建自动签到系统—QD框架
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(7)对称问题预备水杯案例分析
  • Oracle Dataguard 需要配置的参数详解
  • amis系列开发
  • 位向量系统函数
  • [CTF/网络安全] 攻防世界 ics-06 解题详析
  • 【.net core】微信支付相关问题解决(持续更新)
  • Linux终端输入删除键backspace显示^H,输入上下左右键显示^A^B^C^D原理以及详细解决办法!
  • 大数据入门
  • 西门子1200 ModbusTCP通信(服务器)
  • 笔记本如何录屏幕视频和声音?快速入门的两种方法
  • Python批量修改所有文件后缀
  • maven中<dependencyManagement>与<dependencies>两个标签的区别
  • 十四、Vue 混入(Mixins)详解
  • 谷云科技iPaaS V7.0+企业级AI Agent产品全新发布
  • Web网页制作之JavaScript的应用
  • 解决在VS2019/2022中编译c++项目报错fatal error C1189: #error : “No Target Architecture“
  • python 操作xml文件
  • 5G工业路由器品牌,5G赋能,重塑工业路由器新标杆
  • LabVIEW项目如何选择数据库
  • 【shell编程】报错信息:Redirection Error(包含7种解决方法)