JavaWeb开发学习笔记——MySQL

news2025/1/24 17:51:34

跟着黑马程序员学习MySQLDay06-04. MySQL-DDL-数据库操作_哔哩哔哩_bilibili

注意,以下笔记中[ ]中都是可省略内容,如果不省略,那么直接写即可,不带[ ]

MySQL-DDL

数据库操作

连接MySQL服务器:mysql -uroot -p密码

如果为了安全需要加密密码,可以只输入-p,然后回车,在下一行输入密码即可。

退出MySQL只需驶入exit即可。

不要忘记写 ; 或者 \g 否则会:

查询所有数据库:show databases;

查询当前数据库:select database();

创建数据库:create database 数据库名称;

检查重复并创建数据库:create database if not  exists 数据库名称;

切换/使用数据库:use 数据库名称;

删除数据库:drop database 数据库名;

检查并删除数据库:dorp database if exsist数据库名称;

图形化工具

要使用可视化图形工具使操作可视化,可使用最伟大的IDE(自封):IDEA,操作就变得优雅起来了。

要在关闭console之后再找到之前的mysql语句,执行以下操作即可。

 表结构操作

创建

create table 表名(
        字段1 字段类型[约束][comment 字段1注释],
        字段n 字段类型[约束][comment 字段n注释]
)[comment 表注释];

字段位置为字段名

注意:MySQL和Java有一定区别,字符串类型数据用的是varchar、char而不是String

打开表,即可对表内容进行添加数据操作。

约束

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

保证数据中数据的正确性,有效性和完整性。

约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所欲数据都是唯一,不重复的unique
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
默认约束保存数据时,如果未指定该字段值,则采用默认值default
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key

对于主键约束,手动输入唯一标识较为繁琐,可以使用关键字auto_increment自增。

使用方法例子如下:

数据类型

分类类型大小(byte)有符号(SIGNED)范围无符号(UNSIGNED)范围描述备注
数值类型tinyint1(-128127)(0255)小整数值 
smallint2(-3276832767)(065535)大整数值 
mediumint3(-83886088388607)(016777215)大整数值 
int4(-21474836482147483647)(04294967295)大整数值 
bigint8(-2^632^63-1)(02^64-1)极大整数值 
float4(-3.402823466 E+383.402823466351 E+38)0 (1.175494351 E-383.402823466 E+38)单精度浮点数值float(5,2):5表示整个数字长度,2 表示小数位个数
double8(-1.7976931348623157 E+3081.7976931348623157 E+308)0 (2.2250738585072014 E-3081.7976931348623157 E+308)双精度浮点数值double(5,2):5表示整个数字长度,2 表示小数位个数
decimal   小数值(精度更高)decimal(5,2):5表示整个数字长度,2 表示小数位个数
分类类型大小描述
字符串类型char0-255 bytes定长字符串char(10): 最多只能存10个字符,不足10个字符,占用10个字符空间AB性能高浪费空间
varchar0-65535 bytes变长字符串varchar(10): 最多只能存10个字符,不足10个字符, 按照实际长度存储ABC性能低节省空间
tinyblob0-255 bytes不超过255个字符的二进制数据
tinytext0-255 bytes短文本字符串
blob0-65 535 bytes二进制形式的长文本数据
text0-65 535 bytes长文本数据phone char(11)
mediumblob0-16 777 215 bytes二进制形式的中等长度文本数据username varchar(20)
mediumtext0-16 777 215 bytes中等长度文本数据
longblob0-4 294 967 295 bytes二进制形式的极大文本数据
longtext0-4 294 967 295 bytes极大文本数据
分类类型大小(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混合日期和时间值,时间戳

查询

查询当前数据库所有表:show tables;

查询表结构: desc 表名;

查询建表语句: show create table 表名;

 按上图操作即可得到下图

-- auto-generated definition
create table tb_emp
(
    id          int unsigned auto_increment comment '主键ID'
        primary key,
    username    varchar(20)                  not null comment '用户名',
    password    varchar(32) default '123456' null comment '密码',
    name        varchar(10)                  not null comment '姓名',
    gender      tinyint unsigned             not null comment '性别:1:男 2:女',
    image       varchar(300)                 null comment '图像的url',
    job         tinyint unsigned             null comment '职位 1 班主任,2 讲师, 3 学工主管, 4教研主管',
    entrydate   date                         null comment '入职日期',
    create_time datetime                     not null comment '创建时间',
    update_time datetime                     not null comment '修改时间',
    constraint name
        unique (username)
)
    comment '员工表';

修改

添加字段:alter table 表名 add 字段名 类型(长度) [commment 注释] [约束];

修改字段类型: alter table 表名 modify 字段名 新数据类型(长度);

修改字段名和字段类型:alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释][约束]

删除字段:alter table 表名 drop column 字段名;

修改表名:rename table 表名 to 新表名;

但是主要掌握图形化界面的操作。

删除

删除表:drop table [if exists] 表名;

MySQL-DML

INSERT

  • 指定字段添加数据:insert into 表名 (字段名1,字段名2) values (值1,值2);

在sql语句中字符串以及日期时间类型都需要引号引起来,单双引号都可以

可以用now()函数来获取当前系统时间:

insert into tb_emp(username,name,gender,create_time,update_time) values ('nihao','你好',1,now(),now());
  • 全部字段添加数据:insert into 表名 values (值1,值2, ...);
-- 为所有字段插入值方式
insert into tb_emp(id, username, password, name, gender, image, job, entrydate, create_time, update_time)
            values (null,'I am fine','1223','我很好',2,'1.jpg',1,'2010-01-01',now(),now());
-- 另一种方式
insert into values (null,'I am fine','1223','我很好',2,'1.jpg',1,'2010-01-01',now(),now());
  • 批量添加数据(指定字段):insert into 表名 (字段名1,字段名2) values (值1,值1), (值1,值2);
  • 批量添加数据(全部字段):insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);

跟上面类似,就举一个例子:

insert into tb_emp(username,name,gender,create_time,update_time) values
                ('xixi','嘻嘻',1,now(),now()),('haha','哈哈',1,now(),now());

 UPDATE

修改数据:update 表名 set 字段名1=值1,字段名2=值2, ...[where 条件];

-- 修改指定内容,有where条件
update tb_emp set name = '张三', update_time = now() where id = 1;
-- 修改所有
update tb_emp set entrydate = '2010-01-01',update_time = now();

DELETE

删除数据:delete from 表名 [where 条件];

-- 删除指定数据
delete from tb_emp where id = 1;
-- 删除所有数据
delete from tb-emp;

DELETE语句不可以删除某一个字段的值,但是可以使用UPDATE将该字段的值设为NULL以达到效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CSS实现实现票据效果 mask与切图方式

一、“切图”的局限性 传统的“切图”简单暴力,但往往缺少适应性。 适应性一般有两种,一是尺寸自适应,二是颜色可以自定义。 举个例子,有这样一个优惠券样式 关于这类样式实现技巧,之前在这篇文章中有详细介绍: CSS 实现优惠券的技巧 不过这里略微不一样的地方是,两个…

【二叉树的深搜】二叉树剪枝

文章目录 814. 二叉树剪枝解题思路:深度优先遍历 后序遍历另一种写法 814. 二叉树剪枝 814. 二叉树剪枝 ​ 给你二叉树的根结点 root ,此外树的每个结点的值要么是 0 ,要么是 1 。 ​ 返回移除了所有不包含 1 的子树的原二叉树。 ​ 节点…

Codeforces Round 1000 (Div. 2) A-C

链接:Codeforces Round 1000 (Div. 2) A:Minimal Coprime 大意: 给定一个区间,定义最小互质区间是边界互质,边界内无互质区间。求这个区间最小互质区间个数 思路: gcd(l, l 1) gcd(1, l) 1,即相邻数组成的区间互…

基于Redis实现短信验证码登录

目录 1 基于Session实现短信验证码登录 2 配置登录拦截器 3 配置完拦截器还需将自定义拦截器添加到SpringMVC的拦截器列表中 才能生效 4 Session集群共享问题 5 基于Redis实现短信验证码登录 6 Hash 结构与 String 结构类型的比较 7 Redis替代Session需要考虑的问题 8 …

校验收货地址是否超出配送范围实战3(day09)

优化用户下单功能,加入校验逻辑,如果用户的收货地址距离商家门店超出配送范围(配送范围为5公里内),则下单失败。 提示: ​ 1. 基于百度地图开放平台实现(https://lbsyun.baidu.com/&#xff09…

Vue2.0+ElementUI实现查询条件展开和收起功能组件

一、需求 el-form如果查询条件过多,影响页面的展示效果。查询条件表单是我们系统中非常常见的功能,我们需要把它封装成一个通用的组件,方便在系统开发中提升开发效率。除了在实现基本查询条件的功能上,还需要实现多条件的折叠和展…

UE求职Demo开发日志#8 强化前置条件完善,给物品加图标

1 强化前置条件完善 StrengthManager里实现一个Check前置的函数 bool CheckPreAllIsActive(int index),所有的前置都已经激活就返回true,否则返回false 之后在强化的时候加入条件检查: 1.所有前置技能全部激活 2.本身没有强化过 最后测…

pinctrl子系统

目录 一、PinCtrl子系统的定义 二、明确PinCtrl子系统和我们编写驱动的关系 三、pinctrl_desc结构体引入 四、PinCtrl子系统驱动实现分析 1.芯片厂家是如何实现PinCtrl子系统的 2.linux在什么位置设置的引脚复用和电气属性 2.1 really_probe的主要功能 2.2 really_prob…

行政纠错——pycorrector学习

pycorrector是一个开源中文文本纠错工具,它支持对中文文本进行音似、形似和语法错误的纠正。此工具是使用Python3进行开发的,并整合了Kenlm、ConvSeq2Seq、BERT、MacBERT、ELECTRA、ERNIE、Transformer等多种模型来实现文本纠错功能。pycorrector官方仓库…

深入MapReduce——计算模型设计

引入 通过引入篇,我们可以总结,MapReduce针对海量数据计算核心痛点的解法如下: 统一编程模型,降低用户使用门槛分而治之,利用了并行处理提高计算效率移动计算,减少硬件瓶颈的限制 优秀的设计&#xff0c…

React+Cesium基础教程(001):创建基于React的Cesium项目及对Cesium进行基本配置

文章目录 01-基于react的cesium项目创建基于React的Cesium项目Cesium基本配置设置默认启动视角完整项目下载地址01-基于react的cesium项目 创建基于React的Cesium项目 创建react项目: create-react-app react-cesium-basic安装[cesium1.93.0]版本: npm install cesium@1.…

Vue2:使用sortablejs实现el-table中行拖拽调整顺序

如图,实现拖拽表格中的行来调整行顺序,但是其中的编号仍然是1、2、3、4的顺序,不跟着变化。 实现如下: 一、导入sortablejs import Sortable from "sortablejs";export default { components: {Sortable},data() {return {//数据中的id很重要,拖拽行重新排序…

Kingbase数据库体系结构和日常运维监控

1. 数据库架构 1.1. 内存 1.1.1. Share Memory 共享内存是服务器服务器为数据库缓存和事务日志缓存预留的内存缓存空间,其中最重要的组成部分是Shared Buffer和WAL Buffer: 1. Shared Buffer: 减少磁盘IO 2. WAL Buffer: 用…

【Prometheus】Prometheus如何监控Haproxy

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【0x0012】HCI_Delete_Stored_Link_Key命令详解

目录 一、命令参数 二、命令格式及参数 2.1. HCI_Delete_Stored_Link_Key 命令格式 2.2. BD_ADDR 2.3. Delete_All 三、生成事件及参数 3.1. HCI_Command_Complete事件 3.2. Status 3.3. Num_Keys_Deleted 四、命令执行流程 4.1. 命令发送阶段 4.2. 控制器处理阶段…

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github,搜索github-chinese2.打开项目,打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动,找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

机器学习-K近邻算法

文章目录 一. 数据集介绍Iris plants dataset 二. 代码三. k值的选择 一. 数据集介绍 鸢尾花数据集 鸢尾花Iris Dataset数据集是机器学习领域经典数据集,鸢尾花数据集包含了150条鸢尾花信息,每50条取自三个鸢尾花中之一:Versicolour、Setosa…

C++函数——fill

在C中,std::fill 是标准库提供的一个算法适用于几乎所有类型的容器,只要这些容器支持迭代器操作。具体来说,std::fill 的适用性取决于容器是否提供了满足其要求的迭代器类型,用于将指定范围内的所有元素设置为某个特定值。它是一个…

如何打造高效同城O2O平台?外卖跑腿系统源码选型与开发指南

打造一个高效的同城O2O平台,选择合适的外卖跑腿系统源码并制定科学的开发方案至关重要。本篇文章,笔者将从源码选型、核心功能、开发架构及运营策略等方面,全面解析O2O平台的搭建思路。 一、外卖跑腿系统源码的选型要点 在搭建O2O平台时&…

Flutter_学习记录_基本组件的使用记录

1.TextWidge的常用属性 1.1TextAlign: 文本对齐属性 常用的样式有: TextAlign.center 居中TextAlign.left 左对齐TextAlign.right 有对齐 使用案例: body: Center(child: Text(开启 TextWidget 的旅程吧,珠珠, 开启 TextWidget 的旅程吧&a…