MySQL数据库(三)

目录

一、CRUD

二、新增(Create)

2.1 单行数据 + 全列插入

2.2 多行数据 + 指定列插入

三、查询(Retrieve)

3.1 全列查询 

3.2 指定列查询

3.3 查询字段为表达式

3.4 别名 

3.5 去重:distinct

3.6 排序:order by


一、CRUD

注释:在SQL中可以使用“--空格+描述”来表示注释说明
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写

二、新增(Create)

这里的新增并不是说是新增表,而是在表中新增数据!

insert into tb_name (字段名) values (数据1,数据2....)

为了实现这个操作,首先要有一个表,这里就需要对表的创建要有一定的理解。我这里直接创建一个对应的学生表用于后面的插入操作。

 create table student (
        id int, 
        sn int,
        name varchar(20),
        email varchar(20)
);

MySQL数据库(三)_第1张图片

2.1 单行数据 + 全列插入

对于全列插入,是可以在表名后面直接省略字段名

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
insert into student values (100, 10000, '唐三藏', NULL);
insert into student values (101, 10001, '孙悟空', '11111');

MySQL数据库(三)_第2张图片

 使用查询语句查看是否插入成功MySQL数据库(三)_第3张图片

2.2 多行数据 + 指定列插入

对于指定的列插入,需要在表明后面写明字段名。同时,对于多行数据只需要用逗号分隔就行

-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致

insert into student(id,sn,name) valuse (102,10002,'曹操'),(103,10003,'孙权');

 MySQL数据库(三)_第4张图片

说明:因为多行数据的插入相比于单行数据的插入是效率更加高的,这里推荐使用多行数据的插入

三、查询(Retrieve)

语法:

select
[distinct] {* | {字段1, 字段2...} -- *号表示查询该表所有的内容,distinct表示去重
[from table_name] --table_name表示表名
[where ...] --条件的范围
[order by column [asc | desc], ...] --对查询结果进行升序(asc)、降序(desc) 操作
limit ...--分组查询

案例:

-- 创建考试成绩表
create table exam_result (
        id int,
        name varchar(20),
        chinese decimal(3,1),
        math decimal(3,1),
        english decimal(3,1)
);

MySQL数据库(三)_第5张图片

-- 插入测试数据
insert into exam_result (id,name, chinese, math, english) values
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98.5, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);

MySQL数据库(三)_第6张图片

3.1 全列查询 

通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。

select * from exam_result;

MySQL数据库(三)_第7张图片

3.2指定列查询

-- 指定列的顺序不需要按定义表的顺序来
select id, name, english from exam_result;

MySQL数据库(三)_第8张图片

3.3 查询字段为表达式

-- 表达式不包含字段
select id, name, 10 from exam_result;

MySQL数据库(三)_第9张图片

-- 表达式包含一个字段
select id, name, english + 10 from exam_result;

--表达的是给english这一列数据都加上10

MySQL数据库(三)_第10张图片

 -- 表达式包含多个字段
select id, name, chinese + math + english from exam_result;

--将chinese,math,english,三列进行相加

MySQL数据库(三)_第11张图片

3.4 别名 

select 列名 as 别名 from tb_name;

--别名可以随便定义

MySQL数据库(三)_第12张图片

3.5 去重:distinct

 MySQL数据库(三)_第13张图片

假如我不想查询到某列重复的值,这里就会使用到distinct

select distinct math from tb_name; 

 MySQL数据库(三)_第14张图片

3.6 排序:order by

-- 查询同学姓名和数学成绩,按数学成绩排序显示
select name, math from student order by math asc; --其中asc可以省略

MySQL数据库(三)_第15张图片

select name, math from exam_result order by math desc;

MySQL数据库(三)_第16张图片

这里我们发现order by默认是升序的!

-- 查询同学及总分,由高到低
select name, chinese + english + math from exam_result order by chine
se + english + math desc;

MySQL数据库(三)_第17张图片

--同样的也能够用别名进行排序

 select name, chinese + english + math as total from exam_result order by total desc;

MySQL数据库(三)_第18张图片

-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
select name, math, english, chinese from exam_result

order by math desc, english, chinese;

MySQL数据库(三)_第19张图片

 在多种排序的时候是优先第一列的排序的,再在第一列排序的基础上使用第二列数据进行排序。

你可能感兴趣的:(MySQL数据库,数据库,mysql)