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

韩顺平0基础学Java——第37天

p736-758

MySQL三层结构

1.所谓安装Mysql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(database manage system)
2.一个数据库中可以创建多个表,以保存数据(信息)。
3.数据库管理系统(DBMS)、数据库和表的关系如图所示:

数据保存位置:实际上也是一些文件

SQL语句分类


DDL:数据定义语句[create表,库...]
DML:数据操作语句[增加insert,修改update,删除delete].DQL:数据查询语句[select ]
DCL:数据控制语句[管理数据库:比如用户权限grad revoke ]

简单操作MySQL

数据库

创建数据库

#创建数据库
CREATE DATABASE day37_db01

#创建时带一些规则:编码规则是utf-8,校对规则区分大小写。
#注:utf8_general_ci是不区分大小写
CREATE DATABASE day37_db02 CHARACTER SET utf8 COLLATE utf8_bin

#查询:*表示所有字段,from表示从哪个表,where从哪个字段找,查询内容是tom
SELECT * 
    FROM t1 
    WHERE NAME = "tom"

#删除数据库
DROP DATABASE day37_db01

查询数据库

#查看所有数据库
SHOW DATABASES

#查看前面创建的day37_db02数据库的定义信息
#说明:在创建数据库和表的时候,为了规避关键字,可以使用反引号解决,如:`int`
SHOW CREATE DATABASE day37_db02

备份与恢复数据库

当你只想备份某个库的一部分时:

创建表

CREATE TABLE `user` (
    id INT,
    `name` VARCHAR(255),
    `password` VARCHAR(255),
    `birthday` DATE)
    CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;

修改表

 mysql数据类型(列类型)

日期类还有个年,但是用的少

整型

bit型

create table t05(num BIT(8));

insert into t05 values(255);#8位最大就是255

select * from t05 where num=1;

小数

字符串

注意,char里面是字符,varchar里面是字节,实际上是用的65535-3(系统占用),根据不同编码规则还有区别!比如gbk编码中,2个字节表示一个字符!

1.细节1
char(4)//这个4表示字符数(最大255),不是字节数,不管是中文还是字母都是放四个,按字符计算.

varchar(4)//这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据

不管是中文还是英文字母,都是最多存放4个,是按照字符来存放的.所以具体占多大空间,根据编码规则来决定!

2.细节2
char(4)是定长(固定的大小),就是说,即使你插入'aa',也会占用分配的4个字符的空间.
varchar(4)是变长(变化的大小),就是说,如果你插入了'aa',实际占用空间大小并不是4个字符,而是按照实际占用空间来分配(老韩说明:
varchar本身还需要占用1-3个字节来记录存放内容长度)L(实际数据大小)+(1-3)字节

3.细节3
什么时候使用char,什么时候使用varchar
1.如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等. char(32)
2.如果一个字段的长度是不确定,我们使用varchar,比如留言,文章
查询速度:char > varchar

4.细节4
在存放文本时,也可以使用Text数据类型.可以将TEXT列视为VARCHAR列,注意Text不能有默认值.大小0-2^16字节如果希望存放更多字符,可以选择MEDIUMTEXT0-2^24或者LONGTEXT 0~2^32
如果varchar不够用,可以考虑使用mediumtext或者longtext,想简单点就直接text

日期

CREATE TABLE t2(
    birthday DATE, 
    job_time DATETIME,
    login_time TIMESTAMP 
    NOT NULL 
    DEFAULT CURRENT_TIMESTAMP 
    ON UPDATE CURRENT_TIMESTAMP);
SELECT * FROM t2;
INSERT INTO t2(birthday,job_time) VALUES("2022-11-11","2023-11-11 10:10:12");

如图,login_time是时间戳,自动更新了

数据库CRUD

insert

注意:

1.插入的数据应与字段的数据类型相同。
比如把'abc'添加到int类型会错误
2.数据的长度应在列的规定范围内,例如:不能将一个长度为8O的字符串加入到长度为40的列中3.在values中列出的数据位置必须与被加入的列的排列位置相对应。
4.字符和日期型数据应包含在单引号中。
5.列可以插入空值[前提是该字段允许为空],insert into table value(null)6. insert into tab_name (列名..)values (),(),()形式添加多条记录
7.如果是给表中的所有字段添加数据,可以不写前面的字段名称
8.默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错
 

update

●使用细节:
1.UPDATE语法可以用新值更新原有表行中的各列。

2.SET子句指示要修改哪些列和要给予哪些值。
3.WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。
4.如果需要修改多个字段,可以通过set字段1=值1,字段2=值2.….
 

delete

1.如果不使用where子句,将删除表中所有数据。
2.Delete语句不能删除某一列的值(可使用update设为null或者"")

3.使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。drop table表名;

select(重点

order by排序

要睡着了,先挂了

http://www.lryc.cn/news/406750.html

相关文章:

  • Layer2区块链扩容方案(1)——总述
  • AWS监控工具,监控性能指标
  • 义务外贸wordpress独立站主题
  • 初等数论精解【4】
  • MongoDB教程(二十二):MongoDB固定集合
  • 20240724----idea的Java环境卸载与安装
  • C语言 ——— 函数指针数组的讲解及其用法
  • 鸿蒙仓颉语言【cryptocj 库】(介绍与SHA、MD5、HMAC摘要算法)
  • 设计App的后端接口分类以及环境依赖包详情
  • 接入百度文心一言API教程
  • classfinal太强了,再也不怕被反编译了
  • DP-适配器模式代码重新理解
  • minio安装小计一则
  • # Redis 入门到精通(九)-- 主从复制(1)
  • SpringBoot整合ElasticSearch的elasticsearch-java出现jakarta.json.spi.JsonProvider报错问题
  • git 操作汇总【迭代更新中】
  • 看 Unity 组件的源码 —— ILSpy
  • Axivion Suite 7.8现已发布
  • 从零开始!JupyterNotebook的安装教程
  • 使用kali进行端口扫描
  • C#使用Clipper2进行多边形合并、相交、相减、异或的示例
  • Spring-Aop源码解析(二)
  • antdesgin table 组件下载成excel
  • MongoDB - 聚合阶段 $group 的使用
  • Flutter 插件之 easy_refresh(下拉刷新、上拉加载)
  • DVWA的安装和使用
  • CSS相关记录
  • Fedora40安装telnet-server启用telnet服务
  • Unity3D结合AI教育大模型 开发AI教师 AI外教 AI英语教师案例
  • lua 游戏架构 之 SceneLoad场景加载(一)