栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java学习第五周笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java学习第五周笔记

数据库 MySQL 1.安装MySQL

安装mysql
安装 服务器端 和 客户端

	1, 服务器端: 用来存储了数据
	重点步骤: 设置字符集utf-8避免中文乱码.
	使用端口号: 默认是3306
	使用的服务名称: Mysql
	设置密码: root
	检查:找到开始菜单中的mysql – mysql client – 输入密码root回车
	2, 客户端: 用来连接服务器, 进而操作数据
	DOS窗口:
	a, 输入密码: 就可以连接服务器(找到开始菜单中的mysql – mysql client – 输入密码root回车)
	b, 输入dos命令: win+r打开运行对话框 – 输入cmd – 确定 – 输入命令:mysql -uroot -proot – 回车
	3,可视化工具:sqlyog
2.SQL简单语句
数据库
	show databases; 查询所有数据库
	create database name default character set utf8; 创建数据库(不可同名) 字符使用utf8防止中文乱码
	drop database name; 删除数据库(删除要谨慎操作)

表
	use database_name;使用数据库
	show tables;查询所有表
	create table tb_name (字段1,字段2,字段3...); 创建表
	alter table  表名    添加字段  字段名称 字段类型(字段长度)   ---修改表
		mysql> alter table student add column address varchar(100);
	drop table tb_name; 删除表
	desc tb_name; 描述表,查看表结构

记录
	select * from tb_name; 查询表中所有记录
	select 字段名 from tb_name;查询表中的某一列数据
	select * from tb_name order by id desc; 将表记录按id排序
	select count(*)from tb_name; 查询表中总记录数
	insert into tb_name values (字段1,字段2,字段3);  向表中插入数据
	update tb_name set 字段名=新值 where id=2; 修改id为2的数据记录
	delete from tb_name where id =2; 删除id为2的数据记录
3.字段约束
主键约束
	使用primary key 来设置主键约束,所约束字段不可重复,不可为空
	id int primary key auto_increment  主键约束自增
非空约束
	使用not null 来设置非空约束,所约束字段不可为空
	password varchar(50) not null
唯一约束
	使用unique 添加唯一约束,添加后值必须唯一,不可重复,可以为空
	username varchar(50) unique--唯一约束
4.基础函数

概述:类似于java中的方法,有()标记,提高SQL语句效率

lower	select dname,lower (dname)from dept; 数据转小写
upper	select upper (dname) from dept;数据转大写
length	select length(dname) from dept --数据的长度
substr	SELECt dname,SUBSTr(dname,1,3) FROM dept; --截取[1,3]
concat	select dname,concat(dname,'123') X from dept --拼接数据
replace	select dname,replace(dname,'a','666') X from dept --把a字符替换成666
ifnull	select ifnull(comm,10) comm from dept2 #判断,如果comm是null,用10替换

round	 select comm,round(comm) from emp  直接四舍五入取整
		 select comm,round(comm,1) from emp  四舍五入并保留一位小数
ceil & floor	select comm,ceil(comm) ,floor(comm) from emp  向上向下取整

uuid	select uuid()
返回uuid:a08528ca-741c-11ea-a9a1-005056c00001

now 
	select now() -- 年与日 时分秒
	select curdate() --年与日
	select curtime() --时分秒
hour() & minute() & second()
	select now(),hour(now()),minute(now()),second(now()) from emp ;--时分秒
year() & month() & day()
	select now(),year(now()),month(now()),day(now()) from emp ;---年月日

转义字符:为转义字符,需要使用'时使用转义字符
	select 'ab'cd' -- 单引号是一个SQL语句的特殊字符
	select 'ab'cd' --数据中有单引号时,用一个转义变成普通字符
5.条件查询
distinct 去重		 select distinct loc from dept;
where 查找条件数据 	 select * from emp where id=1;
like	模糊查询 通配符%代表0-n个字符,通配符_代表一个字符;
		select * from emp where ename like 'l%' --以l开头的(%a-以a结尾,%a%--中间包含a的,l_--l后有一个字符的)
null 	空值,常使用is null表示为空字段,is not null 为非空字段
between and 两者之间,用来检索两者范围内的数据
limit 分页,分数最高记录,按分数排序后,limit n 返回前n条(limit a,b 从a+1条开始,展示到b+1条记录)
order by 排序,默认为(ASC)升序排序,可使用desc降序排序(order by sal desc 薪资sal列降序排序)
6.统计函数
统计案例
	date_format(date,format) 获取日期及格式
	year(date)	获取年份日期
聚合函数 aggregation
	count() 统计个数
	max()/min() 最大值/最小值
	sum()/avg() 求和/平均值
分组group by,分组后过滤having
7.注释
	
	#行注释内容	– 行注释内容,这个使用较多
8.事务transaction

1.事务的4个特性ACID

	A-Atomicity 原子性,一个事务中的操作要么全部完成,要么全部失败。中间执行出错将会回滚(Rollback)到最初状态
	C-Consistency 一致性,事务开始前和结束后数据库的完整性没有被破坏
	I-Isolation 隔离性,数据库可以允许多个事务同时并发进行,隔离性会防止多个事务并发时因交叉执行导致的数据不一致问题
	D-Durability 持久性,事务处理结束后,对数据的修改是永久的,即便故障也不会丢失

2.隔离级别

	读未提交(Read uncommitted) 安全性最差,可能发生并发数据问题,性能最好
	读提交(read committed) Oracle默认的隔离级别
	可重复读(repeatable read) MySQL默认隔离级别 安全性能较好 性能一般
	串行化(serializable) 表级锁,读写都加锁,效率低下,安全性高,不能并发

3.开始、结束事务

	开启事务:start transaction / begin
	结束事务:commit 提交事务 rollback 回滚事务

4.事务处理

	1.在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
	2.事务处理可以用来维护数据的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
	3.事务用来管理 insert、update、delete 语句,因为这些操作才会“破坏”数据,查询select语句是不会的
	4.MySQL默认数据库的事务是开启的,执行SQL后自动提交。
	5.MySQL的事务也可以改成手动提交,那就有两个步骤:先开启,写完SQL后,再手动提交。
9.表强化:六约束constraints
	非空约束 not null
	唯一约束 unique
	主键约束 primary key
	外键约束 foreign key
	默认约束 default
	检查约束 check
10.索引 index
定义:索引是一种排好序的快速查找的数据结构,它帮助数据库高效的进行数据的检索。
分类
	单值索引
	唯一索引
	复合索引
索引的操作
	查看索引 show index from dept;
	创建索引 create index 索引名字 on 表名(字段名);
			create index loc_index on dept(loc);
	创建唯一索引 create unique index 索引名 on 表名(字段名);
	创建复合索引 CREATE INDEX 索引名 ON 表名 (字段1, 字段2)
			CREATE INDEX PIndex ON Persons (LastName, FirstName)
	删除索引 alter table dept drop index 索引名;
	注:条件查询之前添加explain 可查看是否使用索引,观察possible key是否有值,有则引用索引,高效。
索引扫描类型
	type:
	ALL 全表扫描,没有优化,最慢的方式
	index 索引全扫描,其次慢的方式
	range 索引范围扫描,常用语<,<=,>=,between等操作
	ref 使用非唯一索引扫描或唯一索引前缀扫描,返回单条记录,常出现在关联查询中
	eq_ref 类似ref,区别在于使用的是唯一索引,使用主键的关联查询
	const/system 单条记录,系统会把匹配行中的其他列作为常数处理,如主键或唯一索引查询,system是const的特殊情况
	null MySQL不访问任何表或索引,直接返回结果
最左特性
	当我们创建一个联合索引(复合索引)的时候,如(k1,k2,k3),
	相当于创建了(k1)、(k1,k2)和(k1,k2,k3)三个索引,这就是最左匹配原则,也称为最左特性。	
索引的优缺点
	优点:
	索引是数据库优化
	表的主键会默认自动创建索引
	每个字段都可以被索引
	大量降低数据库的IO磁盘读写成本,极大提高了检索速度
	索引事先对数据进行了排序,大大提高了查询效率
	
	缺点:
	索引本身也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也要占用空间
	索引表中的内容,在业务表中都有,数据是重复的,空间是“浪费的”
	虽然索引大大提高了查询的速度,但对数据的增、删、改的操作需要更新索引表信息,如果数据量非常巨大,更新效率就很慢,因为更新表时,MySQL不仅要保存数据,也要保存一下索引文件
	随着业务的不断变化,之前建立的索引可能不能满足查询需求,需要消耗我们的时间去更新索引
11.表关联 association
4种表关系
	一对一	one to one 
	一对多	one to many
	多对一 	many to one
	多对多 	many to many
创建表的特点
	表都以s结束,标识复数
	字段多以表的首字母作为开头,多表联查时,方便标识出时哪个表的字段

多表联查 join
笛卡尔积 Cartesian product 
		通过 , 来拼接多个表格
		SELECT * FROM dept,emp
三种连接join 
	内连接 inner join 两边都对应有记录的才展示,其他去掉
	左连接(外)left join 左边表中的数据都出现,右边没有数据以NULL填充
	右连接(外)right join 右边表中的数据都出现,左边没有数据以NULL填充
子查询 subquery
	子查询即嵌套查询,效率低慎用
	单行子查询 =
	多行子查询 in
12.SQL执行优先顺序:
(1) FROM [left_table] 选择表
(2) ON  链接条件
(3)  JOIN  链接 
(4) WHERe  条件过滤 
(5) GROUP BY  分组
(6) AGG_FUNC(column or expression),... 聚合 
(7) HAVINg  分组过滤
(8) SELECt (9) DISTINCT column,... 选择字段、去重 
(9) ORDER BY  排序
(10) LIMIT count OFFSET count; 分页
附录1: char和varchar有什么区别?
char为定长字符串,char(n),n最大为255
varchar为不定长字符串,varchar(n),n最大长度为65535
char(10)和varchar(10)存储abc,那它们有什么差别呢?
char保存10个字符,abc三个,其它会用空格补齐;而varchar只用abc三个位置。
datetime和timestamp有什么区别?
数据库字段提供对日期类型的支持,是所有数据类型中最麻烦的一个,慢慢使用就会体会出来。
date 是 年与日
time是 时分秒
datetime年月日时分秒,存储和显示是一样的
timestamp时间戳,存储的不是个日期,而是从1970年1月1日到指定日期的毫秒数
主键、外键、唯一索引的区别?
Primary Key 主键约束,自动创建唯一索引
Foreign Key 外键约束,外键字段的内容是引用另一表的字段内容,不能瞎写
Unique Index 唯一索引,唯一值但不是主键
对于约束的好处时,数据库会进行检查,违反约束会报错,操作失败。数据库提供了丰富的约束检查,还有其他约束,但现今弱化关系型数据库的前提下,基本已经很少使用,记住上面三个即可。
drop、delete和truncate之间的区别?
drop删除库或者表,数据和结构定义
delete和truncate只是删除表的数据
delete可以指定where条件,删除满足条件的记录,tuncate删除所有记录
对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数
附录2: 数据库mysql client操作帮助栏:
List of all client commands:
Note that all text commands must be first on line and end with ';'
?         (?) Synonym for `help'.
clear     (c) Clear the current input statement.
connect   (r) Reconnect to the server. Optional arguments are db and host.
delimiter (d) Set statement delimiter.
ego       (G) Send command to MariaDB server, display result vertically.
exit      (q) Exit mysql. Same as quit.
go        (g) Send command to MariaDB server.
help      (h) Display this help.
notee     (t) Don't write into outfile.
print     (p) Print current command.
prompt    (R) Change your mysql prompt.
quit      (q) Quit mysql.
rehash    (#) Rebuild completion hash.
source    (.) Execute an SQL script file. Takes a file name as an argument.
status    (s) Get status information from the server.
tee       (T) Set outfile [to_outfile]. Append everything into given outfile.
use       (u) Use another database. Takes database name as argument.
charset   (C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (W) Show warnings after every statement.
nowarning (w) Don't show warnings after every statement.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号