mysql> create table weapons (id int auto_increment, name varchar(20) not null, demage int not null, width int not null, distance int not null, primary key (id));
Query OK, 0 rows affected (0.02 sec)
看一眼结构:
mysql> describe weapons;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| demage | int(11) | NO | | NULL | |
| width | int(11) | NO | | NULL | |
| distance | int(11) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
从零开始的MYSQL(之一) — 增改删查
序言
最近工作中用到了mysql,作为一个兼职后端,发现自己居然还不会用大名鼎鼎的mysql!当然就要恶补了!所以,在下就以一个小白,来一步一步记录下学习笔记。与各位同样的小白共勉!还望大神轻喷,有错误也希望多多指教!谢谢!
Mysql是什么
讲人话来说,mysql是一种关系型数据库。就算你是绝对的外行,你也知道数据库是存数据的。
对于mysql来说,数据以表来组织,以行来区分每条数据,以列来分类数据的类型。
和excel表格类似。
表、行、列是最重要的概念。
当然为什么叫关系型数据库,是因为有主键和外键的存在。先不用在意这些是什么。其他概念需要的话将在后面提到。
安装
警告:本章内容window用户请自行跳过。可移步其他教程。
之后设置一下mysql root的密码,就可以进入mysql了。
进入mysql命令:
之后会让你验证root密码。输入你设置的root密码,就可以进入mysql环境了。
进入之后,命令行显示如下:
此时就可以输入sql语句来操作mysql数据库了。
使用的几点注意
;
结尾。mysql检测到分号才会执行命令。不然会进入多行模式。退出多行命令的方式是,输入分号并回车,会执行之前输入的多行命令。输入\c
,会终止输入,并不运行命令。drop
和delete
命令。不然请自行阅读《MySql —— 从删库到跑路》创建 create
安装成功之后,那我们就来做个小例子吧。
我们需要建一个武器表,来存储我们的武器。每个武器都有如下字段:
现在我们来一步一步构建我们的”武器库“
1、在进入mysql中之后,我们先看一下已经存在的数据库 show
我的输出如上。是一些安装mysql后自动生成的数据库。我们不需要管它们。
2、我们需要创建一个游戏(game)数据库,供我们玩耍 create database
3、选择game数据库 use
4、创建一张武器(weapons)表,供我们存放各种武器 create table
5、检查下当前数据库有哪些表 show tables
6、检查一下我们的weapons表结构 describe
好,现在我们已经创建了一个非常简单的数据表了。然后我们就可以往武器库中添加武器了!
对数据的增、改、删、查
对数据的增改删查是数据库中最重要的操作,也是最频繁的操作。
现在我们开始添加武器!
查 select
先来查一下表中有没有武器:
现在并没有数据。
轻微讲解语句含义:
其实sql语句含义很明确,稍微懂几个英语单词,就可以翻译:
选择 * (内容,)从 weapons (表中)
增 insert
好,我们现在比如要创造一件武器:铁剑(iron_sword)。我们有如下设定:
可以用以下命令插入表:
(轻微讲解语句含义:
插入 到 weapons(表中) (啥啥字段,啥啥字段...) 值为 (啥啥字段的值,啥啥字段的值...)
)现在再查一次表试试?
我们就看到我们的铁剑了。
改 update 和 where
那么有一天,我们决定更改铁剑的数值,比如要把demage进行buff,增加到15。那么怎么办呢?
(轻微讲解语句含义:
更新 weapons(表) 设置 demage等于15 更新哪个呢 (字段)name为15(的那些数据)
。可以此类推强化记忆。下面的就不再搞了。。。)再检查一次看看?
知识点:我们这次用到了
where
语句。where语句可以指定具有某种特征的行来执行操作。比如上面我使用了
where name='iron_sword'
来指定,只有name为”iron_sword“的项才执行update
语句。所以,无论此时你weapons表中有多少项,只要
name='iron_sword'
只有一项,你修改就只有这一项,不会影响其他。所以我们通常update
的时候,都会用唯一标识符id
来找到目标。where id=1
(我们此例子没有建id列,但一般生产中用到的表都铁定有一列id的。)删 delete
删掉一条语句,也很简单:
表中此时已经没有”iron_sword“项了。大家可以自行查一下。
weapons表的升级版
因为之前的表太过简单,没有主键。现在我们删掉weapons表重新建。
删除表可以用
drop
命令:(警告:drop命令很危险!若一不小心删了公司中不该删的数据,可能使你面临被辞退甚至被起诉的危险!新手请勿在生产服务器中使用drop!)新建表:
看一眼结构:
我们看到多了很多内容。该语句中新内容是:
插数据还是差不多,用
insert
语句:这次我们插入铁枪的数据:
接着,再插入一条大枪的数据:
看一下:
我们插入大枪时,没有插入id列。但mysql自动生成了id为2。这就是我们在创建表的时候,id后面加了
auto_increment
的作用。意思是,该列增加数据时,自动按顺序往后自增一并添加。因此以后再增加数据就不需要再指定id了。