MySQL常规操作

作者使用的数据库为是MySQL8, 图形化工具--SQLyog<获取pj版可留言>

1. DDL(Data Definition language)操作数据库--主要用于创建数据库、数据表

1.1 创建数据库、查询数据库

 # 创建数据库
CREATE DATABASE db1;

# 判断数据库是否存在, 不存在就创建
CREATE DATABASE IF NOT EXISTS db2;

# 创建数据库并指定字符集
CREATE DATABASE db3 DEFAULT CHARACTER SET utf8;

# 查询数据库
SHOW DATABASES ;
# 操作以后自行查询即可

1.2 查看某个数据库的定义信息

# 查看某个数据库的定义信息
SHOW CREATE DATABASE db3;
SHOW CREATE DATABASE db1;

1.3 修改数据库

# 修改数据库默认的字符集【将原先设置的utf8字符集改为gbk,当然开发中使用的utf8】
ALTER DATABASE db3 CHARACTER SET gbk;

注意1.4的操作在开发中,千万不要, 不要, 不要删库, 重要的事情说三遍

1.4 删除数据库

# 删除数据库
DROP DATABASE db2;

1.5 使用数据库

# 查看目前所在的是哪个数据库
SELECT DATABASE();

# 改变要使用的数据库
USE db1;

2. DDL操作表结构--创建表操作

2.1 创建数据表的格式

CREATE TABLE table_name(
    字段1 字段类型1,
    字段2 字段类型2,
    ...
);

# 常见字段类型可以自行查阅, 因为官方出品必属精品, 细节上个人绝对没有集众人之力做的好, 感谢

2.2 创建student表包含id,name,birthday等三个字段【这里我是在前面创建的db1数据库中操作, 当然你可以自行创建一个属于自己的】

# INT(整数) VARCHAR(字符串) DATE(日期)
CREATE TABLE student(
    id INT,
    NAME VARCHAR(32),
    birthday DATE
);

2.3 查看表

# 查看db1【db1可以换成任意数据库】中的数据库中的所有表
SHOW TABLES;

# 查看创建的表的结构
DESC student;

# 查看创建表的SQL语句
SHOW CREATE TABLE student;

2.4 快速创建一个表结构相同的表

# 创建new_student表, new_student表结构和student结构相同
CREATE TABLE new_student LIKE student;

2.5 删除表

# 删除新创建的new_student表
DROP TABLE new_student;

# 下面是另一种格式: 判断表是否存在, 如果存在则删除, 可以用已经删除的new_student表进行测试
DROP TABLE IF EXISTS new_student;
【SQLyog控制台输出的信息如下: 共 0 行受到影响, 1 个警告】

2.6 修改表结构: 增加、删除、修改

# 添加表列关键字: ALTER  ADD
# 在student表中添加学生的地址信息address
ALTER TABLE student ADD address VARCHAR(32);

# 修改列类型关键字:MODIFY 
# 将student表中的address列类型修改为int类型【这里是不合理的仅供测试使用】
ALTER TABLE student MODIFY address INT;

# 修改列名关键字: CHANGE
# 将address该字段修改为new_addr, 并且字段类型改为varchar
ALTER TABLE student CHANGE address new_addr VARCHAR(32);

# 删除列关键字: DROP
# 删除new_addr列
ALTER TABLE student DROP new_addr;

# 修改表名关键字: RENAME   TO
# 将student表名该为old_student
RENAME TABLE student TO old_student;

3. DML(Data Manipulation Language数据操纵语言)操作表中的数据【对表中的数据进行增删改操作】

3.1 插入数据

# 格式: INSERT  [INTO] 表名 [字段名] VALUES(字段值);
# 三种插入的方式【字段名用k表示, 字段值用v表示】
# 1. 插入全部字段
INSERT INTO table_name (k1, k2, k3....) VALUES(v1, v2, v3...);
# 2. 不写字段
INSERT INTO table_name VALUES(v1, v2, v3...);
# 3. 插入部分数据
INSERT INTO table_name (k1, k2) VALUES(v1, v2);
# 注意: 没有添加数据的字段会使用NULL

# 例子: 向student表中添加一个scott的成员
INSERT INTO student(id, NAME, birthday) VALUES(1, 'scott', '1981-01-02');
# 可以自行添加更多的数据, 本次这里只是举个例子
# 查询student中的数据
SELECT * FROM student;

3.2 更新表的数据

# 格式: UPDATE 表名 SET 列名 = 值 [WHERE 条件表达式];
# 1. 不带条件修改数据
UPDATE 表名 SET 字段名=值;# 修改所有的行
# 2. 待条件修改数据
UPDATE 表名 SET 字段名 = 值 WHERE 字段名 = 值;# 待条件修改数据

# 例子: 将student中的scott学生的name字段改为gunner
UPDATE student SET NAME='gunner' WHERE id=1;

3.3 删除表的数据【三思而后行啊】

# 格式:DELETE FROM 表名 [WHERE 条件表达式];
# 如果没有指定WHERE子句, MySQL表中的所有记录将被删除【慎重】

4. DQL(Data Query Language数据查询语句)查询表中的数据

# 先创建一个拥有多条数据的表
# 创建的student, 包含的字段由id, name, gender, math_score, english_score,
CREATE TABLE student(
    id INT, # 学生编号
    NAME VARCHAR(32), # 学生姓名
    gender INT, # 学生性别, 1表示男生, 0表示女孩
    math_score DOUBLE, # 数学成绩, 因为可能为"99.5"所以使用DOUBLE
    english_score DOUBLE# 英语成绩
);

# 查询student表是否创建成功
DESC student;

# 插入学生数据
INSERT INTO student(id, NAME, gender, math_score, english_score)
VALUES(1,'张三', 1, 90, 90.5);

# 查询数据是否插入成功
SELECT * FROM student;

# 批量插入数据: 值得注意的是列与列要一一对应
INSERT INTO student
(id, NAME, gender, math_score, english_score) 
VALUES
(2, '李四', 0, 100, 100),
(3, '王五', 1, 60, 70.5), 
(4, '赵六', 1, 80, 88.5);

# 查询现在student的数据有哪些【下面的SQL语句是最基础的查询结构】
SELECT * FROM student;

4.1 简单查询

# 1. 查询指定列
# 格式: SELECT 字段1, 字段2... FROM 表名;
# 例子: 查询id, name列的学生信息
SELECT id, NAME FROM student;

# 2. 指定列的别名进行查询【作为国人有时候看咱们的汉语才是正道】
# 格式: SELECT 字段1 AS 别名1, 字段2 AS 别名2... FROM 表名;
# 例子: 查询id别名为学生编号, name别名为学生姓名【别名不用加“ '' ”引号】
SELECT id AS 学生编号, NAME AS 学生姓名 FROM student;

# 3. 清除重复值
# 格式: SELECT DISTINCT 字段名 FROM 表名;
# 例子: 查询学生的性别有哪些【1表示男, 0表示女; 本次案例可能不是很适合这个场景, 你懂的】
SELECT DISTINCT gender FROM student;

4.2 稍微复杂一点

# 查询结果参与运算【实际中可能会涉及到薪资、工龄等数据】
# 格式1 : SELECT 列名1 + 固定值 FROM 表名;
# 例子1: 每个学生的数学成绩加10分
SELECT math_score + 10 FROM student;
# 例子2: 例子1中的进行查询的后字段名显示的结果为 “math_score + 10”这样很不好看, 这就是我们使用AS别名的时候到了
SELECT (math_score + 10) AS 数学最终成绩 FROM student;

# 格式2: 某列数据和其他列数据参与运算
# 例子: 查询学生总成绩
SELECT id, NAME, (math_score + english_score) AS 总成绩 FROM student; 

4.3 条件查询

# 我们在进行数据查询的时候, 都是需要查询自己想要的数据, 那么自己心中一定有对数据有一定的要求, 这个要求对于数据来说就是满足的某种条件。例如: 我们要查询数学成绩大于80分的几个同学姓名, 那么低于80分的就要给他过滤掉, 这就是条件查询的意义所在!
# 关键字: WHERE
# 格式: SELECT 字段名 FROM 表名 WHERE 所需要的条件;
比较运算符 说明
>、<、<=、>=、= 、<> <>在SQL中表示不等于, 在msyql中也可以使用!=, 但是没有==
BETWEEN...AND 在一个范围内, 比如: BETWEEN 80 AND 100相当于条件在80到100之间, 这是一个闭区间(也就是包括首尾的80和100算在其中)
IN() 集合表示多个值, 使用逗号将每个值分离, IN从英语上来说是在其中的意思, 只要满足其中一个就会查询出来
LIKE 模糊查询, [本次案例不适合LIKE的讲解, 在未来的更新中会再次讲解]
IS NULL 查询某一列为NULL的值, 注意: 不能写成 = NULL [本次案例不适合IS NULL的讲解, 在未来的更新中会再次讲解]
# 例子1: 查询数学成绩大于80分的学生都有谁
SELECT NAME, math_score  # 第三步: 你想要显示的信息是姓名和分数, 还是该学生的所有信息
FROM student # 第一步: 先确定是在哪个表中查询
WHERE math_score > 80;   # 第二步: 查询的条件是什么

# 例子2: 查询英语成绩在60分到90分之间的学生都有谁
SELECT NAME, english_score
FROM student
WHERE english_score BETWEEN 60 AND 90;

# 例子3: 查询数学成绩为60或者80或者100的学生都有谁
SELECT NAME, math_score
FROM student
WHERE math_score IN(60, 80, 100);
逻辑运算符 说明
and 或 && 与, SQL中建议使用前者, 后者并不通用
or 或 ll
not 或 !
# 例子1: 查询数学和英语成绩都是100分的学生都有谁
SELECT NAME AS 姓名 , math_score AS 数学成绩, english_score AS 英语成绩
FROM student
WHERE math_score=100 AND english_score=100;

# 例子2: 查询数学成绩大于90[包括90]或者英语成绩大于90[包括90]的学生都有谁
SELECT NAME AS 姓名 , math_score AS 数学成绩, english_score AS 英语成绩
FROM student
WHERE math_score >= 90 OR english_score >= 90;

# 查询数学成绩不合格的学生都有谁, [不合格的学生分数小于60[不包括60]]
SELECT NAME AS 姓名 , math_score AS 数学成绩
FROM student
WHERE math_score < 60;
# 备注: 本人设置的每个学生都及格了, 毕竟大学时代最盼望的就是能够及格☺
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容

  • 一、增加用户 1.远程登录用户 格式:grant select on 数据库.* to 用户名@登录主机 iden...
    白衣渡人_a063阅读 213评论 0 0
  • 1、insert insert into 数据库表名 values(value值1,value值2,..........
    Amanda_cq阅读 306评论 0 0
  • 重返MySQL之MySQL基础 本章详细介绍了,什么是数据库,常见的关系型数据库有哪些,什么是MySQL,及MyS...
    泪梦红尘BLOG阅读 267评论 0 0
  • 数据库对于后端开发来说是必不可少所要用到的,而MySQL数据库是其中的主流之一,在中小型公司中使用的较为广泛,作为...
    Steven_SHH阅读 1,459评论 0 2
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,535评论 28 53