MySQL学习经历

壹 . MySQL入门

一 . 数据库的五个基本单位

1.数据库服务器

数据库服务器:是指用来运行数据库服务的一台电脑。在中小型企业通常为一台。在数据存储量计算量很大的时候可以存在多台。多台数据库服务器共同来存储或计算。由于数据安全非常重要,我们经常会对数据库服务器里面的数据进经备份。

2.数据库

数据库:一个数据库服务器里面有可以有多个数据库。主要用来分类使用。我们可以建立交通信息数据库、游戏数据库、酒店开房数据库… … 主要用来将各个不同用途的数据,按照业务进行大块的划分。

3.数据表

数据表:例如在游戏数据库中。根据这一款游戏又分为了不同的数据表。专门用来区分游戏不同的数据。例如:用户数据(用户、密码);人物数据;所有装备和装备信息;用户的充值信息;药品、魔力药水信息… …等

4数据字段

数据字段:也叫数据列。就是我们日常所见表格里面的列。在表格中,我们会将一张用户表分成多个列。如下(表一)所示:用户编号、用户名、性别、年龄是字段。在真正的数据库中数据字段需要换成英文需要写成:id、username、sex、年龄。

5.数据行

数据行:真正的数据存在每一个表的行里面。字段(列)划分出来了一个表应该按照什么样的格式存数据。而行,是真正的数据。每一行需要遵循数据字段(列)的规范和要求进行存入数据。

貮 . MySQL 连接数据库

安装后,可以在开始菜单的列表中找到MySQL Command
Line 点击操作的命令行终端操作。效果如图:

在这里插入图片描述

如果加入到了windows的环境变量中,可以在命令行下直接操作。
在命令行下,通过以下命可以连接到数据库服务器:
mysql -h localhost -u root -p
上面的命令中: mysql 表示 mysql数据库启动工具。

参数说明
-h表示数据库连接地址,连接本机可不填
-u表示要登录的用户名
-p表示要登录的密码

如果登录成功如下所示:

mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.25 MySQL Community Server (GPL)
Copyright © 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
上面的中文意思翻译过来是说,欢迎使用MySQL的命令行操作工具。每一个命令结束可以输入\g 或者 ;
mysql当前是第 7次连接。
当前数据库的版本是5.6.25社区支持版。遵循GPL协议。
版权所有:2000至 2015。归Oracle及其子机构拥有所有权。
如果需要帮助的话,通过 ‘help;’ 或者 ‘\h’ 命令来显示帮助内容,通过 ‘\c’ 命令来清除命令行历史。
mysql>
mysql > 表示等待输入指令。

注:
在登陆成功后有这么一句提示,可能大家不太理解:
Your MySQL connection id is 7
表示第7次连接登陆,每登陆一次这个id为加1。下一次显示的会是第8次。

叁 . Mysql数据库操作

1 . 创建数据库

类别详细解释
基本语法create database 数据库名;
示例create database php ;

创建一个数据库,数据库的名字为php , 示例:

mysql > creale database php

query ok ,1 row affected (0.00 sec)

“Query OK” 表示上面的命令执行成功,所有的 DDL 和 DML(不包
括 SELECT)操作执行成功后都显示“Query OK”,这里理解为执行成功就可以了;“1 row affected” 表示操作只影响了数据库中一行的记录,“0.00 sec”则记录了操作执行的时间。

1.2 . Linux系统中部署数据库: mysql

https://dev.mysql.com/downloads/mysql/

准备Linux环境: vmware虚拟软件 — 加载虚拟主机 — 启动
部署数据库服务: mariadb — yum install -y mariadb(操作数据库命令) mariadb-server
启动数据库服务: systemctl start mariadb

方式一: 连接数据库(命令行)
虚拟主机环境 — mysql -uroot

2 . 查看数据库

基本语法 : show databases;

示例说明 : 显示当前服务器的所有数据库

show 是指显示
databases 是数据库的复数形式 , 指全部的数据库

示例:
在这里插入图片描述

3. 选中数据库

基本语法 : use 库名

示例: use php;
//use 是指使用
在这里插入图片描述

4. 查看数据库中的表

基本语法 : show tables;

使用use 进入到某个数据库后可以使用show tables

示例,查看当前数据库的表
在这里插入图片描述

5. 删除数据库

基本语法 : drop database 库名

示例:drop database php;

示例说明 删除一个数库,数据库的名字为php

注意:drop 是汉语可以翻译为指掉下来,不要了的意思

database 是指库名 是指要删掉的库的名称



mysql> DROP DATABASE  PHP;

 Query OK, 0 rows affected (0.01 sec)

肆 . MySQL 数据表操作

1. 创建表

基本语法 : create table 表名

示例 : create table mm (username varchar(20),password varchar(32));

例说明 创建一个表名叫user的表,第一个字段为username、表的字段类型为varchar长度为32个长度。第二个字段为password,类型也为varchar,长度也为32个长度。

注释:
int , 代表整型 . float 代表, 浮点, char 和 varchar 代表字符串

CREATE TABLE emp( 

 ename varchar(10), 

 hiredate date, 

 sal float(10,2), 

 deptno int(2) 

 );



在这里插入图片描述

2. 查看表字段结构信息

基本语法 desc 表名;

示例 desc emp

示例说明 查看emp表的表结构

DESC emp;

在这里插入图片描述

3 . 查看表创建语句

类别 详细解示

基本语法 SHOW CREATE TABLE表名 \G;

示例 SHOW CREATE TABLE emp \G;

示例说明 查看表emp的创建语句

在这里插入图片描述

4. 删除表

基本语法 drop table 表名

示例 drop table emp;

示例说明 删除表emp

mysql> DROP TABLE emp;

Query OK, 0 rows affected (0.34 sec)

注:删除表。表和数据均会丢失,请勿必删除重要表之前备份数据。

在这里插入图片描述

5.指定引擎和字符集

指定表默认字符集:

DEFAULT CHARSET=utf8



效果如下:

CREATE TABLE emp ( 

    
useraname varchar(10) DEFAULT NULL, 

    
password date DEFAULT NULL, 

 )ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

伍 . MySQL数据字段操作

1.查看表结构

命令 语句 : mysql> desc user;

图例:
在这里插入图片描述

2.修改表的字段类型modify

基本语法 alter table 表名 modify 字段名 varchar(20);
示例 alter table user modify username varchar(20);
示例说明 将user表的username的类型改为varchar(20)
我们执行一下,看看结果:

mysql> alter table user modify username varchar(20);
Query OK, 0 rows affected (0.48 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc user;

图例:
在这里插入图片描述

3.增加表字段

基本语法 alter table 表名 add column 字段名 类型;
示例 alter table user add column age int(3);
示例说明 添加一个字段为age,类型为整型长度为3

mysql> alter table emp add column age int(3);
Query OK, 0 rows affected (0.40 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc user;

图例:

在这里插入图片描述

3. 增加字段时控制字段顺序
我们刚刚学了增加字段。如果你仔细实验发现每次都是增加在最后面,如何在第一个增加或者在指字字段之后增加呢?
基本语法 ALTER TABLE 表名 ADD 字段名 字段类型 AFTER 字段名;
示例 ALTER TABLE user ADD email VARCHAR(60) AFTER createip;
示例说明 user表中,在uid后增加一个字段为fff,类型为varchar,长度为60

ALTERTABLE user ADD fff VARCHAR(60) AFTER uid;
Query OK, 0 rows affected (0.40 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc user;

图例:

在这里插入图片描述

4.删除表字段

     基本语法        alter table 表名 drop column 字段名;
     示例         alter table user drop column age;
     示例说明        在user表中删除字段age
     mysql> alter table user drop column age;

Query OK, 0 rows affected (0.27 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc user;

图例:

在这里插入图片描述

5. 表字段改名

基本语法 alter table 表名 change 字段原名 字段新名 字段类型;
示例 alter table user change email em varchar(60);
示例说明 在user表中将字段中的fff字段名字为em
详细示例:

mysql> alter table user change email em varchar(60);
Query OK, 0 rows affected (0.38 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc user;

在这里插入图片描述

6.修改表字段排列顺序

     在前的字段增加和修改语句(add/change/modify)中,最后都可以加一个可选项 first|after。
     增加表字段时我们已经学过了如何调整顺序。我们现在在来看看另外的change或modify如何来调整顺序。

我们用first做个小实验。

使用modify调整顺序
mysql> alter table user modify em varchar(60) first;
Query OK, 0 rows affected (0.41 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc user;

在这里插入图片描述

7. 修改表名

类别 详细解示
基本语法 alter table 旧表名 rename 新的表名;
示例 alter table user rename new;
示例说明 将user表名改为new
mysql> alter table user rename new;
Query OK, 0 rows affected (0.35 sec)

mysql> desc new_user;

在这里插入图片描述

陆 . Mysql数据类型

MySQL中存的是数据。只要是数据,我们就会规定数据的类型。在表的字段中规定了使用的是某个数据类型。那么,在插入的数据中就要使用对应的数据类型。并且,遵守数据类型的长度要求。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

柒 . MySQL字符集

在这里插入图片描述

捌 . MySQL索引

说明 : 索引用于快速找出在某个列中有一特定值的行.

1.MySQL的索引类型

普通索引
基本语法 alter table 表 add index(字段)
示例 ALTER TABLE new ADD INDEX(username);
示例解释 为money表的username字段增加索引
在这里插入图片描述

唯一索引
类型 详细说明
基本语法 alter table 表 add UNIQUE(字段)
示例 ALTER TABLE new ADD UNIQUE(em);
示例解释 为money表的email字段增加唯一索引
在这里插入图片描述

主键索引
类型 详细说明
基本语法 alter table 表 add PRIMARY KEY(字段)
示例 ALTER TABLE new ADD PRIMARY KEY(uid);
示例解释 为money表的id字段增加主键索引
创建表时也可以声明索引
创建表时可在创建表语句后加上对应的类型即可声明索引:

在这里插入图片描述

玖 . 增删改查值插入记录

插入基本语法一

基本语法 insert into 表 values(值1,值2,值n);
示例 INSERT INTO user values(2,‘php中文网’,‘男’)
示例说明 向user表中插入值id为2,姓名为李文凯,性别为男

插入基本语法二

基本语法 insert into 表(字段1,字段2,字段n) values(值1,值2,值n);
示例 INSERT INTO user(id,username,sex) values(213,‘小沈阳’,1);
示例说明 向user表中插入id为213,username为小沈阳,性别为1

1.插入记录有两种个基本语法
说明:
基本语法1和基本语法2的区别是:
基本语法1的插入语句,表中有多少个字段就必须要插入多少个值。一个不能多,一个也不能少。若有默认值,不想传,可以写上null。
基本语法2中,除非有必填字段必须要写入值外。如果有默认值的不想写可以忽略不写。mysql会自动补主默认值。
基本语法2中,以user(id,username,sex)字段顺序为值的顺序。

按照基本语法二写上表中的插入语句:
INSERT INTO user(username,sex) values(‘oldboy’,10);

基本语法变形:一次插入多条记录
INSERT INTO user(username,password,sex)
values(‘黄晓明’, ‘abcdef’, 1),
( ‘angelababy’, ‘bcdeef’, 0),
( ‘陈赫’, ‘123456’, 1),
(‘王宝强’, ‘987654’, 1);

拾 . MySQL多表联合查询

user表创建语句:

CREATE TABLE IF NOT EXISTS user (
uid int(11) NOT NULL,
username varchar(30) NOT NULL,
password char(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在这里插入图片描述

CREATE TABLE IF NOT EXISTS order_goods (
oid int(11) NOT NULL,
uid int(11) NOT NULL,
name varchar(50) NOT NULL,
buytime int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在这里插入图片描述
user表数据:
INSERT INTO user(uid,username,password) values(‘1’,‘jintian’,‘123456’);
INSERT INTO user(uid,username,password) values(‘2’,‘zhangsha’,‘1234f56’);
INSERT INTO user(uid,username,password) values(‘3’,‘wangwu’,‘1234fs56’);
INSERT INTO user(uid,username,password) values(‘4’,‘lisi’,‘123s456’);
INSERT INTO user(uid,username,password) values(‘5’,‘xiaotian’,‘123d456’);
INSERT INTO user(uid,username,password) values(‘6’,‘wangfei’,‘123f456’);
INSERT INTO user(uid,username,password) values(‘7’,‘oldboy’,‘123w456’);
INSERT INTO user(uid,username,password) values(‘8’,‘oldboyww’,‘123w45ee6’);

在这里插入图片描述

rder_goods数据如下:
INSERT INTO order_goods(oid,uid,name,buytime) values(‘1’,‘7’,‘opper’,‘12345622’);
INSERT INTO order_goods(oid,uid,name,buytime) values(‘2’,‘2’,‘iphone’,‘1234356’);
INSERT INTO order_goods(oid,uid,name,buytime) values(‘3’,‘4’,‘xieli’,‘12342s56’);
INSERT INTO order_goods(oid,uid,name,buytime) values(‘4’,‘3’,‘lisi’,‘12322456’);
INSERT INTO order_goods(oid,uid,name,buytime) values(‘5’,‘5’,‘juzi’,‘12344456’);
INSERT INTO order_goods(oid,uid,name,buytime) values(‘6’,‘6’,‘tianmiju’,‘12322456’);
INSERT INTO order_goods(oid,uid,name,buytime) values(‘7’,‘1’,‘xiangjiao’,‘12311456’);

在这里插入图片描述

注意:在上表order_goods表中uid是指user表中的uid字段。上表中oid为1的数据行,uid为7的用户。为user表中uid为7的用户:oldboy。该用户购买了商品为xiangjiao。购买时间buytime为一个unix时间戳。

mysql>
select u.uid ,u.username as username,o.oid,o.uid,o.name as shopname from user u,order_goods o where u.uid = o.uid;

在这里插入图片描述

拾壹 . PHP操作MySQL数据库

在正式开始学习前,我们需要开启mysqli扩展,使用phpinof()你可以看到如下展示就说明开启成功:

在这里插入图片描述

若没有看到mysqli扩展在windows服务器下,打开php.ini文件,将php_mysqli.dll打开即可。

注意:

     从PHP7开始默认不再支持mysql扩展,即不再支持mysql_*系列函数。请使用mysqli连接数据库。

     mysqli即支持php5也支持php7。

创建表结构:
CREATE TABLE IF NOT EXISTS users (
id INT(10) NOT NULL,
username varchar(30),
password varchar(30),
createtime date not null,
createip binary(16)
);

拾贰 . PHP操作mysql数据库

在正式开始学习前,我们需要开启mysqli扩展,使用phpinof()你可以看到如下展示就说明开启成功:

在这里插入图片描述

创建表结构:
CREATE TABLE IF NOT EXISTS users (
id INT(10) NULL,
username varchar(30),
password varchar(200),
createtime varchar(200) not null,
createip binary(16)
);

<html>
<head> <meta charset="UTF-8">
</head>
<body>
<form action="connect.php" method="post">
    用户名:<input type="text" name="username"><br />
    密码:<input type="password" name="password"><br />
    重复密码:<input type="password" name="repassword"><br />
    <input type="submit" value="提交">
</form>
</body>
</html>
<?php

if (trim($_POST['password']) != trim($_POST['repassword'])) {

    exit('两次密码不一致,请返回上一页');

}

$username = trim($_POST['username']);

$password = md5(trim($_POST['password']));

$time = time();

$ip = $_SERVER['REMOTE_ADDR'];

$conn = mysqli_connect('localhost', 'root', 'root');

//如果有错误,存在错误号
if (mysqli_errno($conn)) {

    echo mysqli_error($conn);

    exit;
}

mysqli_select_db($conn, 'ddd');

mysqli_set_charset($conn, 'utf8');

$sql = "insert into users(username,password,createtime,createip) values('" . $username . "','" . $password . "','" . $time . "','" . $ip . "');";

$result = mysqli_query($conn, $sql);

if ($result) {
    echo '成功';
} else {
    echo '失败';

}

echo '当前用户插入的ID为' . mysqli_insert_id($conn);

mysqli_close($conn);

?>

在这里插入图片描述

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页