linux个人心得22 (mysql)

SQL 分类

通常把sql分为三类:

  • DDL (Data Definition Language): 数据定义语言,如 CREATE、DROP、ALTER、TRUNCATE
  • DML (Data Manipulation Language): 数据操作语言,如 INSERT、UPDATE、DELETE、CALL
    • 细分还可以分出一类 DQL (Data Query Language): 数据查询语言,如 SELECT
  • DCL (Data Contral Language): 数据查询语言,如 GRANT、REVOKE
  • 写在前面:mysql数据库没有像linux里面那样严格的大小写敏感,但是自己创建的内容必须遵循大小写,我们可以理解为一个新的语言
  • 常用命令

创建数据库

  • CREATE DATABASE test_DB;(分号意味着结尾,没有分号代表换行)

创建表

  • USE test_DB(这个不用分号,指直接转到某某库)
  • CREATE TABLE player (
    id INT,
    name VARCHAR(100),
    level INT,
    exp INT,
    gold DECIMAL(10, 2)
    );
  • 这里我做了一个游戏里面的玩家表格,分别对应的是游戏id、游戏名、等级、经验、金币系统,这里可以看见我们在后面有不同的数据类型,分别为int(整数),varchar(100)[字符最大为100] decimal(10,2)[总长度10位数,保留两位小数,保留的两位小数同样包含在10位数里,所以我们可以得到最大值为99999999.99];
  • DESC player;
  • 显示表格目录,我们可以清楚看见输出,用navicat表示如下
  • ALTER TABLE player MODIFY COLUMN NAME VARCHAR(200);
  • 这个命令的意思是我们在实际中发现玩家100字符并不能满足我们的日常需求,为此我们将100字符上限改为200字符,ALTER TABLE player为指定"player"的表格;MODIFY COLUMN 修改字段属性,语法为 MODIFY COLUMN + 表头 + 数据类型。
  • ALTER TABLE player RENAME COLUMN NAME TO nick_name
  • 同样的,既然可以改数据类型就可以修改名字,这个命令的意思就是修改表头name的名字为nick_name (名字并不重要,起名鬼才23333)
  • 再用DESC player;可以看见修改完成!
  • ALTER TABLE player add COLUMN last_login DATETIME
  • 类似的还有添加,在 player 玩家表中,新增一列,列名 last_login,类型为日期时间 DATETIME,用于记录玩家最后一次登录时间。
  • ALTER TABLE player DROP COLUMN last_login;
  • 删除某行
  • DROP TABLE player;
  • 删除整个表格

数据的增删改查

  • INSERT INTO player (id, nick_name, level, exp, gold) VALUES (1, '张三', 1, 1, 1);
  • 现在我们要在表中写入一些特定的数据,我们可以指定全部,也可以指定单个进行修改,也可以同时插入多条数据用逗号隔开,格式为(1,'张三',1,1,1),(2,'李四',1,1,1),字符必须用分号隔开,注意中英文,于linux里相同,这里不做多赘述
  • SELECT * FROM player; 输出表格内容,上面是表头,注意区分
  • 我们再进行修改,让这个数据库更加合理,我们都知道,游戏开局玩家的等级通常都是1,而不是为空,所以,我们可以用如下命令来进行修改
  • ALTER TABLE player MODIFY LEVEL INT DEFAULT(1)
  • 其实和上面的那条修改数据命令是一样的,只是我们这修改条件为:level这一条的值为整数且默认值为一,毕竟等级没有小数不是~
  • 其实以上我们提到的是表格里面的约束,因为有约束才会显得更加合理,常见的约束有如下几种:默认值(如上)、非空(如果不插入内容会报错)、唯一约束(具有唯一性,不重复性)、主键约束(不能重复、不能空、作为索引)、外键约束(分父子表,子表内容里必须包含父表)
  • 这里我们可以看见李四是先创建,并没有更新level,我们可以用如下指令来进行更新
  • UPDATE player SET LEVEL = 1 WHERE nick_NAME = '李四';
  • 更新表格里的索引到李四行的level改为1
  • 但是我们看见还有2人的exp和gold为0,我们刚开服初始化所以玩家数据,可以用到这个指令
  • UPDATE player set exp=0, gold=0;(直接对全局修改,而非数据类型,所以全局都会受到影响)
  • DELETE FROM player WHERE gold=0;
  • 最后一个,就是我们的删了,其实这个有点类似我们英语语法里面的从句,当gold为0时直接删除,我们表格直接清空
相关推荐
阿里小阿希2 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神2 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员3 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java3 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿3 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴3 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU3 小时前
三大范式和E-R图
数据库
MaCa .BaKa3 小时前
47-心里健康咨询平台/心理咨询系统
java·spring boot·mysql·tomcat·maven·intellij-idea·个人开发
一江寒逸3 小时前
零基础从入门到精通MySQL(上篇):筑基篇——吃透核心概念与基础操作,打通SQL入门第一关
数据库·sql·mysql