Java复习打卡day47

  • Mac系统中安装mysql数据库
  • MySql基础操作
  • Mysql中的数据类型
  • Mysql中的字段约束和运算符
  • Mysql数据库中的表引擎和字符集utf8
  • Mysql中的DML操作--数据的增删改
  • Mysql数据查询--健硕数据select.mp4
    • Mysql基础查询
    • where条件查询
    • Mysql数据查询--OrderBy排序

Mac系统中安装mysql数据库

使用Mac中的Homebrew直接下载mysql:大家可以直接在终端terminal里输入如下指令:brew install mysql@5.7便可下载。如果看到以下的界面则表示下载成功:

在按照上面的指示,将划红线的代码都执行一遍。
安装完成之后,对数据库的操作:
1.启动数据库mysql.server start
2.关闭数据库mysql.server stop
3.登录数据库mysql -u root -p

MySql基础操作

使用方法:方式一:在命令行敲命令来操作(有助于快速熟悉命令)方式二:通过图形界面工具,如Navicat等(在熟练掌握之再使用)方式三:通过编程语言(Java,php,python,go···)执行mysql指令
SQL(structure query language)结构化查询语言SQL语言分为四个部分:DDL(定义)、DML(操纵)、DQL(查询)、DCL(控制)
Mysql语句中的快捷键:\G格式化输出(文本式,竖立显示)\c结束命令输入操作\h查看帮助\s查看服务器端信息\q退出当前sql命令行(通常为退出sql)
操作数据库的步骤:连接、打开库、操作、关闭退出
1.通过命令行连接Mysql数据库-h 服务器地址-u 登陆账号-p  回车后输入密码-P   (大写)端口号
数据库语法的特点:1)SQL语句可以换行,用分号结尾2)命令不区分大小写,函数名和关键字建议使用大写3)如果提示符为'>,那么你要输入一个'回车4)命令行打错换行后不能修改,可以使用\c取消执行这段代码
2.数据库操作查看数据库show databases;创建数据库create database 数据库名 default charset=utf8;删除数据库drop database 数据库名;打开数据库use 数据库名;
3.数据表操作
数据库管理系统中可以有很多库,每个库中也可以有很多个数据表


查看表show tables;
创建表create table 表名(字段名一 类型,字段名二 类型)engine=innodb default charset=utf8;
创建表:如果不存在就创建,如果存在就不执行:
create table if not exists 表名(字段一 类型,字段二 类型,……)engine=innodb default charset=utf8;CREATE TABLE if not exists `students` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(4) NOT NULL,`age` tinyint(4) DEFAULT NULL,`sex` enum('男','女') DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
删除表drop table 表名;
表结构desc 表名;
查看建表语句show create table 表名;
4.数据表操作 增删改查
插入
insert into 表名(字段一,字段二,字段三) values (值一,值二,值三);
insert into 表名((字段一,字段二,字段三) values (a值一,a值二,a值三),(b值一,b值二,b值三);
删除
delete from 表名 where 条件;
修改
update 表名 set 字段=值 where 条件;
update 表名 set 字段1=值1,字段二=值2 where 条件;
update 表名 set 字段=字段+值 where 条件;
查询
select * from 表名
select 字段一,字段二,字段三 from 表名;
select * from 表名 where 条件;
5.退出SQL
exit;或者quit;

Mysql中的数据类型

数据类型是定义列中可以存储什么类型的数据以及该类型实际怎样存储的基本规则。在设计表示应当非常注重存储的数据类型。使用错误的数据类型会严重的影响应用程序的功能和性能。
更改包含数据的列不是一件小事(这样可能会导致数据丢失)数据库中常用的数据类型有四类:字符串、整形、浮点型、日期。
1.字符串类型最常用的数据类型是串数据类型。他们存储串,如名字,邮政编码,电话,地址等。不管串是什么,串的内容都必须在引号内。有两种基本的船类型,分别是定长串和不定长串。- 定长串 char1.接受长度一定的串,他的长度是在创建表的时候指定的;2.指定长度之后存储时就会分配固定长度的空间。注:char(7)无论存储的字符串多大,占据的空间都是7。- 不定长串 varchar存储可变长度的字符串。如:varchar(7)如果实际插入4个字符,那么只占4个字符,当然字符的长度不能超过7。注意:既然varchar几乎将char的功能都涵盖了,为什么还要char呢?答:应为数据库在处理定长的字符串比处理不定长的字符串更快。- 变长文本类型存储 Text

2.数值类型- decimal(5,2)表示数值总共5位,小数占2位- int 0~42亿。-21亿~21亿- tinyint 0~255。-128~127- float 浮点型由于Mysql中没有专门存储数据的类型,通常用decimal(8,2)表示有符号和无符号任意数值类型(除了Boolean和Bit)都能被定义为有符号或无符号。1) 定义为有符号的列可以存储正或负的值;2) 定义为无符号的列只能存储正的值;3) 默认数值类型都是有符号的。当你确定自己定义的数据只需要正数时,可以在数据类型乾加上关键字:unsigned。注意:如果将邮政编码01234设定为数值类型时,得到的结果将是1234。这时就要使用字符串存储。思考一下,手机号码应该用什么数据类型存储呢?

3.日期和时间类型
Mysql使用专门的数据类型存储时间和日期:datetime 1000-01-01 00:00:00~9999-12-31 23:59:59

4.二进制数据类型二进制数据类型可以存储任意类型数据(甚至包括二进制信息),如图像,多媒体,字处理文档等

Mysql中的字段约束和运算符

字段约束:- unsigned无符号(用于数值类型,表示正数,不写可以表示正数和负数都可)- 字段类型后面加上括号限制宽度1)char(4) varchar(7)在字符数据类型后加上括号,表示限制字符的长度2)int(4)没有意义。默认无符号的int(11)有符号的int(10)3)int(4) unsigned zerofill 只有给int设置前置导零是,设置int的宽度才有效- not null 字段不能为空,在设置字段的值时,如果字段赋值为NULL就会报错- default 设置默认值- primary key 主键不能为空,并且唯一,通常和自动递增一起使用- auto_increment 自动递增,通常和主键一起使用,表现为数值加一。- unique 唯一索引(数据不能重复,如:用户名),可以增加查询速度,但是会降低插入和更新的速度
运算符:- 算术运算符:+、-、*、/、%- 比较运算符:=、>、<、>=、<=、!=- 数据库特有的比较运算符:in, not in, is null, is not null, like, between, and  - 逻辑运算符:and, or, not- like:支持特殊运算符%和_;
主键:
1.表中每一行都必须有可以唯一标识自己的列,用于记录两条数据的不重复性,任意两行都具有不同的主键值。
2.总要设置主键列,但并不是总能用到主键值。每一个数据库设计者都应该为自己设计的每一个表格设置一列主键值,方便后期数据查询。要求:- 记录一旦插入到表中,主键最好不要再更改;- 主键不能为NULL- 不在主键列中使用可能更改的值。(例如,如果一个名字作为主键来表示某个供应商,当该供应商合并或改用其他名字的时候,必须更改这个主键。)- 自增数据类型:数据库会在插入一条数据的时候,自动为每一条记录分配一个自增整数,这样我们就不用担心主键重复,也不用预先设置主键值。- 可以使用多个列作为联合主键,但是联合主键并不常用。联合主键要保证列值的组合必须是唯一的。

Mysql数据库中的表引擎和字符集utf8


1.服务器处理用户的请求其实不论客户和服务器之间采取什么方式取得联系,最后实现的效果都是:客户端进程向服务器进程发送请求(MySQL语句),服务器进程处理之后向客户端进程发送一段文本(处理结果)。那服务器对客户端进程的请求做什么处理,才能产生最后的结果呢?客户端可以向服务器发出增删改查各类请求,下面我们将以较为复杂的查询请求向大家展示大致的过程:

虽然查询缓存优势能提升系统性能,但是也不得不为这块缓存的维护产生费用,从Mysql5.7.20开始不推荐使用查询缓存的方式,到了Mysql8.0删除了这部分内容。
2.存储引擎
Mysql 将数据的存储和提取都封装到了一个叫做存储引擎的模块中。我们知道,表示有一行一行的数据组成的,但这只是一个逻辑上的表示,如理上如何表示记录,如何将表中的数据读取出来,如何保操作写入具体的物理存储器上,这都是表引擎要做的事。
为了实现不同的功能,Mysql提供了不同的表引擎,不同的表引擎管理的表内部的数据存储结构可能不同,所采取的数据存取算法也可能不同。

存储引擎以前叫作表处理器,它的功能就是根据上级提供的指令,对数据进行提取或写入的操作。

为了方便管理人们把连接管理、查询缓存、语法解析、查询优化这些不涉及真实数据的功能划分为Mysql server模
块,把真实存取数据的功能划分为存储引擎的模块。各种不同的存储引擎向上边的Mysql server提供统一的调用接
口(也就是存储引擎的API),包含了十几个函数,像“读取索引第一条内容”“读取索引下一条内容”“插入记录”等
等。
所以Mysql server在进行完查询优化之后,只要再调用底层存储引擎的API实现对数据的存储和提取在返回给客户端
即可。
Mysql支持很多存储引擎:

3.MyISAM和InnoDB表引擎的区别- 事务支持MyISAM不支持,InnoDB支持注意:事务指的是访问定更新表中数据的执行单元,事务操作中,要么都执行,要么都不执行。- 存储结构MyISAM:存储成三个文件1).frm存储表结构2).MYD文件存储数据3).MYI文件存储索引InnoDB:分成两个文件存储1).frm存储表结构2).idb存储文件数据和索引(或者是多个.idb文件,也可以是独立表空间文件)- 表锁差异MyISAM:只支持表级锁。用户在操作myisam是,select、delete、update、insert都会给表自动加锁。如果如果加锁以后的表满足insert并发的条件,那么可以在表的末尾添加上数据。InnoDB:支持事务和行级锁。这这是InnoDB最大的特色。行级锁极大地提高了多用户并发操作的新功能。但是InnoDB的行锁只在where的主键是有效的,非主键的where都会锁全表的。- 表主键MyISAM:允许没有任何主键和索引的表的存在,索引都是保存行的地址。InnoDB:如果没有设置主键或者非空唯一的索引,就会生成一个六字节的主键(用户不可见 ),数据是索引的一部分。,附加索引保存的是主键的值。InnoDB的主键的范围更大,最大时MyISAM的两倍。- 表的具体行数MyISAM:保存有表的具体行数,如果使用select count() from table;会直接返回这个值。InnoDB:没有保存表的总行数,如果使用select count() from table;就会进行遍历。这会消耗很大。但是在加了where之后,两种查询方法的处理方式都是一样的。- CURD操作MyISAM:执行大量的select操作,建议使用MyISAM引擎。InnoDB:执行大量的update、insert操作时,建议使用InnoDB引擎。delete从性能上看,InnoDB更好,但是其在删除时不会创建一个新的表,而是一行一行的在原表的基础上一行一行删除。在InnoDB上要删除保存有大量数据的表时建议使用truncate table这个命令。- 外键MyISAM:不支持;InnoDB:支持。- 查询效率MyISA相对简单,所以在效率上要优于InnoDB,小型查询上可以使用MyISAM。但是推荐使用InnoDB,因为InnoDB自身有很多优点,在很多并发的情况下,相信InnoDB的表现一定会优于MyISAM。- 应用场景MyISAM管非事物表。它提供高效的存储和搜索,以及全文检索能力。如果应用中要用到大量的select操作,使用MyISAM的好处就跟大了。InnoDB由于事务处理应用程序,包括ACID事务支持。如果操作中需要大量使用到update、insert操作,使用InnoDB这样能大幅提高多用户并发操作的优势。现在默认使用InnoDB。
4.了解一下字符集和乱码
我们知道在计算机中只能存储二进制,那么这样存储字符呢?当然是建立二进制和字符之间的映射了,建立这个关
系最起吗要搞清楚两件事:1)要把哪些字符映射成二进制?也就是界定清楚字符的范围。2)怎么映射?将一个字符转变成二进制的过程也叫做编码;将一个二进制转变成字符的过程也叫做解码。
人们抽象出一个字符集的概念来描述某个字符范围的编码规则:
常见的字符集有:1)ASCII码:最早的字符集,收录了128个常见的字符。2)ISO 8859-1:收录了256个字符,在ASCII码的基础上又增加了128个西欧字符。3)GB2312字符集:收录了汉字以及拉丁字母、希腊字母、日文平假名片假名字母、俄语西里尔字母,其中收录了汉字6763个。4)GBK:在GB2312的基础上进行的扩充。5)Unicode字符集:收录地球上所有能想到的字符。utf8是这个字符集中的一个编码方式,即使用1~4个字节编码一个字符。
5.Mysql中的utf8和utf8mb4
我们上面说到的utf8使用1~4个字节来编码一个字符。但是有些字符只需要1~3个字符就能编码完成了,使用最大
编码空间可能会影响应用程序的性能。因此,设计Mysql大叔就偷偷地定义了两个概念:- utf8mb3:阉割过的utf8字符集,只使用1~3个字节来编码字符。- utf8mb4:正宗的utf8字符集,使用1~4个字节来编码字符。
注意:在Mysql中utf8就是utf8mb3的别名,所以在Mysql中utf8指的就是使用1~3个字节编码字符。
Mysql中支持很多种字符集,使用下面的代码来查看字符集:
show charset;

Mysql中的DML操作–数据的增删改

首先在数据库列表中创建一个操作库users

create database users default charset=utf8;

然后进入这个库:

use users;

接着在这个库中创建一个表student:

create table if not exists student(id int not null primary key auto_increment,name varchar(4) not null,age tinyint default null,sex enum('男','女') default null)engine=innodb default charset=utf8;

此时,大家便可以开始对刚刚创建的表进行DML操作了。

1.字段的添加:- 标准添加insert into student(id,name,age,sex) values(1,'张三',17,'男');- 指定添加insert into student(name,sex) values ('小丽','女');- 不指定添加insert into student values (null,'李四',18,'男')- 批量添加insert into student values (null, '李花',27,'女'),(null,'张强',23,'男'),(null,'阿志',21,'男'),(null,'小美',19,'女');
2.字段的删除:--删除student 中id=100的数据delete from student where id=100;--删除student 中id在10~20之间的数delete from student where id>=10 and id<=20;--删除student 中id在10~20之间的数(等同于上面的写法)delete from student where id between 10 and 20;--删除student 中id大于200的数据delete from student where id > 200;
3.字段的修改:--将id=2的age改为18,name改为小莉update student set age=18,name='小莉' where id=2;--将id为1或3的age改为19update student set age=19 where id=1 or id=3;--等价于下面的方法update student set age=19 where id in(1,3);

Mysql数据查询–健硕数据select.mp4

语法规则:
select 字段|* from 表名
[where 搜索条件]
[group by 分组字段[having 分组条件]]
[order by 排序字段 排序规则]
[limit 分页参数]

Mysql基础查询

#查询表格中所有列,所有数据
select * from student;
#查询表格中指定字段列的数据
select name,age from student;

where条件查询

1.where后可以接任意条件;
2.可以使用and 和 or来实现制定一个或多个条件;
3.where也可以应用在update、delete后面的条件子句中;
4.where类似于程序语言中的if,根据字段值来实现对数据的过滤。

示例:

#查询student中age>22的数据
select * from student where age > 22;
#查询student中name='阿志'的数据
select * from student where name='阿志';
#查询student中age在21~23之间的数据
select *from student where age >= 21 and age <= 23;--等价于下面的代码
select * from student where age between 21 and 23;
#查询student中age不在21~23之间的数据
select * from student where age <21 or age >23;--等价于下面的代码
select * from student where age not between 21 and 23;
#查询student中age不在21~23之间的女生信息
select * from student where age not between 21 and 23 and sex='女';

Mysql数据查询–OrderBy排序

我们在mysql中使用select进行查询时,结果是根据数据在底层文件中的排序显示的。
因此,首先不要依赖默认排序。然后在需要排序时,使用order by排序。
ASC 升序,默认
desc 降序

order by应用示例:

#按照年龄升序排列,asc 默认就是,因此可不写
select * from student order by age;
#按照年龄升序排列,desc
select * from student order by age desc;
#也可以按照多个字段进行排序
select * from student order by age desc,id desc;
#先是按照age降序排列,age相同的情况下
#id降序排列

最后,文章篇幅有点长,可能会出现瑕疵,见谅。

Java复习打卡day47相关推荐

  1. Java复习打卡day40

    Java复习打卡day40 XML DOM 介绍 实现节点的遍历 实现节点的删除 属性的操作 创建节点 节点的复制 节点的替换 select对象 table对象 XML DOM 介绍 1.基本介绍: ...

  2. Java复习打卡day30

    Java复习打卡day30 前置 前置导学 HTML语言 HTML介绍 HTML语言的基础语法 常见标签 文本标签 格式化标签 图像标签 超链接标签 表格标签 表单标签 前置 前面我们主要讲述了Jav ...

  3. 中国海洋大学-信息系统开发(Java)复习

    Java复习 OUC_Shizue 1 Java编译器和执行器 Java编译器和执行器是Java语言的两个核心组件,分别用于将Java源代码编译成Java字节码文件和运行Java字节码文件. Java ...

  4. 合肥师范学院计算机与技术,合肥师范学院计算机科学与技术系JAVA复习提纲

    合肥师范学院计算机科学与技术系JAVA复习提纲 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 一. 选择题(10题,20分)二. 填空 ...

  5. 调整心态,java复习要点总结。

    各位好,博主认为调整好心态是一切事情开始的良好基础.无论做任何事情,没有一个沉淀的情绪积累,都不能做到很成功.当完全融入一件事情的时候,学习效率是最高的.所以朋友,请您一定放松心态,不要有紧张的情绪. ...

  6. Java复习之抽象类和接口

    Java复习之抽象类和接口 Java复习之抽象类和接口 什么是抽象类和接口 抽象类与接口的区别 什么情况下使用抽象类或接口 一个demo引起来的对于java方法区堆栈的研究 首先我们需要明白抽象类与接 ...

  7. java复习第3天---3.1---final关键字、权限修饰符

    java复习第3天---3.1---final关键字.权限修饰符 目录 文章目录 1.final 关键字 1.1.修饰类 1.2.修饰成员方法 1.3.修饰成员变量 1.4.修饰局部变量 2.权限修饰 ...

  8. Java复习面试知识点

    Java复习面试知识点 前言: 简要的记录一下学习到的东西,仅供自己查阅和复习方便.希望该文章能对你有帮助,文章学习自博客和b站UP主的教程 集合: 集合简介: Java标准库自带的java.util ...

  9. 【牛客网java练习错题笔记】 --Java基础打卡day002

    [牛客网java练习错题笔记] --Java基础打卡day002 1 根据以下代码段,正确的是 2 在Java中,在同一包内,类Cat里面有个公共方法sleep(),该方法有static修饰,所以可以 ...

最新文章

  1. 说说你知道的数据库常用架构方案?
  2. P2617 Dynamic Rankings(带修主席树)
  3. raspbian wifi设置
  4. 数据结构练习——双向链表
  5. 第四讲 构建安全的Microsoft ASP.NET 应用的最佳实践和技术
  6. MyEclipse汉化后问题
  7. python em和web_Python web 框架
  8. flymcu烧录stm32L151问题
  9. linux内核容器的打包,简年6:一个关于 Linux 容器化的脑洞
  10. matlab单元刚度矩阵整合成整刚,空间四面体单元刚度矩阵的Matlab向量化集成.pdf...
  11. “我们”是量子计算业内人士,“我们”在炒作
  12. 市场上最受欢迎的十大服装进销存软件
  13. android 签名工具 autoSign jarsigner
  14. c语言图像对比度增强,图像对比度应用
  15. Play 2.6 异步处理结果
  16. SQL中MINUS的用法
  17. 【Oracle 11g学习路线】
  18. 浅谈国内域名注册商与国外域名注册商的区别与优势
  19. 【测评】国外AR平台ENTITI测评-网页编辑器(1)
  20. mysql 枚举字段,MySQL字段中的枚举是什么意思 | 学步园

热门文章

  1. 达观数据如何打造一个中文NER系统
  2. 达观数据:文档智能审阅系统
  3. 基于COORD四参数坐标转换
  4. 交叉熵损失函数(Cross Entropy Loss)
  5. springboot学生综合素质测评系统java
  6. Apple 苹果公司的两个企业特性暂时还不支持中国 - 设备注册计划(DEP) ,批量购买计划(VPP)
  7. Gamma分布,Beta分布,多项式分布,Dirichlet狄利克雷分布
  8. 数通网络高工的金手指(附详细书单)
  9. Coremail保障企业邮箱安全!《数安法》《关基保护条例》正式施行!
  10. Node -- 使用场景及优缺点