目录
前言
铁子们,从今天开始我们就要进入数据库的学习当中了😁
准备好了吗?我要发车了,嘻嘻
一、数据库相关操作
数据库的创建
create database 数据库的名字; ——————注意这里的分号是半角格式
查看当前所有的数据库
show databases;
数据库删除
drop database 数据库的名字;
选中指定的数据库
use 数据库名字;
小技巧
当你在mysql的命令行,想要恢复自己上次输入的命令时,按上键就可以
🌰实例
当我们删除数据库test后
二、数据表的相关操作
当我们创建了一个数据库后,我们可以在我们刚才创建的数据库中创建数据表了
创建表(注意同一个数据库,不能有两个表名字相同)
create table 表名(列名 类型, 列名 类型.....); ————注意这里的符合都是半角符号
表名和列名不能和SQL的关键字冲突
查看当前数据库中的所有的表
show tables;
查看当前表结构
desc 表名;
查看这个表里面的列和类型~~~~~desc => describe的缩写
表的删除
drop table 表名;
🌰实例
三、数据的新增和查询
然后呢?当前我们的表是空的,所有我们还需要给我们表中插入数据
insert数据的新增
1、全列插入
insert into values(值, 值....);
插入的值数量必须和定义表的列的数量及顺序一致
🌰栗子一
🌰栗子二
2、指定列插入
insert into 表名 values(值, 值....);
插入的值数量必须和前面列出的表名的数量及顺序一致
时间元素的插入与使用
select基础查询
- select * from 表名;(全列查询)
- select 列名 from 表名;(指定列查询)
- select 表达式 from 表名;(表达式查询)
- select 表达式 as 别名 from 表名;
- select distinct 列名 from 表名; (去重查询)
全列查询
select * from 表名;
通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。
指定列查询
select 列名 from 表名;
-- 指定列的顺序不需要按定义表的顺序来
表达式查询(查询字段为表达式)
select 表达式 from 表名;
(注意下面的id、name等是列名,exam_result是表名)
-- 表达式不包含字段
SELECT id, name, 10 FROM exam_result;
-- 表达式包含一个字段
SELECT id, name, english + 10 FROM exam_result;
-- 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam_result;
别名查询
为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称
select 表达式 as 别名 from 表名;
去除查询
select distinct 列名 from 表名;
使用DISTINCT关键字对某列数据进行去重(因为不区分大小写,所有distinct和DISTINCT是一样的)
select 进阶查询
🍑排序查询
select * from 表名 order by 列名; // 按order by后面的列名所对应的那一列进行排序
select 列名 from 表名 order by 列名;
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
查询过程中,对于查询到的结果,进行排序!
针对临时表排序,对于数据库上原来存的数据没有影响
~~~~~我是分割符~~~~~
select 操作中,如果没有使用order by,那么查询结果的顺序是不确定的
🍑条件查询
select * from 表名 where 条件;
select 列名 from 表名 where 条件;
在指定条件下,对查询到的结果进行筛选
筛选可以简单理解成:对查询结果进行依次遍历,where后面的条件代入到对应的查询结果中,如果条件成立,则把该记录放到最终查询结果里
在条件中可能会使用到的一些运算符
比较运算符
运算符 | 说明 |
>, >=, <, <= | 大于,大于等于,小于,小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL |
<=> | 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) |
!=, <> | 不等于 |
BETWEEN a0 AND a1 | 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1) |
IN (option, ...) | 如果是 option 中的任意一个,返回 TRUE(1) |
IS NULL | 是 NULL |
IS NOT NULL | 不是 NULL |
LIKE | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符 |
逻辑运算符
运算符 | 说明 |
AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
OR | 任意一个条件为 TRUE(1), 结果为 TRUE(1) |
NOT | 条件为 TRUE(1),结果为 FALSE(0) |
🔔注意:
1. WHERE条件可以使用表达式,但不能使用别名。
2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
- 基础查询
~~ ~~我是分割线~~~~
- AND和OR
- 范围查询
🌻 BETWEEN ... AND...
🌻IN
- 模糊查询LIKE
下面的exam_result是表名,name是列名
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权
📝 实战演练
🍑分页查询
select * from 表名 limit N offset M;
select 列名 from 表名 limit N offset M;
从第M条开始查询,最多返回N条记录(M如果省略不写,表示从第0条记录开始返回
limit还可以和order by,where 等句子搭配使用的~~~~
四、数据的更新和删除
数据的更新
update 表名 set 列名 = 值, 列名 = 值 where 条件;
针对某个表的某些行的某些列,进行值修改,我们的where条件确定就是那些行
数据的删除
delete from 表名 where 条件;
把符合where条件的行进行删除,如果条件不写则会删除整个表的所有记录