MySQL语句
数据库中的关键字不区分大小写,一般大写关键字与一般字符做区分。
最近接触到了数据库,做个笔记免得自己忘了。
文章目录
1、创建数据库
CREATE DATABASE 数据库名;
-- 创建数据库名为“farm”的数据库
CREATE DATABASE farm;
执行结果
2、指定当前操作的数据库
USE 数据库名;
-- 指定以后操作是位于“farm”数据库中的
USE farm;
执行结果
3、创建表格
CREATE TABLE 表格名(
列名1 数据类型 其他配置,
列名2 数据类型 其他配置,
列名3 数据类型 其他配置,
…
);
数据类型有:(入门版)
关键字 | 数据类型 |
---|---|
INT | 整数 |
VARCHAR() | 字符串(括号限制字符个数) |
DATE | 时间(年-月-日) |
其他配置
关键字 | 描述 |
---|---|
AUTO_INCREMENT | 自动递增 |
NOT NULL | 非空(不输入内容就会报错) |
NULL | 可以为空 (不输入内容就是空) |
PRIMARY KEY | 主键(需要数据是唯一的) |
-- 创建一个数据表“farm_list”,这个表一共有三项:农场id,农场名称,农场创建时间
CREATE TABLE farm_list (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
start DATE NULL
);
执行结果
4、插入数据
INSERT INTO 数据库名.表格名(列名1,列名2, 列名3)VALUES(数值1, 数值2, 数值3)
-- 插入数据如下: id:1 name:农场1 start:2024年5月11号
INSERT INTO farm.farm_list(id, name, start)
VALUES (1, '农场1', '2024-05-11');
-- 不指明列名 直接输入VALUES以及对应的值
INSERT INTO farm.farm_list
VALUES (2, '农场2', '2024-05-12');
-- 省略id值,其默认递增可以用DEFAULT代替 时间可以为空,用NULL代替
INSERT INTO farm.farm_list
VALUES (DEFAULT, '农场2', NULL);
执行结果
5、编辑表格
1.添加列
ALTER TABLE 数据库名.表格名 ADD 列名 数据类型 其他条件;
-- 新增一列数据 profit:
ALTER TABLE farm.farm_list ADD profit INT NULL;
执行结果
2.修改数据
UPDATE 数据库名.表格名
SET 值
WHERE 条件;
-- 给第三行数据添加时间
UPDATE farm.farm_list
SET start = '2024-05-13'
WHERE id = 3;
执行结果
3.删除某条数据
DELETE FROM 数据库名.表格名
WHERE 条件;
-- 删除第三条数据
DELETE FROM farm.farm_list
WHERE id = 3;
执行结果
4.删除表格
DROP TABLE 数据库名.表格名;
-- 删除farm_list这个表格
DROP TABLE farm.farm_list;
5.删除整个数据库
DROP DATABASE 数据库名;
这里就不演示了,免得有人删库跑路(~ ̄(OO) ̄)ブ
-- 删除fram数据库
DROP DATABASE farm;
6、查找数据(重点!!!)
1.查询整个数据表
SELECT *
FROM 表格名;
-- 查看全部数据
SELECT *
FROM farm_list;
执行结果
2.查询某几列数据
SELECT 列名1,列名2
FROM 表格名;
-- 查看name列
SELECT name, start
FROM farm_list;
执行结果
3.查询某一列所有不重复的项
SELECT DISTINCT 列名
FROM 表格名;
编辑一下表格,添加一些数据
-- 查询5月份有哪几号有农场成立
SELECT DISTINCT start
FROM farm_list;
执行结果
4.查询结果排序
SELECT *
FROM 表格名
ORDER BY 列名 排序;
排序:
排序语句(不加默认为ASC) | 描述 |
---|---|
ASC | 从小到大排列 |
DESC | 从大到小排列 |
-- 查看全部数据 并根据“profit”列从小到大排序
SELECT *
FROM farm_list
ORDER BY profit ASC;
执行结果
5.查询结果 排序+过滤
SELECT *
FROM 表格名
WHERE 条件
ORDER BY 列名 排序;
WHERE配合的运算符
比较运算符:
符号 | 描述 |
---|---|
= | 等于 |
!= 或 <> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 两值之间 |
IN | 一组值里 |
LIKE | 相似匹配 |
逻辑运算符:
符号 | 描述 |
---|---|
ADN | 与 |
OR | 或 |
NOT 或 ! | 非 |
-- 查看所有列 且profit小于100的 并根据“profit”列从大到小排序
SELECT *
FROM farm_list
WHERE profit < 100
ORDER BY profit DESC;
执行结果
-- 查看所有列 且profit小于100的 并根据“profit”列从大到小排序 并且不看id大于10的
SELECT *
FROM farm_list
WHERE profit < 100 AND id <= 10
ORDER BY profit DESC;
执行结果
-- 查看所有列 且profit值在50到150之间的数据 并根据“profit”列从大到小排序
SELECT *
FROM farm_list
WHERE profit BETWEEN 50 AND 150
ORDER BY profit DESC;
执行结果
模糊搜索
-- 查看所有列 且name中以'阿'开头的 并根据“profit”列从大到小排序
SELECT *
FROM farm_list
WHERE name LIKE '阿%'
ORDER BY profit DESC;
执行结果
-- 查看所有列 且name中第二个字符是‘场’的 并根据“profit”列从大到小排序
SELECT *
FROM farm_list
WHERE name LIKE '_场%'
ORDER BY profit DESC;
执行结果
7、与时间相关的查找
1.新增一列数据
ALTER TABLE
farm.farm_list
ADD createTime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;
执行结果
编辑数据,新增一些数据(后面懒得修改了)
2.查询所有数据并根据时间排序(倒序)
SELECT *
FROM farm_list
ORDER BY createTime DESC;
执行结果
3.查询固定时间段的数据
-- 查询2024年5月15号9点 到 2024年25号12点的数据
SELECT *
FROM farm_list
WHERE createTime BETWEEN '2024-05-15 09:00:00' AND '2024-05-25 12:00:00'
ORDER BY createTime ASC;
执行结果
4.删除一小时之内的数据
-- 删除1小时之内的数据
delete
from farm_list
where DATE(createTime ) >= DATE(DATE_SUB(NOW(),INTERVAL 1 HOUR));
执行结果
8、数据库中数据表的合并
待更新。。。