一.含义:
存储数据的仓库
二.特点:
永久存储
可以支持一些事物
(数据库的事务--将整个业务操作看成一个整体:转账(要莫一起成功,要莫一起失败!))
执行效率高
三.之前存储方式:
1.临时变量:存储在内存中,方法结束,局部变量就消失了
2.数组 存储同一种类型元素,但是长度固定的
3.StringBuffer;字符串缓冲区,里面存储的可变的字符序列
4.集合 存储任意类型元素,必须引用类型,取元素:(单例集合:Iterator),增强for循环
存储大量大数据,效率太低
5.Io流,也能存储数据,但是太耗时(读写过程)
四.常见的数据库:
关系型数据库:oracle,针对javaee支持的(Java平台),收费
mysql,开源的而且免费,相同的数据库引擎:MariaDB
SqlServer,针对net平台更兼容一些
非关系数据库:NoSQL
redis-->分布式缓存,可以缓存用户:User,缓存相关商品数据/缓存一些经常改变的数据
MangoDb
安装的话,太麻烦了,略过,直接进入正题,开始上手。
1.使用进入dos控制台进行登录(黑窗口去使用)
c:\Users\zhangyang>mysql -uroot -p
DDL语句:操作数据库
2.查询当前服务器软件中的所有的数据库
mysql>show databases;
3.创建新的数据库
create database 数据库名称;
create database if not existe 数据库名称;
4.查看创建的数据库的默认字符集
show create database 数据库名称;
5.修改数据库的默认字符集
alter database 数据库名称 character set 字符集;
6.删除数据库
drop database 数据库名称;
drop database if exists 数据库名称;
7.切换数据库(数据库本身就是一个文件夹,进入到某个文件夹中)
use 数据库名称;
DDL语句:来操作表
1.查询当前指定数据库中的所有表
show tables;
2.创建表的语法:
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2,
字段名称3 字段类型3,
...
字段名称n 字段类型n
);
3.mysql常见的字段类型
int:整数类型(推荐):默认11位
给定的值,它获取到当前整数的实际长度(自动获取)
int(位数):不推荐
varchar(指定长度):就是java类的String,字符串类型:推荐使用'',也可以是双引号,也可以不带引
号
date:日期,仅仅只是表示日期,没有时间
datetime:日期+当前时间
timestap:时间戳(就当前被访问/操作具体:当前系统时间)
double(5,3):小数类型,可以5位数据,小数点后3位...
double 小数类型:100-->100.0
4.查询表的结构
desc 表名;
5.修改表
a.给表中添加一列(添加一个字段)
alter table 表名 add 字段名称 字段类型:
例:mysql>alter table student add hobit varchar(20);
b.修改表的字段名称
alter table 表名 change 以前的列名称 新的列名称 以前的字段类型;
例:mysql>alter table student change gender sex varchar (5)
c.修改表的字段类型
alter table 表名 modify 字段名称 更改后的字段类型
例:mysql>alter table student modify sex varchar(3);
d.修改表的名称
alter table 以前的表名 rename to 新表名;
例;mysql>alter table student rename to stu;
e.创建表的时候复制一张相同的表
create table 新表名 like 存在的表名;
例:mysql>create table teacher like stu;
f.删除表
drop table 表名;
drop table if exists 表名;
例:mysql>drop table teacher;
一.工具介绍
sqlyog:图形界面话工具,可以提高开发频率,对于前期,需要自己手动写sql.
二.零散知识点
1.--普通注释
#注释,引用注释
Show variables like'%character%',模糊查看当前mysql服务端所有的字符编码集
三.数据库操作语句:操作表的记录
例:USE ee_2104;
DESC stu;
1.给stu表插入数据
插入语法
a.语法一:insert into 表名 values(字段值1,字段值2,...n:全部字段);
例:INSERT INTO stu VALUES(1,'高圆圆',41,'西安市','女','1990-02-27','喜欢足球') ;
b.语法二:插入部分字段
inset into 表名 (字段名称1,字段名称2,字段名称3..)values(值1,值2,值3..);
例:INSERT INTO stu (sid,name,age,sex)VALUES(2,'赵又廷',45,'男');
c.语法三:插入全表字段或者部分字段的时候,可以一次性插入多条记录
insert into 表名 values(字段值1,字段值2,..n:全部字段),(字段值1,字段值
2,..n:全部字段),(...)
例:INSERT INTO stu VALUES
(3,'李四',24,'广州市','女','1998-10-20','喜欢跑步'),
(4,'王五',27,'运城市','男','1997-11-20','喜欢篮球'),
(5,'文章',28,'西安市','男','1997-11-20','喜欢足球') ;
2.注意事项:
插入数据的时候,必须保证插入值对应的字段类型一致,否则会存在潜在问题(类型不匹配)
插入全表字段的值必须总数据要和字段列名的总数一致
一.修改
update语句:修改
update 表名 set 字段名称 = 值 where xx=xx; 带条件进行修改
来来来,老哥给你来举例
例:将name为7的人的学号改成6
UPDATE stu SET sid = 6 WHERE NAME = '7' ;
例:将sid为6的学生 把name 改成"杨德财",address改为"西安市"
UPDATE stu SET NAME = '杨德财',address = '西安市' WHERE sid = 6 ;
例:update 表名 set 字段名称 = 值; (属于批量修改) (都会带条件修改:推荐的)
UPDATE stu SET address = '西安市' ;
二.删除
delete from 表名 where ...:带条件来删除:
例:删除sid=6的学生
delete from stu where sid =6;
1).delete from 表名:是删除全表数据(只是删除表的记录,表字段都还在!)
例:delete from stu;
2).truncate table 表名:删除全表数据
例:truncate table stu;
drop table stu:删除表
例:drop table stu;
(拓展分析):
试问,1)跟2)都是删除全表数据,这两货有啥区别呢?
答: delete from 表名:只是删除了表中的全部数据,那么当前表的结构还存在,
针对自增长主键id,下次从之前id值继续自增。
truncate table 表名:会将当前的表的全部数据以及表都删除掉,并且自动
创建一张一摸一样的表,直接影响自增长主键,从0继续开始自增。
拿我自己的话说,就相当于微信退出一样,前者是退出账号,你自己的账号信息
都在,下次直接登录是可以的,后者是注销登录,下次登录的话,得从新重新输入
信息。
三.查询
DQL语句:数据库查询语句(这玩意是重点,查询种类还贼鸡多,加油记)
有七种,来,我给你罗列。
a.基本查询
b.带where条件查询
c.模糊查询
d.聚合查询
e.分组查询
f.筛选查询
e.分页查询
1.基本查询
select
要查的内容
from
从哪个表里查
要是字段重复了,查询字段的时候,前面加上distinct去重,
有些值为null咋办,可以使用mysql自带的函数ifnull
查询字段的时候给别名as"别名",它可以省略。
进行字段求和/求差,字段类型必须一致,否则出现警告
2.where查询
select
all
from
从哪个表里查
where
要查的条件
where 赋值运算符=
where 比较运算==,<,<=,>,=>,!=,<>(最后这个是不等于)
where 其他符号:&&,||,and,or,between,and...
where 字段名称 in(值1,值2,值3)等价于:字段名称=xx or xx or xx
where 字段名称 是否为null (is null):为空 (is not null):不为空
提醒一下,java语言的==null,在这块不支持,用is null 或者is not null.
3.模糊查询
select
字段列表
from
表名
where
字段名称
like(关键字)
'%xx%';
%:表示可以匹配的任意的多个字符,一般都是'%字符值%':包含指定的字符的信息,模糊查询出来.
_:表示代替一个字符:模糊查询,名字为三个字符的人'___'
空格:模糊查询姓名为两个字符的人,'_化'
show variables like '%character%';
4.聚合查询
count(字段名称):查询总记录数,字段名称必须非null,且都使用非业务字段
avg(字段名称):查询当前字段的平均值
max(字段名称):查询当前字段的最大值
min(字段名称):查询当前字段的最小值
sum(字段名称):查询字段的求和值
注意,不能使用业务字段作为条件查询总记录数,因为业务字段都是可能发生变化的字段(不建议)
这家伙查出来的都是单行单列的
5.排序查询
select
字段列表
from
表名
order by
字段名称 排序方式
6.分组查询
group by 带条件查询,必须先使用条件,然后参与分组
where语句必须放置在group by 之前
查询时候:
分析:查询哪个字段
带什么条件
有没有分组(需要分组,where条件必须在前)
有没有筛选,如果有筛选,有分组
先where
在分组
再筛选...
筛选:having
其后可以使用聚合函数,而且如果sql语句有where条件,有group by ,有having
where必须置于group by之前
group by 必须置于having 之前
7.分页查询
mysql :limit 起始行数,每页显示的条数
select
字段列表
from
表名
limt
起始行数,每页现实的条数;