mysql是建立在什么模型基础上的数据库,Mysql数据库基础了解及基本操作

1、数据库:database,存数据的仓库;高效的存储和处理数据的介质(介质主要有磁盘和内存)。

2、数据库分类:

<1>基于介质的不同进行分类:(1)关系型数据库(SQL): 大型:Oracle,DB2; 中型:SQL-SERVER,Mysql;小型:access等。

(2)非关系型数据库(NoSQL:Not Only SQL):memcached,mongodb,redis

<2>两者区别:(1)关系型:安全(保存磁盘基本不可能丢失),易理解,但较浪费空间(二维空间)

(2)非关系型:效率高,但不安全(断电丢失)

3、关系型数据库:是一种建立在关系模型(数学模型)上的数据库

4、关系模型:包括三个方面:(1)数据结构:数据存储的问题,二维表(有行与列)

(2)操作指令集合:所有SQL语句

(3)完整性约束:表内数据约束(字段与字段),表与表之间的约束(外键)

5、SQL操作主要分为三种:DDL,DML,DCL三种类型:

(1)DDL:Data Definition Language,数据定义语言,用来维护存储数据的结构(数据库,表),代表指令:create,drop,alter等。

(2)DML:Data Manipulation Language,数据操作语言,用来对数据进行操作(数据表中的内容),代表指令:insert,delete,update等:其中DML内部又单独进行了一个分类:DQL(Data Query Language:数据查询语言,如select)。

(3)DCL:Data Control Language,数据控制语言,主要是负责权限管理(用户),代表指令:grant,revoke等。

注:SQL是关系型数据库的操作指令,SQL是一种约束,但不强制(类似W3C):不同的数据库产品(如Oracle,mysql)可能内部会有一些细微的区别。

好了,说完了上面SQL后,再把目光真正转向MySQL数据库上来

1、首先,什么是MySQL数据库呢?MySQL数据库是一种c/s结构的软件(c/s结构即为客户端/服务端结构):若想访问服务器必须通过客户端来访问,其中服务器要一直运行,客户端需要使用时运行。

2、交互方式:

(1)客户单连接认证:连接服务器,认证身份:Mysql.exe-hPup。

mysql.exe -h(主机地址) -p(端口) -u(用户名) -p(用户密码)

253d1a4c93f61ad00d976787148aaacc.png

(2)客户端发送SQL指令

示例:show databases(查看所有数据库)

(3)服务器接受指令,进行处理SQL指令,再返回操作结果

(4)客户端接受结果显示出来

237da456d2e1367453cb9177264e4b31.png

(5)断开连接(为了释放资源,服务器并发限制)(简单来说,不能占着空间,其他用户也需要使用)

断开连接的三种操作:exit,quit,\q

3、基本操作:CRUD(增查改删)

4、将SQL的基本操作根据操作对象进行分类,可分为以下三类:

(1)库操作:对数据库的增删改查。

基本语法:

<1>Create database 数据库名字 [库选项];库选项:用来约束数据库,分为两个选项:

字符集设定:charset/character set 具体字符集(数据存储的编码格式) 常用字符集:GBK,UTF8。

校对集设定:collate 具体校对集(数据比较的规则)

e1002e521a07a7f4bb8fe3b39523098e.png

注:其中,数据库名字不能使用关键字(已经被使用的字符)或者保留字(将来可能会用到的)

a0731993b9f434c069af4e46d7848bd0.png

如果非要使用关键字和保留字,那么必须使用反引号(esc键下面的键再英文状态下的输出:`)

a5a359216d6c3f5ad664a809afe001ed.png

注:中文数据库是可以的,但是有前提条件:保证数据库能够识别(建议不用)

当创建数据库的SQL语句执行后,发生了什么?

1、在数据库系统中,增加了对应的数据库信息

2、会在保存数据的文件夹下:Data目录,创建一个对应的数据库名字的文件夹

(下图即为创建中文数据库的弊端,名字不一样,而且创建多个中文数据库时很难区分)

3ea264b63d226fb645d38f98eb094ba5.png

3、每个数据库下都有一个opt文件:保存了库选项

e03929e5ab156e2bb21c29510b57385a.png

<2>查看数据库:

Show databases;(查看所有数据库)

c353241c79697f3c86a043202a8e0d63.png

Show database like 'pattern';----pattern是匹配模式(查看指定部分的数据库:模糊查询)

%:表示匹配多个字符。

_:表示匹配单个字符。

72237497c581ead38ee08d46e79afa1e.png

——查看以information_开始的数据库,需要被转义

show databases like 'information_%';          ---相当于information%

show databases like 'information\_%';

Show create database 数据库名字;(查看数据库的创建句子)

1326cbad6857d69a2c6c05a725f81e54.png

<3>更新数据库(数据库名字不可修改;数据库的修改仅限库选项:字符集和校对集(校对集依赖字符集))

Alter database 数据库名字 [库选项];

Charset/character set [=] 字符集

Collate 校对集

a5761a3f228f3452b5603d15dcaaee55.png

<4>删除数据库(所有操作中最简单的)

drop database 数据库名字;

bbfdfa630932981b8620606e1cb07191.png

当删除数据库语句执行后,发生了什么?

1、在数据库内部看不到对应的数据库

41208672bde0838299ee4b4338ca6107.png

2、在对应的数据库存储的文件夹内:数据库名字对应的文件夹也被删除(级联删除:里面的数据表全部删除)

c6e8722eac9aa2b7f429f5b55a830989.png

注:删除数据库需谨慎!(应进行备份后进行删除操作)

(2)表操作(包含字段操作,因为表与字段关联是离不开的)

<1>新增数据表

Create table [if no exists] 表名(

字段名字 数据类型,

字段名字 数据类型     -- 最后一行不需要逗号

)[表选项];

if no exists:如果表名不存在,就创建对应名字的表,否则不执行创建代码(称为检查功能)

表选项:控制表的表现

字符集:charset/character set 具体字符集; --保证表中数据存储的字符集

校对集:collate 具体校对集;

存储引擎:engine 具体的存储引擎(innodb和myisam)

ae207e155eb99ebe402850c11993bac5.png

(注:任何一个表的设计都需要指定数据库)

方案一:显示指定表所属的数据库

Create table 数据库名.表名();-- 将当前数据表创建到指定数据库下

de80c5d0d21a6ccc0f222439a32ec23f.png

方案二:隐式的指定表所属数据库:先进入某个数据库环境,然后创建的表自动归属到这个进入的数据库。

use 数据库名;

26535db66be0e7143178fb56cd8f78af.png

当创建数据表的SQL指令执行后,到底发生了什么?

1、指定数据库下已经存在对应的表

2、在数据库对应的文件夹下,会产生对应表的结构文件(跟存储引擎有关系)

9320f7406d2c2a292fb0d288e94aa895.png

<2>查看数据表

Show tables;(查看所有数据表);

d0dfc3b198e0e2b13c47ef54ba337cfd.png

Show tables like 'pattern';(查看部分表:模糊匹配)

3811e348980b666a8937542ba796547e.png

Show create table 表名;(查看表的创建语句)

9dc602558666e6a78f29d50439816a1a.png

Desc/describe/show columns from 表名;(查看表结构:查看表中的字段信息)

ce34e3bcbfb00a4f38a587a3cc20722c.png

<3>更新(修改)数据表(表可以修改的有:表名和表选项)

rename table 原表名 to 新表名字

bc24063284c172c268a35fbfb53f846f.png

修改表选项:字符集,校对集和存储引擎

Alter table 表名 表选项 [=] 值;

79f369a0fe4d951b46a1c04bfdbe4657.png

修改字段:新增,修改,重名,删除

1、新增字段

Alter table 表名 add [column] 字段名 数据类型 [列属性] [位置];

位置:字段名可以存放在表中的任意位置

First:第一个位置

After:在某个字段之后;用法:after 字段名;默认的是最后一个字段之后

f60e2101f9c70f99668ed88b05b756dd.png

2、修改字段:修改通常是修改属性或者数据类型

Alter table 表名 modify 字段名 数据类型 [属性] [位置];

1a5df6598a6859a7d2f88d51781f7979.png

3、重命名字段

Alter table 表名 change 旧字段 新字段 数据类型 [属性] [位置];

50a414114ba8a3e1ac01243497dfe60f.png

4、删除字段

Alter table 表名 drop 字段名;

3bafa3fae096da44536ecf47ae29ea7d.png

(注:删除方面的操作都要注意备份,删除的数据表内的数据基本无法恢复)

<4>删除数据表

Drop table 表名1,表名2...;   --- 可以一次性删除多张表

c6ba8d810110db0df72e00a73b11188f.png

当删除数据表的指令执行之后,发生了什么?

1、在表空间中,没有了指定的表(表内数据也不存在了)

2、在数据库对应的文件夹下,表对应的文件(与存储引擎有关)也会被删除

30d15274371dfa82ba766caa1485faf7.png

(3)数据操作

<1>方案一:给全表字段插入数据,不需要指定字段列表;要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致;凡是非数值数据,都需要引号(建议是单引号)包裹。

Insert into 表名 values(值列表)[,(值列表)];   -- 可以一次性插入多条记录

485c9345843357a831375f6660a8b35e.png

方案二:给部分字段插入数据,需要选定字段列表;字段列表出现的顺序与字段的顺序无关,但是值列表的顺序必须与选定的字段顺序一致。

Insert into 表名(字段列表) values (值列表)[,(值列表)];

23c5508522e7352024a07bd7467009ef.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值