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时直接删除,我们表格直接清空
相关推荐
逻辑驱动的ken43 分钟前
Java高频面试考点18
java·开发语言·数据库·算法·面试·职场和发展·哈希算法
qq_392690661 小时前
Redis怎样应对Redis集群整体宕机带来的雪崩
jvm·数据库·python
快乐非自愿2 小时前
Redis--SDS字符串与集合的底层实现原理
数据库·redis·缓存
这儿有一堆花2 小时前
住宅代理(Residential Proxy)技术指南
开发语言·数据库·php
茉莉玫瑰花茶2 小时前
LangChain 核心组件 [ 2 ]
java·数据库·langchain
存在的五月雨3 小时前
Mysql 索引的一些
数据库·mysql
黄俊懿3 小时前
MySQL主从复制:从“异步“到“GTID“,数据同步的进化之路
数据库·sql·mysql·oracle·架构·dba·db
看海的四叔4 小时前
【SQL】SQL-管好你的字符串
大数据·数据库·hive·sql·数据分析·字符串
秋94 小时前
TiDB 数据库全链路实战指南:从下载部署到 Java 高并发调优
java·数据库·tidb
zhou周大哥4 小时前
银河麒麟安装mysql
数据库·mysql