数据库服务概念介绍
数据库: 主要用于对大量数据信息可以进行有效的分析处理
数据库服务器: 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代表有哪些主机可以与数据库建立连接
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。