JAVA10-数据库学习

1.数据库的概念

1.1. 数据的存储方式

  • Java 中创建对象: Student s = new Student(1, "张三") 存在内存中 

new Object()将会根据参数value的数据类型,返回对应类型的对象:

  1. 如果value为基本数据类型String、Number、Boolean,则返回对应类型的对象。
  2. 如果value本身为对象,则返回其本身。
  3. 如果省略了value参数,或value为null、undefined,则返回自身无任何属性的Object对象,即返回一个空对象。
  • Java IO 流:把数据保存到文件中

1586648768(1)

1.2.数据库的特点

  • 1) 存储数据的仓库
  • 2) 本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的。
  • 3) 所有的关系型数据库都可以使用通用的 SQL 语句进行管理 DBMS DataBase Management Syste

1.3.数据库的专业术语

在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。


  • 表头(header): 每一列的名称;
  • 列(col): 具有相同数据类型的数据的集合;
  • 行(row): 每一行用来描述某条记录的具体信息;
  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • 键(key): 键的值在当前列中具有唯一性。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是可以定制的,采用 GPL 协议,你可以修改源码来开发自己的 MySQL 系统

1.4 MySQL安装与卸载、配置

  • 1) 文件解压和复制过程,默认的安装目录:
  • 2) 安装好以后必须对 MySQL 服务器进行配置
  • 3) mysql 中管理员的名字:root
  • 4)停止 window 的 MySQL 服务。 找到“控制面板”-> “管理工具”-> “服务”,停止 MySQL 后台服务

Mysql配置

  • 启动/关闭Mysql的服务,也就是没有界面的应用程序,
  • 方式一:选择计算机→选择管理→选择服务→寻找Mysql→可选择手动和自动启动,
  • 方式二:cmd中,输入services.msc(来启动、终止并设置 Windows 服务的管理策略),此处可以直接进入服务框。
  • 方式三:管理员权限的cmd窗口中,输入net stop/start mysql,即可停止Mysql

1586650324(1)

1586649898(1)

1586649721(1)

  •  



1.5测试连接Mysql

  • 本地登录:连接MySQL 输入cmd进入黑框。mysql – uroot -proot,也可以使用mysql –uroot –p  然后输入密码,隐藏形式。
  • 远程登录:mysql –hIP地址 –uroot –proot
  • 远程登录2mysql --host=ip地址 --user=用户名 --password=密码


1586649369(1)

  • 本地退出MySQL,黑框输入exit/quit

1586649782(1)

1.6 MYSQL的目录结构

安装目录在选择安装的位置,具体文件目录的解释如下:

  • bin 二进制的可执行文件
  • date 日志文件或数据文件
  • include C语言的头信息
  • lib 类似于java包,支持和库文件
  • share mysql的错误信息
  • mysql.ini mysql的配置文件

数据目录在C:\ProgramData\MySQL\MySQL Server 5.5\data,mysql数据库软件,起始安装成功会包含3个数据库,里面包含一些frm格式的表,具体文件目录的解释如下:

image


1586656471(1)

2.SQL

      sql全称Structured Query Language 结构化查询语言,就是定义了操作所有关系型数据库的原则。


2.1.SQL语句的语法


2.1.1.注释分类

  • 1) 每条语句以分号结尾,如果在 SQLyog 中不是必须加的。 需要注意的是mysql -uroot -proot并不是sql语句,只是登录数据库的命令。
  • 2) SQL 中不区分大小写,关键字中认为大写和小写是一样的 
  • 3) 3 种注释:       --注释内容             /*注释内容 */              #注释内容 mysql特有

image

学习第一条语句:show databases;此处多一infomation_

image

     在MySQL中:

  • information_schema 看作是一个数据库,确切说是信息数据库,它是一个视图。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件
  • performance_schema:性能方面数据库,性能提升方面的工作
  • mysql非重核心的数据库,有很多文件
  • test 是一个空的数据库

1586659285(1)

information_schema数据库表说明:

  • SCHEMATA表:提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
  • TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
  • COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。
  • STATISTICS表:提供了关于表索引的信息。是show index from schemaname.tablename的结果取之此表。
  • USER_PRIVILEGES(用户权限)表:给出了关于全程权限的信息。该信息源自mysql.user授权表。是非标准表。
  • SCHEMA_PRIVILEGES(方案权限)表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。是非标准表。
  • TABLE_PRIVILEGES(表权限)表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。是非标准表。
  • COLUMN_PRIVILEGES(列权限)表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。是非标准表。
  • CHARACTER_SETS(字符集)表:提供了mysql实例可用字符集的信息。是SHOW CHARACTER SET结果集取之此表。
  • COLLATIONS表:提供了关于各字符集的对照信息。
  • COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。
  • TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。
  • KEY_COLUMN_USAGE表:描述了具有约束的键列。
  • ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。名为“mysql.proc name”的列指明了对应于INFORMATION_SCHEMA.ROUTINES表的mysql.proc表列。
  • VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。
  • TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表

2.1.2.SQL语句分类

  • 1) Data Definition Language (DDL 数据定义语言) 如:建库,建表

用来定义数据库对象:数据库 表 列等,关键字:create、drop、alter(改变)等

  • 2) Data Manipulation Language(DML 数据操纵语言),如:对表中记录增删改

用来对数据库中表的数据进行增删改,关键字:insert、delete,update等

  • 3) Data Query Language(DQL 数据查询语言),如:对表中的查询操作

用来查询数据库中表的记录(数据),关键字:select、where等

  • 4) Data Control Language(DCL 数据控制语言),如:对用户权限的设置

用来定义数据库的访问权限和安全级别,及创建用户,关键字:GRANT(同意,准予,允许)/REVOKE(取消; 废除; 使无效)等。

image

2.2.操作数据库 表

2.2.1.操作数据库CRUD

  • C(create )添加数据

(1)创建一个数据库 ;create database 数据库名字;

(2)创建一个数据库,防止重名:create database if not exists 数据库名称

(3)创建一个数据库,指定字符集:create database 数据库名称 character set gbk

(4)创建一个数据库,防止重名,指定字符集:create database  if not exists db11  character set gbk;

1586674955(1)

1586675299(1)




  • R(Retrieve/Read)读取数据

(1)查询所有数据库的名称 show databases;

(2)查询创建mysql数据的创建语法字符集:show create databases mysql;字符集utf8

1586674602(1)




  • U(update) 修改数据
  • D (delete)删除数据

一、删除表   drop table 表名称

二、修改表 

alter   table 表名称 add  列名 数据类型   (add表示添加一列)

alter  table  表名称 drop column 列名称( column表示列   drop表示删除)

三、删除数据库

drop database 数据库

四、CRUD操作(create 添加数据read读取数据 update 修改数据delete删除数据)

  1、添加数据(create)

a:      insert into + nation values('n002 ','回族 ')--加单引号是转为字符串,英文的

b:    insert into nation values('n003',' ')    只添加一列  后面的是空    给所有的添加可以用

c:    insert into nation(code,) values('n004')  给某一列添加可以用

d:给多列添加     insert into nation(code,name) values('n004','维吾尔族')

e: 专门添加自增长列的    insert into 表名 values('p001','p006')  自增长列不用管,直接写第二列

2、删除数据(delete)

   delete from +表名称--删除表中所有内容

   delete from +表名称 where ids=5  (删除此行)---where后面跟一个条件

3、修改数据(uodate)

update +表名称 set +列名称=' '      set(设置)---修改所有的内容这一列的

update +表名称 set +列名称='p006 ' where ids=6

update +表名称 set +列名称='p006 ',列名称='p002' where ids=6-----用逗号隔开可以修改多列

整数型(int)的不需要加单引号      0 (false)1(true)

4、查询数据(10种)

a1:简单查询

  select * from  表名称   ——查询表中所有数据     *代表所有列

  select code,name from 表名称——查询指定列数据

   select code,name from 表名称——查指定列的数据

select code as'代号',name as'姓名' from 表名称——给列指定别名

a2:条件查询

select * from 表名 where code=' '   查这一行

select * from 表名 where sex='true' and nation=' '   表示并列,--多条件并的关系

select * from 表名 where sex='true' or nation=' ' --多条件或的关系

a3:范围查询

select * from 表名 where 列名>40 and 列名<50

select * from 表名 where 列名 between 40 and 50  --专用于范围查询

  a4:离散查询

  select * from 表名 where 列名 in (' ',' ',' ')

  select * from 表名 where 列名 not in (' ',' ',' ')  反选,不在里面的

a5:模糊查询

select * from 表名 where 列名 like '%宝马%'——查包含宝马的

select * from 表名 where 列名 like '宝马%'——查以宝马开头的

select * from 表名 where 列名 like '%宝马'——查以宝马结尾的

select * from 表名 where 列名 like '宝马'——查等于宝马的

select * from 表名 where 列名 like '--E'——查第三个是E的

% 代表是任意多个字符

- 下划线 代表是一个字符

a6:排序查询

select * from 表名 order by 列名——默认升序排序

select * from 表名 order by 列名 desc——降序排列

select * from 表名 order by 列名 desc, 列名 asc——多个条件排序   , 前面是主条件 后面是次要条件

desc 降序  ,asc 升序, order by  排序  根据哪一列排序

a7:分页查询

select top 5 * from 表名——查询前5条数据

select top 5 * from 表名 where code not in (select top 5 code from car)

a8:去重查询(去掉重复的)

select distinct 列名 from

a9:分组查询

select Brand from 表名 group by Brand having count(*)>2

group by    having ——表示根据一列分组 ,count(*)>2——每一组的数量

a10:聚合函数(统计查询)

select count (*) from 表名——查询所有数据条数(每一列的)

select count (列名主键) from 表名——查询这列的所有数据条数(执行快)

select sum (列名) from 表名——求和

select avg  (列名) from 表名——求平均值

select max (列名) from 表名——求最大值

select min (列名) from 表名——求最小值



猜你喜欢

转载自www.cnblogs.com/rango0550/p/12685338.html