数据库是用来存储数据的集合,可以对数据进行持久化存储.
Orcale数据库 | 是orcale公司开发的,是一个大型收费数据库系统 |
---|---|
MySql数据库 | 是orcale公司开发的,是一个中小型数据库 5.xxx免费 6.xxx收费 |
DB2数据库 | 是IBM公司开发,是一个大型的收费数据库系统 |
sql Servler数据库 | 是微软公司开发的,是一个大型收费数据库系统 |
sqllite数据库 | 是谷歌开发的,是一个微型嵌入式数据库 |
数据库管理系统(DataBaseManagerSystem)
数据库(DataBase)
一个数据库管理系统可以存储多个数据库
一个数据库可以存储多张表
一个表里面可以储存多条记录
DDL(数据定义语言)
例如:create开头,一般用来创建数据库/表
DML(数据操作语言)
例如:insert update delete 一般用来做增删改
DCL(数据控制语言)
例如:grant/revoke 一般用来赋权限/撤销权限
DQL(数据查询语言)******
例如:select 一般用来查询
方式一:
cmd: mysql -uroot -p
方式二:
MySQL 5.5 Command Line Client
方式一:
cmd:
开启命令: net start mysql
关闭命令: net stop mysql
方式二:
我的电脑--->管理-->服务和应用程序-->服务-->mysql-->开启/关闭
1.创建数据库sql语句
create database 数据库名称;
2.查看数据库;
show databases;
3.删除数据库
drop database 数据库名称;
4.使用/切换数据库
use 数据库名称;
注意事项:操作表之前先切换数据库
1.创建表的sql语句
create table 表名(字段名称 数据类型,字段名称 数据类型...);//
2.查看表
show tables;
3.查看表结构
desc 表名;
4.删除表
drop table 表名;
1.添加记录
insert into 表名 values(值1,值2,值3,...);
2.查询记录
select * from 表名;
3.修改记录
update 表名 set 字段=值,字段2=值2;
4.删除记录
delete from 表名 where 条件;
方式一:
找到mysql数据库安装包中的my.ini文件然后把
default-character-set=gbk
方式二:
show variables like 'char%';
字符串类型
varchar:
char:
text:
varchar和char的区别
varchar(10):是可变字符串,"abc",存储效率低,但是不占用存储空间
char(10):是不可变字符串,"abc",存储效率高,但是占用存储空间
text:大文本
注意:在sql中定义字符串类型必须指定长度,否则报错
例如: name varchar(200);
数字类型:
tinyint smallint int bigint float double
byte short int long float double
age int price floate(8,2)
布尔类型
boolean
大数据类型
blob:一般用来存储二进制文件
日期类型:
year: 年 例如 2019
time: 时间 例如:10:20:50
date: 日期 例如:2019-06-04
datetime:日期时间 例如:2019-06-04 14:30:10
timestamp:时间戳 自动获取时间
1.添加字段
alter table 表名 add 字段名称 字段类型;
2.删除字段
alter table 表名 drop 字段名称;
3.修改字段名称
alter table 表名 change 原字段名称 新字段名称 数据类型;
4.修改字段的数据类型
alter table 表名 modify 字段名称 新数据类型;
5.修改表名
alter table 表名 rename to 新表名;
= > < >= <= != <>
and:用来连接多个条件 同时成立
or:用来连接多个条件 只要有一个成立
is: 用来查询字段值是NULL的
is not:用来查询字段值不是NULL的
in :用来表示满足in中的值的条件
between .. and :用来查询满足between和and之间的值
like:模糊查询
升序(从小到大) order by 字段 asc
降序(从大到小) order by 字段 desc
默认是升序
limit 值1,值2:
值1:角标
值2:长度
as
count():用来统计数量
sum():用来求和
avg():用来求平均数
max():用来求最大值
min():用来求最小值
group by
having一般用来配合group by做分组后的条件查询
primary key;主键约束,约束字段中的值不能为空并且唯一
auto_increment:主键自增长
not null:非空约束
unique:唯一约束
default:默认约束
foreign key:外键约束
创建用户的sql语句:
create user '用户名'@'地址' identified by '密码';
删除用户的sql语句:
delete from user where user = '要删除的用户名';
flush privileges;
赋权限的sql语句:
grant 权限 on 数据库.表 to '用户名'@'地址';
grant all privileges on 数据库.表 to '用户名'@'地址';
撤销权限的sql语句:
revoke 权限 on 数据库.表 from '用户名'@'地址';
revoke all privileges on 数据库.表 from '用户名'@'地址';
数据库可视化工具
一对多关系
多对多关系
一对一关系
一对多关系的建表原则:在多的那张表上建立一个字段指向一的那张表的主键
多对多关系的建表原则:需要重新创建一张表,这张新的表中分别有两个字段指向另外两张表的主键
一对一关系的建表原则:把两张表合并成一张表
E:Entity
R:relationship
连(联)接查询
子查询
交叉连接 :cross join
select * from 表1 cross join 表2;
内连接: inner join
显式内连接
select * from 表1 inner join 表2 on 主键=外键;
隐式内连接
select * from 表1 , 表2 where 主键=外键;
外链接: outer join
左外连接 left outer join
select * from 表1 left outer join 表2 on 主键=外键;
右外连接 right outer join
select * from 表1 right outer join 表2 on 主键=外键;
格式:
select * from 表1 where 字段 in(select 字段2 from 表2 where 条件);
in :代表查询的条件满足其中任意一个 不能和> < >= <=配合使用
例如: id in(1,4,5)//id=1 or id=4 or id=5
ang :代表查询的条件满足其中任意一个 可以和> < >= <=配合使用 select * from student where s_id>any(select cid from class where cid>3);
例如: id >any(1,4,5)// id>1 or id>4 or id>5
some:和any用法一样
all:代表查询的条件必须满足所有值 可以和> < >= <=配合使用
例如: id >all(1,4,5)// id >1 and id >4 and id>5
foreign key(外键字段) references 主键表(主键字段);
sql:
创建:
create view 视图名称 as sql语句; create view asd as select sname,s_id from student inner join class on sid=cid inner join zb on s_id=zid order by s_id desc;
删除:
drop view 视图名称;
sql:
create procedure 存储过程名称()
begin
sql1;
sql2;
end;
边界符:
delimiter //
概述:操作一组sql语句要么全部成功要么全部失败
sql:
开启事务:start transaction;
提交事务:commit
回滚事务:roll back
* 第一种:知道原始密码 然后修改密码
* 1.登录mysql:mysql -uroot -p
* 2.切换数据库:use mysql
* 3.修改root用户的密码:
* update user set password=password('新密码') where user='root';
* 4.刷新:flush privileges;
第二种:忘记密码,修改密码
* 1.停止mysql的服务(右击我的电脑图标-->管理--->服务和应用程序--->服务--->右侧列表找到mysql--->右击关闭服务)
* 2.打开一个cmd窗口,执行:mysqld --skip-grant-tables(不能加分号;)
* 3.这时再开一个窗口来登录mysql数据库:mysql -u root
* 4.切换数据库 use mysql;
* 5.修改mysql数据库里面user表密码:
* 6.update user set password=password('新密码') where user='root';
* 7.把两个cmd窗口关闭,打开任务管理器,找到mysqld的进程,结束
* 8.启动mysql服务
数据库备份(建议先找个不重要的数据库进行测试)
无需登录数据库直接在 cmd 窗口输入以下命令
mysqldump -h localhost -u root -p 要备份的数据库名称>d:/要备份的数据库名称.sql
例如把java1809数据库备份到D盘下
mysqldump -h localhost -u root -p java1903>d:/java1809.sql
恢复数据库:
1.登录mysql数据库通过 create database java1809;创建数据库
2.切换到要恢复 的数据库 use java1809;
3.再开一个cmd窗口 在窗口输入以下命令:mysql -u root -p java1809<d:/java1809.sql
4.回车输入密码
exit
quit
\q
ctrl+c