美文网首页
MySQL常规操作

MySQL常规操作

作者: SgRMrLi | 来源:发表于2021-10-22 21:29 被阅读0次

作者使用的数据库为是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;
# 备注: 本人设置的每个学生都及格了, 毕竟大学时代最盼望的就是能够及格☺

相关文章

  • Mysql常规操作

    一、增加用户 1.远程登录用户 格式:grant select on 数据库.* to 用户名@登录主机 iden...

  • mysql常规操作

    mysql常规操作 1.添加权限 2.乱码问题 在PHP连接数据库时 得到中文信息都是?号

  • MySQL常规操作

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

  • MySQL:常规操作示例

    删除:DELETE、DROP、TRUNCATE DELETE 删除表内数据。 示例: DROP 删除表,包括表数据...

  • Mac mysql 无法远程连接

    现象:在 Mac 系统上,mysql 不允许远程连接。 首先按照常规的方法操作:进入 mysql: $ mysql...

  • MySQL常规操作【基础篇】

    1、insert insert into 数据库表名 values(value值1,value值2,..........

  • mac上安装mysqlclient

    本人在学习django数据库阶段选择比较常见的mysqlclient驱动来操作mysql,可是使用常规的命令,始终...

  • 常规操作

    2018-08-30 第一件事。服务器上的一个ip突然就访问不到了。本机ping了一下没通,返回的是另一个ip给的...

  • 常规操作

    对于大多数人来说,就是清理衣橱和更新服装这样简单的改变也是如此艰难。很多人出去购买新衣服,但样式没有更新。 For...

  • 常规操作

    从阳台看 楼下测核酸的队伍 成了一条弯曲且盘旋的长蛇 工作不是每天必做的 排队是每天的常规操作

网友评论

      本文标题:MySQL常规操作

      本文链接:https://www.haomeiwen.com/subject/szxhaltx.html