MySQL(一)

mac2022-06-30  103

数据库

数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

数据库分类

关系型数据库

关系型数据库和常见的表格比较相似,数据表与数据表之间是有很多复杂的关联关系的

大多数的关系型数据库都遵循SQL(结构化查询语言,Structured Query Language)

常见的关系型数据库有:MySQL,SQLserver

非关系型数据库

出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。

指的是分布式的、非关系型的、不保证遵循ACID(数据库事务正确执行的四个基本要素的缩写)原则的数据存储系统。

通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档。

常见的非关系型数据库有:Redis、MongoDB

MySQL数据库的安装与卸载

安装

个人推荐使用安装包安装的形式安装MySQL数据库。省时省力,但是希望你们别遇到像我一样的数据库编码问题(my.ini配置了没用)。如果你们也遇到了数据库编码问题的话,解压包形式的数据库应该能够解决你们的问题。

解压免安装版本(没有初始密码)配置环境变量:配置数据库绝对路径下的bin目录到环境变量中配置服务:启动管理员终端(win+x打开Windows PowerShell(管理员))输入命令:mysqld --install

卸载

如果是安装版的话会比较麻烦:

先按照正常软件一样卸载MySQL删除C:\Program Files\MySQL与C:\ProgramData\MySQL文件夹(ProgramData默认是隐藏的)将注册表中的关于MySQL的项全部删除

连接数据库

在cmd中使用mysql命令连接数据库,单纯使用mysql是以游客模式登陆,没有大部分功能。

mysql -u root -p免安装版初始没有密码,直接回车。

使用-h 指定远程MySQL ip地址,使用-P指定端口号(MySQL默认使用3306端口)

mysql -h 127.0.0.1 -P 2206 -u root -p

退出数据库使用 exit 或 quit

用户

使用 select user(); 来查看当前登陆用户

所有的用户信息都在 mysql 数据库的user数据表中,使用select * from mysql.user查看所有用户信息

创建用户

grant 权限 on 数据库.数据表 to 用户名@'主机名' identified by '密码'; # 如果账户不存在则创建该账户

撤销权限

revoke 权限 on 数据库.数据表 from 用户名@'主机名';

删除用户

drop user 用户名@'主机名';

修改密码

登陆状态下:

update mysql.user set password = password(新密码) where user != '';

cmd命令:

mysqladmin -u root -p旧密码 -h域名 password 新密码

数据库编码

修改数据库编码是我的一大痛处

这个可以去看看别人的数据库编码怎么修改,没有什么成功的经验,这几次都是运气修改掉了。气

数据库基本操作

查看已存在数据库

show databases;

创建数据库

create databases 数据库名 charset=编码; # 如果不设置数据库编码就使用默认编码

查看数据库的详细信息

show create database 数据库名;

选择数据库

use 数据库名;

查看数据库中的所有数据表

show tables;

创建数据表

create table 表名( 字段1 数据类型 约束 ... 字段n 数据类型 约束 )charset = 编码 engine = innoDB; # 一般引擎默认是innoDB

查看数据表详细信息

show create table 数据表名;

查看数据表结构

desc 数据表;

查看数据

select * from 表名; # * 代表显示所有字段信息 # 可以将 * 替换成字段,指定字段信息显示

插入数据

insert into 表名(字段1,...字段n) values(字段值1,...字段值n); insert into 表名 values(按照字段顺序填写);

更新数据

update 表名 set 字段 = 字段值 where 字段 = 字段值; # 如果没有where后的语句会修改整个表的数据

删除数据

delete from 表名 where 字段 = 字段值; # 如果没有where后的语句会删除整个表的数据

删除数据表

drop table 表名;

删除数据库(谨慎)

drop database 数据库名;

数据库表的修改

修改数据库编码

alter database 数据库名 charset=编码;

修改数据表名字

alter table 旧表名 rename 新表名;

修改数据表字段名

alter table 表名 change 旧字段 新字段 数据类型;

修改数据表字段数据类型

alter table 表名 modify 字段 新类型;

MySQL支持的数据类型

整型

tinyint 1字节 -127~127smallint 2字节 -32768~32767mediumit 3字节int 4字节 -2147483648~2147483647bigint 8字节

浮点型

float(M, D):4字节,3.4E–38~3.4E+38double(M, D):8字节,1.7E–308~1.7E+308decimal(M, D):所在字节M,D大值基础上+2,其实就是M值+2就是decimal字段所占字节数

(M, D) => M为位数,D为小数位,M要大于等于D float(255, 30):精度最低,最常用 double(255, 30):精度高,占位多 decimal(65, 30):字符串存,全精度

字符串型

char:定长,永远采用设置的长度存储数据 varchar:不定长,在设置的长度范围内,变长的存储数据

时间

year:yyyy(1901/2155) date:yyyy-MM-dd(1000-01-01/9999-12-31) time:HH:mm:ss datetime:yyyy-MM-dd HH:mm:ss(1000-01-01 00:00:00/9999-12-31 23:59:59) timestamp:yyyy-MM-dd HH:mm:ss(1970-01-01 00:00:00/2038-01-19)

枚举与集合

为某一个字段提供选项的 - 枚举只能单选(1个),集合可以多选(0-n个)

约束

primary key:主键,唯一标识,表都会拥有,不设置为默认找第一个 不空,唯一 字段,未标识则创建隐藏字段 foreign key:外键 unique:唯一性数据, 该条字段的值需要保证唯一,不能重复 auto_increment:自增,只能加给key的int类型字段,作为辅助修饰,一个表中只能设置一个自增字段 not null:设置字段不为空 - 针对一些字段 default:默认值 - 对有默认值意外的字段进行赋值时,有默认值的字段会被赋默认值 unsigned:无符号 - 存储的数字从0开始对整型使用 zerofill:0填充 - 存整数时数据长度小于取值范围长度,会在数字左方用0填充

转载于:https://www.cnblogs.com/Gredae/p/11580755.html

最新回复(0)