17.Java与数据库(一)【Java学习笔记Hatter】Java开发工程师
1.什么是数据库?
数据库: database,存储数据的仓库。高效的存储和处理数据的介质(磁盘和内存)
2.数据库的分类
存储介质不同:关系型数据库SQL
非关系型数据库NoSQL
3.两种数据库阵营的区别:
关系型数据库:安全(保存在磁盘基本不会丢失),比较浪费空间。
非关系型数据库:效率高(运行在内存),不安全,断电丢失。
4.关系型数据库:是一种建立在关系模型上的数据库。
关系模型:一种建立在关系上的模型,包含三个方面:
①数据结构:数据存储的问题,二维表。
②操作指令集合:所有SQL语句。
③完整性约束:表内数据约束(字段与字段),表与表之间约束(外键)。
关系型数据库特点:
若表中对应的某个字段信息没有数据,但是系统依然需要分配空间,所以关系型数据库比较浪费空间
5.SQL:结构化查询语言(数据以查询为主)
SQL分为三个部分:
①DDL:数据定义语言,用来维护存储数据的结构(数据库,表)
代表指令:create ,drop,alter等
②DML:数据操作语言,用来维护存储数据的结构(数据表中的内容),代表指令:insert,delete,update等;其中DML在内部又单独进行了一个分类:DQL数据查询语言。代表指令:select
③DCL:数据控制语言,主要是负责权限管理(用户),代表指令:grant,revoke等
SQL是关系型数据库的操作指令,SQL是一种约束,但不强制 。
6.Mysql数据库是一种c/s结构的软件:客户端/服务端,若想访问服务器必须通过客户端(服务器 一直运行,客户端在需要使用的时候运行)
交互方式:
①客户端连接认证:连接服务器,认真身份:
mysql.exe -hlocalhost -P3306 -uroot -p
②客户端发送SQL指令
③服务器接收SQL指令:处理SQL指令:返回操作结果
④客户端接收结果:显示结果
show databases;
⑤断开连接(释放资源:服务器并发限制 )
exit/quit//q
将Mysql服务器对象分为四层:系统(DBMS)->数据库(DB)->数据表(Table)->字段(Field)
7.SQL的基本操作:CRUD
将SQL的基本操作对象进行分类,有三类:库操作,表操作(字段),数据操作
(1)库操作
①创建数据库
create database 数据库名字[库选项];
库选项:用来约束数据库
一为字符集设定:charset/character set具体字符集(数据存储的编码格式)GBK和UTF8
二为校队集设定:collate具体校对集(数据比较的规则)
校对集依赖字符集
数据库名字不能用关键字或保留字,若非要使用关键字或保留字,则需在数据库名字两边加上反引号`数据库名字` (反引号``,单引号'')
②查看数据库
show databases;查询所有数据库
模糊查询
show databases like ’pattern‘ ;--pattern是匹配模式
%:表示匹配多个字符
_:匹配单个字符
查看数据库创建语句
show create database mydatabases;
数据库在执行SQL语句之前会优化SQL;系统保存的结果是优化的结果。
③更新数据库
数据库名字不可修改
数据库的修改仅限库选项:字符集与校对集
alter database 数据库名字[库选项];
④删除数据库
drop database 数据库名字;
注意:删除不可逆,应备份后操作。
(2)表操作
表与字段是密不可分的。
①创建表
create table[in not exists]数据库名. 表名(
字段名字 数据类型,
字段名字 数据类型
);
if not exists:若表名不存在,就创建;若存在,则不执行代码。
例:
create table if not exists mydatabase.student (
name varchar(10),
gender varchar(10),
num varchar(10),
age int
)charset utf8;
②查数据表
查看所有的表 :show tables;
模糊匹配:show tables like 'pattern';
show tables like '%s';---查看以’s‘结尾的表
查看表创建语句:show create table 表名;(/g==;)(/G==将查到的结构旋转90°变为纵向)
查看表结构:查看表中的字段信息
desc/describe/show columns from 表名;
③修改数据表
修改表本身:表名和表选项
表名:rename table 旧表名 to 新表名;
表选项:alter 表名 表选项 值;
alter table student charset GBK;
新增字段:
alter table 表名 add[column] 字段名 数据类型 [列属性][位置];
例:
给学生表增加一个ID字段放到第一个位置
alter table student
add column id int
first;
修改字段:alter table 表名 modify 字段名 数据类型[属性][位置]
例:
将学生表中的number学号字段变成固定长度,且放到第二位(id后)
alter table student
modify number char(10) after id;
重命名字段:
alter table 表名 change 旧字段 新字段名数据类型
例:
修改学生表中的gender字段为sex
alter table student
change gender sex varchar(10);
删除字段:
alter table 表名 drop 字段名;
例:
删除学生表中的年龄字段
alter table student drop age;
8.数据操作
(1)新增数据
①给全表字段插入数据,不需要指定字段列表:要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致:凡是非数值数据,都需要使用引号包裹
insert into 表名 values(值列表)[,(值列表)];----可一次性插入多条记录
例:插入数据
insert into student values(1,'sql01','Tom','male'),(2,'sql02','Jim','female');
②给部分字段插入数据,需要选定字段列表:字段列表出现的顺序与字段的顺序无关;
但值列表的顺序必须与选定的字段的顺序一致
insert into 表名(字段列表)values (值列表)[,(值列表)];
例:指定字段列表插入数据
insert into student (number ,sex,name,id) values
('sql03','male','Davai',3),
('sql04','female','Lusy',4);
(2)查看数据
select */字段列表 from 表名 [where 条件];
例:
查看指定字段指定条件数据
select id,number,sex,name
from student where id=1;
(3)更新数据
Update 表名 set 字段= 值[where条件];
例:
update student set sex='female'
where name='Jim';
(4)删除数据
delete from 表名[where条件];
例:
delete from student
where sex='male';
9.校对集问题
校对集:数据比较的方式
校对集有三种格式:
_bin:binary,二进制比较,取出二进制位,一位一位比较,区分大小写
_cs.case sensitive,大小写敏感,区分大小写
_ci:case insensitice,大小写不敏感,不区分大小写
校对集的应用:只有当数据产生比较的时候,校对集才会生效


1914篇文章