一、数据库定义
1、关系型数据库:擅长关联计算,银行等用:oracle(性能1),db2(性能2),sqlserver(性 能 3)。mysql(性能远落后于前三个,差几十倍,但胜在免费,互联网公司用)
非关系型数据库:擅长单点计算,自动进行数据拆分,每一份数据都是单独文件。
2、MySQL通过jdbc和外界相连,jdbc也有socket。任何与网络互通的必须带端口号,MySQL默认端口号:3306,可以修改。
二、数据库原理和优化
1、文件存在硬盘上,硬盘上只能存文件。数据库存在硬盘上,我们看到的数据都是文件。例如navicat数据库中的表,有几张表就有几张文件。一个数据库可以支撑不同的web程序。每一个的数据库实例各占一个文件夹。在不加密的情况下,数据库的每个表拆解下来都是一个文件。MySQL数据以文件的形式存在硬盘,在内存运行。运行时用多少数据往内存加载多少,不用的还在硬盘存着。发送的sql语句是字符串 ,以流 (数组) 的形式发送。接受方接收到字符串后,利用字符串处理技术解析字符串,得到相应账户,密码,实例,表等,来判断这个账户是否有权限。
4、数据库性能低的原因:对一条数据进行操作,但是需要把全部数据和索引都加载到内存。内存损耗大,时间消耗也大,占内存时间也长。解决措施:
1)适用于关联操作多的:只处理一条数据,代价太大,所以批量处理数据,这要求数据之间有一定关系。所以需要关系型数据库,它主要功能是关联计算,比如求平均,求和,求max,求最小,去重等
2)适用于单次操作多的:按照一定标准(性别、省份等),把大表分解为小表。如果这时进行关联计算,就变麻烦了。因为需要把分开的数据拿到内存中合并,然后进行计算。
3)关联操作多and单次操作也多的:做冗余操作(牺牲硬盘空间,提高性能)。存两份,大表(关联)和小表(单词),这时要注意数据的同步。一个表增删改,另一个表跟上。
7、只要存储数据,一定有最基本的数据操作:增删改查
三、sql语句
1、基本操作
(1)查找:select 属性值 from 表名
(2)插入:insert into 表名(属性1,属性2,属性3,....) values ("值1","值2",数字直接写)
(3)删除:delete from 表名
(4)修改:update 表名 set 属性='值1',....
2、单表查询
-
(1)查询 = < > <= >= !=/<>
(2)and与 or或
-
(3)between .. and .. 介于..之间
-
(4)in() 包含
-
(5)is null 表格中没有数据
-
例子:
select from student2 where aga>=24
select from student2 where sex='男'
select from student2 where aga>=24 and sex='男'
select from student2 where classes is null
(6)模糊查询:like配合占位符使用 _代表一位字符 %代表任意位字符
select * from student2 where name like "_张"
select * from student2 where name like "张%"
(7)分页查询(限制语句) limit放在where子语句后
limit a,b a:表示起始索引值,索引值从0开始 b:表示查询个数
limit b offset a
select * from student2 limit 2,4
select * from student2 where age>14 limit 2,4
(8)排序 order by 列名。 desc降序|asc升序(默认)
(9)聚合函数:sum 求和;avg 求平均;min 求最大;max 求最小;count 取得记录数量,不统计为空的数值;分组函数 group by, 用having筛选
还有多表查询,因为内容有点多,所以我们下篇文章在详细说。