mysql学习(基础语法)

sql分类
DDL(data definition language)数据库定义语言
创建表视图的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或修改数据库、表、视图结构
DML(data manipulation language)数据操纵语言:
就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作。
DCL(Data Control Language)数据库控制语言:
是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。这个比较少用到。

创建一个示例表
DDL语句:

CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '姓名',
  `sex` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '性别',
  `nickname` varchar(200) DEFAULT NULL COMMENT '绰号',
  `stars` varchar(100) DEFAULT NULL COMMENT '星宿',
  `position` varchar(100) DEFAULT NULL COMMENT '职位',
  `ranking` int DEFAULT NULL COMMENT '排名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

导入测试数据

INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(1, '李衮', '男', '飞天大圣', '地走星', '歩军十七将校之四兼标枪营指挥领六处关隘协备参将', 65);
INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(2, '项充', '男', '八臂哪吒', '地飞星', '歩军十七将校之三兼飞刀营指挥领六处关隘协备参将', 64);
INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(3, '樊瑞', '男', '混世魔王', '地然星', '歩军十七将校之首兼符咒营指挥领六处关隘协御副将', 61);
INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(4, '公孙胜', '男', '入云龙', '天闲星', '掌管机密副军师', 4);
INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(5, '阮小二', '男', '立地太岁', '天剑星', '水军八海蛟之四兼楼船营指挥领东南水寨守御副将', 27);
INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(6, '阮小五', '男', '短命二郎', '天罪星', '水军八海蛟之五兼弩船营指挥领东北水寨守尉主将', 29);
INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(7, '阮小七', '男', '活阎罗', '天败星', '水军八海蛟之六兼快船营指挥领西北水寨守尉主将', 31);
INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(8, '扈三娘', '女', '一丈青', '地慧星', '军法行刑四校之二兼采事队都统制', 59);
INSERT INTO test.`user`
(id, name, sex, nickname, stars, `position`, ranking)
VALUES(9, '母夜叉', '女', '孙二娘', '地壮星', '内务处迎宾八使之七兼西山酒店副掌店', 103);

查看表数据

id name sex nickname stars position ranking
1 李衮 飞天大圣 地走星 歩军十七将校之四兼标枪营指挥领六处关隘协备参将 65
2 项充 八臂哪吒 地飞星 歩军十七将校之三兼飞刀营指挥领六处关隘协备参将 64
3 樊瑞 混世魔王 地然星 歩军十七将校之首兼符咒营指挥领六处关隘协御副将 61
4 公孙胜 入云龙 天闲星 掌管机密副军师 4
5 阮小二 立地太岁 天剑星 水军八海蛟之四兼楼船营指挥领东南水寨守御副将 27
6 阮小五 短命二郎 天罪星 水军八海蛟之五兼弩船营指挥领东北水寨守尉主将 29
7 阮小七 活阎罗 天败星 水军八海蛟之六兼快船营指挥领西北水寨守尉主将 31
8 扈三娘 一丈青 地慧星 军法行刑四校之二兼采事队都统制 59
9 母夜叉 孙二娘 地壮星 内务处迎宾八使之七兼西山酒店副掌店 103

工作中主要用到的是DML语句

1.INSERT INTO 语句

INSERT INTO 语句用于向表中插入新记录

1.1语法1

无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO test.`user`
VALUES(10, '朱武', '男', '神机军师', '地魁星', '掌管机密军师参赞兼军法行刑营指挥', 37);

执行后的数据为
在这里插入图片描述
不指定列插入数据要求列出每一列的数据。即表有七列,则插入的数据要将七列的值全部列出并且按列的顺序一一对应

1.2语法2

指定列名及被插入的值:

INSERT INTO test.`user` ( name, sex, nickname, ranking, stars)
VALUES('刘唐', '男', '赤发鬼', 21, '天异星');

执行后的数据为
在这里插入图片描述
指定列的插入数据方式需要插入数据的每一列值与指定的列顺序数量一一对应,没有指定的列如果有设置默认值则插入数据对应列为默认值,没有默认值则为NULL

2.SELECT语句:

SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。
语法

2.1查询指定列

SELECT column_name,column_name
FROM table_name;

select  name,nickname from user;

结果为
在这里插入图片描述

2.2查询所有列

SELECT * FROM table_name;

select  * from user;

结果为
在这里插入图片描述

3.SELECT DISTINCT 语法

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。
SELECT DISTINCT column_name,column_name
FROM table_name;

SELECT DISTINCT sex from user;

结果为
在这里插入图片描述

4.WHERE 子句

WHERE 子句用于提取那些满足指定条件的记录。
WHERE 子句可用于insert,delete,select,update语句,用于过滤出满足条件的数据
SELECT column_name,column_name
FROM table_name
WHERE 条件表达式;

--查询表中性别为‘女’的所有人
select * from user where sex='女';

输出结果
在这里插入图片描述

4.1where 子句常用条件运算符

= 等于
<>或!= 不等于
is null 为空
is not null 不为空
> 大于
< 小于
>= 大于或等于
<= 小于或等于
between 区间范围过滤
in 多个值过滤
like 模糊查询

5. 关系运算符

关系运算符用来描述多个条件之间的关系

5.1 AND运算符

AND 左右两个条件运算都成立才算条件成立,左右两个条件中有一个不成立则整体不成立

-- 查询表中性别为女且排名小于100的数据
select * from user where sex='女' and ranking<100;

输出结果为
在这里插入图片描述

5.1 OR运算符

OR 左右两个条件运算任意一个成立就算整体条件成立

-- 查询表中性别为男或者排名大于100的数据
select * from user where sex='男'  or ranking>100;

输出结果为
在这里插入图片描述
在这里插入图片描述

6.ORDER BY语法

order by 可以对查询结果集进行排序
order by 语法
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
order by 后面可以跟一列或多列,按字段顺序从左到右依次排序,后面不加ASC 或DESC默认为升序排序,即默认ASC;DESC表示倒序排序

-- 按排名先后从小到大排序
select * from user order by ranking;
select * from user order by ranking asc;

两个sql结果都是一样的
输出结果为
在这里插入图片描述

-- 按排名从大到小排序
select * from user order by ranking desc;

输出结果
在这里插入图片描述
order by 多列

-- 先按性别升序排序,再按排名倒序排序
select * from user order by sex asc,ranking desc;

输出结果
在这里插入图片描述

7.UPDATE语句(!注意where条件过滤)

UPDATE 语句用于更新表中的记录。
UPDATE 语法
UPDATE table_name
SET column1=value1,column2=value2,…
WHERE some_column=some_value;
UPDATE语句会根据where子句条件过滤出所有符合条件的数据,然后对这些过滤出来的数据进行相应字段的更新

-- 找到性别为女并且排名为103的人员,更新名字为孙二娘,绰号为母夜叉
update  user  set  name='孙二娘',nickname='母夜叉' where sex='女' and  ranking=103;

更新后的内容为
在这里插入图片描述

7.DELETE语句(!注意where条件过滤)

DELETE 语句用于删除表中的行。
DELETE 语法
DELETE FROM table_name
WHERE some_column=some_value;
DELETE语句会根据where子句条件过滤出所有符合条件的数据,然后删除这些过滤出来的数据;所以除非是想删除整个表的数据,否者一定记得加where子句进行数据过滤

-- 找到名字为刘唐的数据,并删除该数据
delete from user where name='刘唐';

删除后的内容为
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44835704/article/details/121079003