为什么要用数据库
是因为使用文件存储数据有几个明显的缺点:
- 安全性问题
- 不利于数据查询和管理
- 不利于存储海量数据
- 在程序中控制不方便
主流数据库:SQl Sever、Oracle、MySQL、PostgreSQL、SQLite、H2
基本使用
连接服务器
mysql -h 127.0.0.1 -P 3306 -u root -p
- 不写
-h 127.0.0.1
默认连接本地 - 不写
-P 3306
默认连接3306端口号
服务器 数据库 表关系
库的操作
库的创建
create database db3 charset=utf8 collate utf8_general_ci;
创建一个名为db3,使用utf字符集,并带校对规则utf8_general_ci的db3数据库。show variables like 'charater_set_database';
查看系统默认字符集show variables like 'collation_database';
查看系统校验规则show charset;
查看数据库支持的字符集show collation;
查看数据库支持的字符集校验规则create database test1 collate utf8_general_ci;
不区分大小写校验规则create database test2 collate utf8_bin;
区分大小写校验规则
库的查看
show databases dbname;
库的修改
ALTER DATABSE test charset = gbk;
把test的字符集改为gbk
库的删除
DROP DATABASE dbname;
- 不要随便删除数据库
库的备份和恢复
- 库的备份是在退出数据库的连接的状态下操作的
mysqldump -p3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
备份mysql> source D:/mysql-5.7.22/mytest.sql;
恢复(连接时恢复)mysqldump -u root -p 数据库名 表名1 表名2 > 储存路径
备份一个数据库的一张或几张表mysqlfumo -u root -p -B 数据库名1 数据库名2 > 储存储存路径
同时备份多个数据库- 如果备份一个数据库时,没有带上-B参数,在恢复数据库时,需要先创建空数据库,再使用数据库,再使用source来还原。
查看连接情况
show processlist
:可以告诉我们当前有哪些用户连接到MySQL,如果查出某个用户不是正常登陆的,很有可能数据库被人入侵了。以后发现数据库比较慢时,可以用这个指令来查看数据库连接情况。
表的操作
创建表
CREAET TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
)character set 字符集 collate 校验规则 engine 存储引擎;
示例:
create table users(
id int,
name varchar(20) comment '用户名‘
password char(32) comment '密码’
birthday data comment '生日'
)character set utf8 engine MyISAM;
- 不同的存储引擎,创建表的文件不一样
查看表结构
- 查看表:
select * from 表名
desc 表名
修改表
- 添加记录:
insert into users values(1,'a','b','1982-02-02'),(2,'b','c','1984-01-04');
在表users中插入两组数据 - 添加字段:
alter table users add assets varchar(100) comment '图片路径‘ after birthday
在表的users的birthday字段后添加一个字段保存文件路径 - 修改字段:
alter table users modify name varchar(60);
将name的长度改为60 - 删除字段:
alter table users drop passsword;
删除password字段 - 修改表名:
alter table users rename to emlpoyee;
将users改为employee - 修改字段名:
alter table employee change name xingming varchar(60);
将表名name改为xingming,新字段需要完整定义 - 删除表:
drop table t1;
- 更新表中的数据:
update 表名 set 修改的列及其新值 where 修改指定行
将id = 3的一行中的data改成300:
如果没有where语句则默认修改所有行。 - 删除数据:
delete from 表名 where 删除的行;