MySQL数据库的基本操作

目录

一、数据库

1.数据库概念

2.数据库管理系统(DBMS)

3.数据库系统(DBS)

4.DBMS工作模式

二、数据库的发展史

1.第一代数据库

2.第二代数据库

3.第三代数据库

三、数据库的类型

1.关系型数据库-SQL

2.非关系型数据库-NoSQL

四、MySQL

1.日志

2.引擎

3.MySQL数据库管理

4.常用数据类型

五、数据库增、删、改、查

1.DDL

2.DML

3.DQL 

5.数据表高级操作

6.删除类型小结

六、数据库用户管理

1.新建用户

2.数据库用户授权


一、数据库

1.数据库概念

数据:以记录的形式按照,以记录为行,字段(属性)为列的方式记录在表里

表:以行+列的形式组成表(类似excel表),用来存储具体的数据

数据库:表的集合,存储数据的仓库,以一定的组织方式存储的相互有关的数据集合

数据库可以完成数据持久化保存+快速提取

数据保存过程:最外层是mysql服务——>mysql数据库——>数据表——>记录为行,字段为列——>数据保存在一行行记录中

2.数据库管理系统(DBMS)

数据库管理系统是实现对数据库资源有效的组织、管理和存取的系统软件,在操作系统的支持下,可以实现用于对数据库的各项操作

DBMS主要功能:

数据库的建立和维护:包括建立数据库的结构和数据的写入、转换数据库的储存和恢复数据库的重组与性能监视等功能。

②数据定义功能:定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能,保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。

③数据操纵功能:包括数据查询统计和数据更新方面。

④数据库的运行管理功能:数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能。

⑤通信功能:DBMS与其他软件系统之间的通信,像Access能与其他的Office组件进行数据交换。

3.数据库系统(DBS)

数据库系统是一个人机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(数据库管理员)组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。

4.DBMS工作模式

①接受应用程序的数据请求和处理请求---》②将用户的数据请求(高级指令)转换为复杂的机器代码(底层指令)---》③实现对数据库的操作---》④从数据库的操作中接收查询结果---》⑤对查询结果进行处理(格式转换)---》⑥处理结果返回给用户

二、数据库的发展史

1.第一代数据库

层次模型(只有一个父分支)与网状模型(只有一个父分支)的数据库系统,为统一管理和共享数据提供了有力的支撑,代表产品是1969年IBM公司研制的层次模型数据库管理系统IMS。

2.第二代数据库

关系型数据库

IBM公司的关系数据库系统DB2,目前大部分数据库采用的是关系型数据库,1970年IBM公司的研究员E.F.Codd提出关系模型。

关系模型可用简单的E-R(实体-关系)图来表示,图中包含了实体(数据对象)、关系和属性三个要素

实体:举例子:法外狂徒张三就是实体

属性:描述法外狂徒张三的具体信息,姓名、年龄、性别、身高、体重等等

关系:法外狂徒张三和他爸,他妈之间的联系的关系

3.第三代数据库

非关系型数据库,面相对向的数据库系统,实用性强、适应面广,更加丰富的数据模型和更强大的数据管理功能为特征,以提供传统数据库系统难以支持的新应用。它必须支持面向对象,具有开放性,能够在多个平台上使用。

管理技术的3个阶段:①人工管理;②文件管理;③数据库系统

三、数据库的类型

1.关系型数据库-SQL

存储方式:以二维表的方式存储在数据库里,数据存储以记录为行,字段为列写入二维表中

每一行称为一条记录,用来描述一个对象的信息

每一列成为一个字段,用来描述对象的属性

主键的特性:唯一性和非空

常用的关系数据库:MySQL(Oracle公司收购)、SQL server(微软公司)、DB2(IBM公司)

优点:

①易于维护:都是使用表结构,格式一致

②使用方便:SQL语言通用,可用于复杂查询

③复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询

缺点:

①读写性能比较差,尤其是海量数据的高效率读写

②固定的表结构,灵活度稍欠

③高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈

2.非关系型数据库-NoSQL

存储方式:不以关系模型为依据,不需要固定的表格式

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点:

①格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型

②速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘

③高扩展性

④成本低:nosql数据库部署简单,基本都是开源软件

⑤高并发读写

缺点

①不提供sql支持,学习和使用成本较高

②无事务处理

③数据结构相对复杂,复杂查询方面稍欠

④好多数据写在内存中

引申: redis 持久化方式

以键值存储数据,数据保存在内存中,但会定期将数据写入磁盘(持久化方式)

四、MySQL

1.日志

数据库日志文件用于备份、恢复、故障位置定位、分析是最核心的部分

MySQL每写一条数据就会同步到日志中

2.引擎

myisam和innodb

myisam:快速读取,不支持事务

innodb:更注重写,支持事务

3.MySQL数据库管理

设置数据库密码

mysqladmin -u root -p password "123123"

更改数据库密码

可以使用上面命令更改密码

mysql -uroot -p123123 进入数据库

use mysql;                    进入mysql库

update user set authentication_string=password('123456') where user = 'root';

更改密码

 

更改完退出数据库,重启数据库,systemctl restart mysql

进入数据库命令数据库命令

show databases;查看数据库里的库

 

进入库

use English;

show tables;

查看表

show tables in English

 

显示数据表的结构

desc a;( describe a; )

 

Field:字段名称

type:数据类型

Null :是否允许为空

Key :主键

Type:数据类型

Null :是否允许为空key :主键

Default :默认值

Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)比如我的种子是1,增量/步长是2,那就是1357……

4.常用数据类型

常用的数据类型:

int:整型                                           #用于定义整数类型的数据

float:单精度浮点4字节32位           #准确表示到小数点后六位        

double:双精度浮点8字节64位       #float的双倍

char:固定长度的字符类型                #用于定义字符类型数据。

varchar:可变长度的字符类型           #设置上限;比如varchar(11)字符上限是11个

text:文本

image:图片

decimal(5,2):5个有效长度数字,小数点后面有2位             #指定长度数组

Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错

截取:四舍五入

截断:不四舍五入

主键是唯一的,但主键可以由多个字段构成

5.MySQL数据文件

MySQL数据库的数据文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为“.frm”、“.MYD”和“.MYI”。

MYD”文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。

“.MYI”文件也是专属于 MyISAM 存储引擎的,主要存放 MyISAM 表的索引相关信息。对于 MyISAM 存储来说,可以被 cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM 表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。

MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。 每个表都有且仅有这样三个文件做为 MyISAM 存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。

另外还有“.ibd”和 ibdata 文件,这两种文件都是用来存放 Innodb 数据的,之所以有两种文件来存放 Innodb 的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储 方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和 MyISAM 数据相同的位置。如果选用共享存储表空间来存放数据,则会使用 ibdata  文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。

五、数据库增、删、改、查

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

SQL语言分类:

DDL:数据定义语言,用于创建数据库对象,如库、表、索引等

DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据

DQL:数据查询语言,用于从数据表中查找符合条件的数据记录

DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)

1.DDL

①增

创建数据库

create database 数据库名;

创建新表

create table b (id int not null,name char(10) not null,score decimal(5,2),passwd varchar(10) default’’,primary key(id));

#not null   不允许为空值

#default''  默认值为空

primary key :主键一般选择没有重复并且不为空值的字段

像id这种不能重复的,可以使用自动增长:(id int(4) primaey key auto_increment)

②删

删除指定的数据库

drop database 数据库名;

drop database number;

删除表

drop table 表名;

drop table b;

2.DML

管理表中的数据记录  ---- 数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据

给表添加数据

insert into b (id,name,score,passwd) values(1,’zhangsan’,99,password(‘123456’));

insert into b values(2,’lisi’,98,654321);

修改或者更新数据表中的数据记录

update b set name=’wangxiaoer’,passwd=’’ where name=’zhangsan’;

在表中删除指定的数据记录

delete from b where id=2;

3.DQL 

查询数据记录

select * from b;

 

select id,name from b where id=3;

以列表方式竖向显示

select name from b\G;

查询前两行

查询第二行到后面三行

修改、更新数据表中的数据记录

update b set passwd=password(‘’) where name=’lisi’;

update b set name=’wangdazhi,passwd=’’ where id=’3’;

4.DCL

修改表名和表结构

修改

alter table b rename c;

alter table c add address varchar(50) default’地址不详’;

alter table c change passwd uer_passwd varchar(50);

alter table c drop user_passwd;

#扩展

use d;

create table if not exists info (

id int(4) zerofill primary key auto_increment,     #指定主键的第二种方式

name varchar(10) not null,

cardid int(18) not null unique key,

hobby varchar(50));

#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建

#int(4) zerofill:表示若数值不满4位数,则前面用"0"填充,例0001

#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次

#unique key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键

#not null:表示此字段不允许为NULL

5.数据表高级操作

克隆表

create table d like c;                    #复制格式,通过LIKE方法

复制c表的内容到d表;

insert into d select * from c;

克隆表,将数据表的数据记录生成到新的表中

create table test (select * from c);#复制c表的数据到test表中

 清空表,删除表内的所有数据

 ①delete from c

#DELETE清空表后,返回的结果内有删除的记录条目;

DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。

②truncate table d

#TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立。

因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后,ID会从1开始重新记录

6.删除类型小结

drop table table_name

①属于DDL

②不可回滚

③不可带where

④表内容和结构删除

⑤删除速度快

truncate table table_name

①属于DDL

②不可回滚

③不可带where

④表内容删除

⑤删除速度快

delete from table_name

①属于DML

②可回滚(可恢复)

③可带where

④表结构在,表内容要看where执行的情况

⑤删除速度慢,需要逐行删除

总结:

不再需要一张表的时候,用drop

想删除部分数据行时候,用delete, 并且带上where子句

保留表而删除所有数据的时候用truncate

速度

drop> truncate > delete

安全性

delete 最好

sql 写入——》数据表中—》先把数据保存在内存中—》写入到磁盘

insert into info ——》info这张表,会先复制一份表数据到内存里面,给我们进行修改

---》敲完回车之后,确定提交了,才会写入数据表中—》再保存在磁盘里面

create table test01—》只会保存在内存中,在数据库退出连接之前的所有操作,都是在内存中进行的,不会保存在磁盘里面,退出连接后,临时表会释放掉

六、数据库用户管理

1.新建用户

create user ‘用户名’@‘来源地址’ [identified by [password] ‘密码’];

'用户名':指定将创建的用户名.

'来源地址':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录,可用通配符%

'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;

若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文';

若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)

create user ‘wangxiaoer’@’%’ identified by ‘123456’;

查看用户信息

创建后的用户保存在mysql数据库的user表里

use mysql;

select user,authentication_string,host from user;

删除用户

drop user ‘b’@’%’;

修改用户密码

set password for 'wangxiaoer'@'%' = password('abc123');

使用SQL语句修改密码

update mysql.user set authentication_string = password(‘abc123’) where user=’root’;

flush privileges;

exit;

mysql -uroot -pabc123;

2.数据库用户授权

授予权限

grant提权

grant 权限列表 on 数据库名.表名 to ‘用户名’@’来源地址’ [identified by ‘密码’];

#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select, insert,

update”。使用"all"表示所有权限,可授权执行任何操作。

#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符"*"。

例如,使用“kgc.*"表示授权操作的对象为school数据库中的所有表。

#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.xyw.com"、“192.168.80.%”等。

# identified by:用于设置用户连接数据库时所使用的密码字符串。

在新建用户时,若省略“identified by”部分,则用户的密码将为空。

#允许用户zhangsan在本地查询school数据库中所有表的数据记录,

但禁止查询其他数据库中的表的记录。

grant select on school.* to 'zhangsan'@'localhost' identified by 'abc123';

#允许用户lisi在所有终端远程连接mysql,并拥有所有权限。

grant all [privileges] on *.* to 'lisi'@'%' identified by '123456';

grant all privileges on abc.* to 'lisi'@'192.168.10.2' identified by 'abc123';

授权用户权限是all privilege。这个all privilege都有哪些权限?all privilege权限如下:

insert(插入数据)

select (查询数据)

update (更新表的数据)

delete(删除表中数据)

create (创建库,表)

drop(删除库,表)

refernces

index(建立索引)

alter(更改表属性)

create temp orary tableslock tables (锁表)

execute

create view (创建视图)

show view(显示视图)

create routine(创建存储过程)

alter routine(修改存储过程)

event(事件)

trigger on(创建触发器)

flush privileges;    #刷新权限

quit

mysql -u zhangsan -pabc123

use xyw;

show tables; .

select * from yyy;

查看权限

root 用户

SHOW GRANTS FOR 用户名@来源地址;

SHOW GRANTS FOR 'lisi'@'%';

撤销权限

revoke all on *.* from ‘wangxiaoer’@’%’;

show grants for ‘wangxiaoer’@’%’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值