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;
# 备注: 本人设置的每个学生都及格了, 毕竟大学时代最盼望的就是能够及格☺
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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