一、基本概念
通常我们说的数据库是指数据库管理系统,通过数据库管理系统实现对数据的增、删、改、查等系列管理,常见的数据库管理系统有:mysql,orcale,db2,mariadb,sql server等,这些为关系型数据库,数据存在磁盘中;而非关系型数据库中数据是以key=value的形式存放,存放在内存之中。
1、记录
多个字段组成的一条信息,相当于文件中的一行信息。
2、表
包含多条记录,相当于一个文件。
3、数据库
包含多个表,相当于一个文件夹。
4、数据库管理系统
如mysql,用于数据库管理,是一个软件。
5、数据库服务器
一台计算器(对内存要求很高)。
关系:
数据库服务器运行数据库管理系统;数据库管理系统管理数据库;数据库组织表;表存放多条记录。
二、mysql的基本使用
1、mysql的安装
2、登录mysql
'mysql -uroot -p'命令进行管理员身份登录,因为起始未设置密码,故不需要输出密码,直接回车即可登录成功。
3、添加密码
无密码不安全,通过’mysqladmin -uroot password xxx‘命令进行添加密码操作,其中xxx为添加的密码,添加成功后就可以用'mysql -uroot -pxxx'命令登录。
4、修改密码
通过'mysqladmin -uroot -pxxx password yyy'命令进行密码修改,其中xxx为原密码,yyy为新密码。
5、查看账户
在登录状态,通过‘select user();’命令查看登录账户,命令必须以英文分号结束。
6、创建账户
在登录状态输入如下命令“create user 'xxx'@'可连接限制‘ identified by 'yyy';",可以实现创建账户,其中xxx是用户名,yyy表示密码,具体详解如下:
create user 'egon'@'192.168.32.*' identified by '123'; #表示32网段的都可以连接 create user 'egon'@'192.168.32.3' identified by '123'; #表示只有这个ip可以连接 create user 'egon'@'%' identified by '123'; #表示任意用户都可以连接
ps:创建的用户存放在数据库服务端,供客户端登录连接。
7、远程连接
在命令行输入指令‘mysql -uxxx -pyyy -h zzz,xxx为用户名,yyy为密码,zzz为被连接主机ip,例如:
mysql -uegon -p123 -h 192.168.11.55
8、为账户授权
创建出账号以后,对数据库的一些操作权限新账号是没有的,需要在管理员的登录状态下进行账户授权。
(1)对已有账号进行授权
在管理员登录状态,执行如下命令:“grant all on db1.t1 to 'egon'@'%';”,翻译为:授予 egon@%用户数据库db1中的表t1的相关操作权限;或者输入命令:“grant all on *.* to 'egon'@'%';”,翻译为:授予egon@%用户所有数据库中所有表的相关操作权限。授权完成后须执行命令:“flush privileges;”,来刷新授权,授权生效。
(2)创建账号同时授权
在管理员登录状态,执行如下命令即可完成创建账号和授权的功能,如命令:grant all on *.* to 'alex'@'%' identified by '123';,完成后同样需要执行命令:flush privileges;
9、查看所有数据库
在登录状态输入命令:show databases;,查看所有数据库
10、破解密码
(1)杀死mysqld
以管理员身份运行cmd,执行如下两个命令,以进程的PID方式杀死mysqld服务端,或者以net stop mysql命令结束此进程。
(2)跳过授权表的方式启动mysqld
继续在命令行中输入如下命令,以跳过授权表的方式启动mysqld服务端
(3)更改密码
开启一个cmd命令框,启动mysql客户端,执行如下命令,将管理员密码设置成为空,设置后记得刷新授权。
(3)再次杀死mysqld
按照步骤(1)方式再次杀死mysqld
(4)启动mysqld,并按新密码登录
三、数据库增删改查
提示:在具有权限的用户的登录状态进行命令操作,所有命令结尾都需有英文的分号。
1、操作库
---增
执行命令:create database xxx charset utf8;,其中xxx为数据库的名字
--查
执行命令show databases;查看数据库文件夹,执行命令show create database db1;创建的数据库db1的信息。
---改
执行如下命令alter database db1 charset gbk;执行将数据库db1进行更改的操作,将字符编码更改为gbk的模式。
---删
执行命令drop database db1;执行将数据库db1删除的操作。
2、操作表
在进行表的操作之前,必须切换到一个具体的数据库下,切换数据的命令为:use xxx;,xxx为数据库的名字,用命令select database();命令可以查看当前所在的数据库。
---增
如命令:create table t1(id int,name char(10),age int)engine=innodb default charset utf8; 其中id、name、age为表中数据项目,并且int、char为说明数据的类型,char型需要指明长度,注意括号中的最后一个字段一定不要加逗号。
---查
命令show tables;查看数据库下表的情况,命令show create table t1;查看创建表t1情况,命令desc t1;查看表t1的结构。
---改
alter table t1 charset gbk; #更改编码格式 alter table t1 add sex char; #增加sex数据项目 alter table t1 drop sex; #删除sex数据项目 alter table t1 modify sex char(6); #修改sex的字符长度,但是不能修改sex alter table t1 change sex Sex char(6); #将sex修改成Sex,同时修改字符长度
---删
执行命令drop table t1;将删除t1表。
3、操作记录
---增
insert into db1.t1(id,name,age,Sex) values (1,'egon1',18,'male'), (2,'egon2',28,'male'), (3,'egon3',38,'male'), (4,'egon4',48,'male');
执行如上命令,将在db1数据库的t1表格中添加values值,数据的顺序需要和规定顺序一致。
---查
执行命令select name,id from db1.t1;是查看数据库db1下表t1中name和id项目的数据;执行命令select * from db1.t1是查看数据库db1下表t1中的所有项目的数据。
---改
执行命令update db1.t1 set name='alexsb' where id=5;将会符合where条件的name更改为alexsb,条件可以自行选择,若不加where则会将所有的name都会更改。
---删
执行命令delete from db1.t1 where id=3;删除符合条件的整条信息,条件可以自行选择。命令delete from db1.t1; 仅仅只有删除记录的效果,没有把表重置到初始状态的功能;
truncate db1.t1; 命令则是清空+重置
ps;自增
create table t1(id int not null unique auto_increment,name char(4)); insert into db1.t1(name) values ('egon1'), ('egon2'), ('egon3'), ('egon4');