数据库
第一 SQL结构化查询语言 ———— > 很多的数据库产品 ———— > mysql sqlserver oracle DB2———— > 关系型数据库 ———— > 操作使用SQL语言 ———— > 将数据持久化到硬盘上 ———— > 将所有的需要保存的内容都一个一个单独管理的单元存在 ———— > 我们将这些的管理单元叫做库
第二 NOSql 两种解释 NotOnly SQL ,Not Sql
这种东西是近五六年出现的,他代表的内容和我们的关系型数据库有一些不同,NoSQL 是提倡跟快速的响应和存储,所以很多的NoSQL 数据库其响应速度是关系型数据库速度的N倍。同时,很多的NoSQL 其实是内存数据库,只在某个时段做数据持久化过程
数据库操作常用语句:
进入 :mysql -u root -p
要求:创建的每一个表必须有键。
创建数据库:create database name;
删除数据库:drop database danger;
查看数据库:show databases name;
带编码集的创建数据库:create database db_test default charset=utf8; //utf8 是编码集
进入刚创建的数据库的语句:use db_test;
查看库中的表:show tables;
创建表格式:create table fff(id int, name char(255),pwd varchar(255));
name char(10)规定这行所放字符数
删除表:drop table name;
查看表的属性:desc 名字;
向表中加入数据:insert into fff(id,name)value(345,456);
例:创建一个 id 键值自增,name 不能为空,pwd 有默认值,编码集为 utf8,都为int类型
create table fff(id int primary key auto_increment,name int not null,pwd int default 55)charset = utf8;
可以查询出信息:desc select *from foo\G;
主键自增:primary key auto_increment
处理表中内容的问题:确认一个表中,处理内容的动作有以下这些中,增删改查
增操作:**
①、**insert into 表名【(字段名,字段名)可不加】【value|values二选一】 (字段值,字段值);
value|values区分:
**②、**增加一列:alter table tb_test add tea char(255);向数据中加一列
删操作:delete from 表名[条件];
delete from tb_user where id = 2;//where后跟条件,删除id为2的那条数据;
若为delete from tb_user;//则删除整个表的数据,再次添加数据时,从删除前的id的开始;
eg:若删除重复数据则:
即保留有用的数据:DELETE FROM mail WHERE id NOT IN (SELECT * FROM (SELECT id FROM mail GROUP BY Email ORDER BY id) AS a);
改(更新)操作:update 表名 set 字段 = 值 条件;
update tb_user set name = ‘hhhh’,pwd = ‘tttt’ where id = 15;
查操作:select [字段名 别名]可不加 from 表名 别名 where 条件;//表别名可以改变代码量
①:代表全部的字段:select * from tb_user;
②:部分查看:name与pwd: select name,pwd from tb_user;
③:只查看name与pwd,并将其改变为其他名字:select name ‘姓名’,pwd ‘密码’ from tb_user;
④:多表连查:方法一:select *from tb_user,tb_major where uname = name;//无条件为笛卡尔积,先生成表,之后进行筛选
方法二:select *from tb_user join tb_major on uname = name ; //直接生成以下表select *from tb_user join tb_major on uname = name where 条件,可以进一步的筛选。
⑤:在某散点查找:select *from tb_user where 类型 in (散点);
eg:select * from tb_user where name in (10,30,15);散点为10,30,15
⑥:在范围:select *from tb_user where 类型 between 起始点 and 终点;
⑦:模糊查询:select *from tb_user where 类型 like ‘%X(某字符)%’; //X为某字符,%为字符,%X%为包含X的数据;
⑧:表 join 表 on 一直都是半结果:
eg:三表查询select *from tb_user left join tb_major on 条件 join tb_score on;//最后加入on才算结束。
*总结:
join on 减少无用数据。
select name from tb_stu, tb_jor where 条件 :这是先形成一张tb_stu,tb_jor的表,之后根据条件筛选
select name from tb_stu join tb_jor on 条件1 where 条件2:where前直接形成的表数据会少(已经满足了条件1),再根据条件2对生成的这个数据少的表进行筛选
join、left join与right join关系图:
联合查询:select * from tb_stu union select * from test;//改变了后面表结构,后面的字段需要和前面的字段相同
union
遇到Subquery returns more than 1 row问题:加in、any、all
聚合函数:函数,Mysql中像其他的语言工具一样,提供了对于数据库用户,更方便管理数据库的一套工具,用户可以通过使用这些工具来处理一些相对复杂的一些数据。这些工具其中一部分,就是函数。这些函数和我们认知到的所有面向过程语言中的函数没有区别,也是有返回值和参数的。
聚合函数是我们使用数据库查询过程中,针对查询出来的结果,进行二次操作包装,使用到的一些特殊的函数,我们叫他聚合函数
举例:
uuid():生成uuid:select uuid//生成32位16进制的数
replace():字符串替换:select replace(uuid(),’-’,’’);//去掉生成的uuid中的—。
eg:insert into foo(id,num) values(replace(uuid(),’-’,’’),89);
concat():拼接字符串
max(字段):查询此列最大值。
eg:select max(score) from tb_major;
也可作为条件select *from tb_major where score = (select max(score) from tb_major);
min(字段):查询此列最小值。
count(字段):查看此字段有几条数据。eg:select count(id) from tb_major;
avg(): 平均值 select avg(score) from tb_major where major = 1;
group by 字段:分组显示出来,从上到下遇见新的分组列出eg:select *from tb_major group by major; 数据都存在,只是经过分组,数据没有显示各组收起来了
各部分的执行顺序
select 聚合函数 from 某表 where 条件 group by 字段 order by 字段 having:
①先形成某表
②从表中筛选满足where条件的,在存储区生成表
③对筛选的表进行分组 group by
④对其分组进行聚合函数
⑤最后进行排序
语句中的执行顺序:
having后还可使用聚合函数
今天的文章java数据库小项目_数据库建立分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68367.html