数据库总结
来源:SegmentFault
时间:2023-01-23 09:52:38 334浏览 收藏
小伙伴们有没有觉得学习数据库很有意思?有意思就对了!今天就给大家带来《数据库总结》,以下内容将会涉及到MySQL,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!
数据库服务概念介绍
数据库: 主要用于对大量数据信息可以进行有效的分析处理
数据库服务器: MySQL Maridb
数据库: 存储数据分类 用户信息--用户信息库 商品信息---商品 交易信息---支付业务
数据表: 数据表信息
数据字段: 存储具体内容信息,存储信息规范
数据行: 真实每一条合法的数据信息
数据库服务环境安装部署
windows系统中部署数据库: https://dev.mysql.com/downloads/installer/
启动PHPstudy程序--->启动MySQL5.7.26
方式一: 命令行操作
命令行中切换到MySQL所在路径
C:Users\zh>d: # 切换到文件所在盘 D\>cd d:\use\phpstudy_pro\Extensions\MySQL5.7.26\bin>mysql.exe -uroot -proot # cd到具体路径后输入mysql.exe -uroot -proot mysql>
注意:也可以用其它两种方法进入命令行的路劲
1.本地文件夹进入想去的路径,然后上面鼠标左键选中,默认全选,然后输入cmd--->回车,就进去了 2.前面同上,在文件夹里面shift+右键有个“在此处打开命令窗口”选项,点它就进去了。
方式二: 连接数据库(图形界面操作)
安装连接数据库程序软件: Navicat 安装部署
实现远程连接数据库:
本地建立连接: localhost == 127.0.0.1
注意:方式二应该不常用,因此没有尝试去部署,具体操作步骤不熟。
Linux系统中部署数据库: https://dev.mysql.com/downloads/mysql/
[root@oldboy72~]#yum install -y mariadb(命令包) mariadb-server(程序包) #下载数据库 [root@oldboy72~]#systemctl start mariadb # 启动数据库
方式一: 连接数据库(命令行)
[root@oldboy72~]#mysql -uroot# 进入数据库命令 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 5.5.65-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> # 进入成功 [root@oldboy72]#mysqladmin -uroot password "密码" # 修改默认密码,不能修改密码?
方式二: 连接数据库(图形界面)
如何和虚拟主机数据路服务建立连接???
注意:Linux几乎不部署图形化界面吧?所以这里不深入研究。
数据库命令与操作
;:分号,数据库中命令结束语识别符,只有加分号系统才会识别你这条命令完成了。
创建数据库信息:
MariaDB [(none)]>create database php; # 创建了一个名为php的库 MariaDB [(none)]>show databases; # 查看拥有什么库 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | php | # 在这里 | test | +--------------------+ 5 rows in set (0.00 sec) MariaDB [(none)]>drop database php; # 删除指定库
注意:mysql安装完之后,登陆后发现只有两个数据库:show databases; |
---|
Database |
information_schema |
test |
,mysql> use mysql
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
访问被拒绝,原因就是在删除数据库时(rpm -e mysql*)没有删除干净,需要把/var/lib/mysql的目录全部删除干净,然后再重新安装即可。
库有了,我们要切换到库里面去
MariaDB [(none)]> use php; # use 选定指定库的名字 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [php]> # 进到了php库中
查看库里面有什么表
MariaDB [php]> show tables; +---------------+ | Tables_in_php | +---------------+ | xyb | # 有一个名为xyb的表单,这是之前创建好的 +---------------+ 1 row in set (0.00 sec)
如何创建表单?
语句格式: create table 表名 (字段名1 字段类型,字段名2 ....字段名n 字段类型n);
操作命令: create table xueyuan (name varchar(15),sex char(5),age int(5),xueli char(10),jingyan bool,xinzi float(10,2));
MariaDB [php]> create table test(name varchar(15),sex char(5),age int(5),xueli char(10),jingyan bool,xinzi float(10,2)); Query OK, 0 rows affected (0.00 sec) # 创建了一个名为 test 的表单。
整型
MySQL数据类型 | 所占字节 | 值范围 |
---|---|---|
tinyint | 1字节 | -128~127 |
smallint | 2字节 | -32768~32767 |
mediumint | 3字节 | -8388608~8388607 |
int | 4字节 | 范围-2147483648~2147483647 |
bigint | 8字节 | +-9.22*10的18次方 |
整型的长度不同,在实际使用过程也就不同。
浮点类型
MySQL数据类型 | 所占字节 | 值范围 |
---|---|---|
float(m, d) | 4字节 | 单精度浮点型,m总个数,d小数位 |
double(m, d) | 8字节 | 双精度浮点型,m总个数,d小数位 |
decimal(m, d) | decimal是存储为字符串的浮点数 |
字符类型
MySQL数据类型 | 所占字节 | 值范围 |
---|---|---|
char | 0-255字节 | 定长字符串 |
varchar | 0-255字节 | 变长字符串 |
tiniyblob | 0-255字节 | 不超过255个字符的二进制字符串 |
tinytext | 0-255字节 | 短文本字符串 |
blob | 0-65535字节 | 二进制形式的长文本数据 |
查看表单的具体信息
MariaDB [php]> desc test; 领域(字段) 类型(字段数据) 无效的(空) 钥匙 违约 额外的 +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(15) | YES | | NULL | | | sex | char(5) | YES | | NULL | | | age | int(5) | YES | | NULL | | | xueli | char(10) | YES | | NULL | | | jingyan | tinyint(1) | YES | | NULL | | | xinzi | float(10,2) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
查看表单内是否有内容:
语法格式:select * from 表单;
语法命令:select * from xyb;
修改数据库中表的名称:
语句格式: alter table 旧表名 rename 新的表名;
操作命令: alter table test rename test01;
**删除表信息
语句格式: drop table 表名;
操作命令: drop table oldboy;**
MariaDB [php]> drop table test; Query OK, 0 rows affected (0.00 sec) # 数据库中一般命令执行成功都显示这一条 查询正常
**表单的字段与字段数据都可以增、删、改、查,字段可以增加、插入、删除。
其命令格式前面三个几乎一样,后面要做什么操作,换单词而已。**
MariaDB [php]> desc test; # 创建了一个表单 领域(字段) 类型(字段数据) 无效的(空) 钥匙 违约 额外的 +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(15) | YES | | NULL | | | sex | char(5) | YES | | NULL | | | age | int(5) | YES | | NULL | | | xueli | char(10) | YES | | NULL | | | jingyan | tinyint(1) | YES | | NULL | | | xinzi | float(10,2) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
修改字段数据类型信息 语句格式: alter table 表名 modify 字段名 修改后的数据类型; 操作命令: alter table test modify sex varchar(10);增加表中字段信息: 语句格式: alter table 表名 add column 字段名 字段类型; 操作命令: alter table test add column oldboy date; · 增加表中字段信息: 可以指定控制字段添加的位置 语句格式: alter table 表名 add 字段名 bool after 在哪个字段后添加; 操作命令: alter table test add oldgirl bool after age; 增加表中字段信息: 将指定字段插入到第一列 语句格式: alter table 表名 add 字段 类型 first; 操作命令: alter table test add oldbaby char first; · 删除表中字段信息: 语句格式: alter table 表名 drop column 字段名称; 操作命令: alter table test drop column oldbaby; · 修改字段名称信息: 语句格式: alter table 表名 change 原字段名称 修改后字段名 字段类型; 操作命令: alter table test change xueli edu varchar(15); · 修改已有字段顺序: 语句格式: alter table 表名 modify 字段名 类型 first; --- 直接将指定字段移到第一列 alter table test modify 字段名 类型 after 字段名; --- 将字段移动到指定列之后
**数据库索引
索引概念介绍: 可以提升查找指定数据检索效率,类似于字典。
索引分类介绍: 普通索引、唯一索引(不能有字段信息重复)、主键索引(字段信息不能为空)。
索引查看、创建与删除:
查看表单索引:**
语法格式:show index from 表名 \G 语法命令:show index from xyb \G
索引创建: 普通、MUL。
语法格式: alter table 表 add index(字段); 操作命令: alter table xueyuan add index(name);
索引创建:唯一、 UNI。
语法格式: alter table 表 add UNIQUE(字段) 操作命令: alter table xueyuan add UNIQUE(xueli);
索引创建: 主键、PRI。
语法格式: alter table 表 add PRIMARY KEY(字段) 操作命令: alter table xueyuan add primary key(jingyan);
删除索引信息,此命令可删除普通、唯一索引,主键索引需要其它命令格式删除。
语法格式:drop index 索引名 on 表名 语法命令:drop index jingyan ON xyb
注意:此命令满满删除不掉唯一索引。
删除主键索引信息
语法格式:alter table 表单 drop primary key; 语法命令:alter table xyb drop primary key;
注意:此命令有时候删不掉?没弄明白啥情况。
按条件搜索表单内符合的数据信息:
语法格式: select 字段信息/* from 表单 where 查询字段条件 操作命令: select name,sex,age from xueyuan where age=23 and sex="女" or sex="男";
匹配条件符号信息 >、=、匹配条件逻辑符号 and or
取消重复信息:
语法格式: select distinct 字段 from 表名;
表单中添加数据信息:
示例1:
语法格式: insert into 表名 value(字段01数据,字段02数据,字段03数据,..,字段n数据); 操作命令: insert into xueyuan value("张三","男",23,"本科",0,9000);
示例2:
语法格式: insert into 表(字段01,字段02,字段03) value(字段数据01,字段数据02,字段数据03); 操作命令: insert into xueyuan(name,sex,jingyan) value("李四","女",1);
在MySQL安装过程中很容易忽略掉,字符集这个参数(源码安装参数-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci)。亦或者是MySQL最初搭建这不是自己,当初别人在安装时没有注意到这个问题。造成现在现在字符集与需求不一致。例如:现在字符集不是utf-8导致显示中文乱码,解决方法如下。
首先,以root登录MySQL,执行命令:show variables like 'character_set%'; 查看当前MySQL默认的字符集,如果有问题,先退出mysql。
编辑MySQL的配置文件my.cnf。默认该文件在/etc/my.cnf
修改内容为:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
[mysql]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
port = 3306
basedir = /usr/local/mysqldatadir = /dataserver_id = 1
character-set-server=utf8
socket = /var/lib/mysql/mysql.sock
保存退出,然后重启下mariadb,在进入mysql就好了,更改字符集之前创建的表单不生效。
数据库权限
查看数据库总共有有哪些权限:select * from mysql.userG;
查看mysql这个库里面的user表的权限
MariaDB [(none)]> select user,host from mysql.user; +------+-----------+ | user | host | +------+-----------+ | root | 127.0.0.1 | | root | ::1 | | | localhost | | root | localhost |# 这个权限代表root只能使用本地连接管理数据库 | | oldboy72 | | root | oldboy72 | +------+-----------+ # user代表这个数据库里有哪些用户可以操作、管理数据库。 # host代表有哪些主机可以与数据库建立连接
理论要掌握,实操不能落!以上关于《数据库总结》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
-
374 收藏
-
475 收藏
-
483 收藏
-
462 收藏
-
469 收藏
-
289 收藏
-
239 收藏
-
315 收藏
-
361 收藏
-
184 收藏
-
227 收藏
-
202 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习