网站开发流程可规划为哪三个阶段,开发一个oa系统多少钱,网站侧边栏导航代码,旅游网站框架文章目录 1、新增操作#xff08;Create#xff09;1.1单行数据全列插入1.2多行数据指定列插入 2、查询操作#xff08;Retrieve#xff09;2.1全列查询2.2指定列查询2.3指定列查询2.4别名#xff08;as#xff09;2.5去重#xff08;distinct#xff09;2.6排序#… 文章目录 1、新增操作Create1.1单行数据全列插入1.2多行数据指定列插入 2、查询操作Retrieve2.1全列查询2.2指定列查询2.3指定列查询2.4别名as2.5去重distinct2.6排序order by2.7条件查询where2.8分页查询limit 3、修改操作Update4、删除操作Delete 1、新增操作Create
在我们的数据库中用insert into来进行新增操作首先我们需要一张表 注意在进行下列操作时要选中数据库进行操作
mysql create table student(id int, name varchar(20));
Query OK, 0 rows affected (0.02 sec)1.1单行数据全列插入
一次只插入一行每一行都会插入数据
insert into 表名 values (值,值...);举例如下
mysql insert into student values(1,张三);
Query OK, 1 row affected (0.01 sec)1.2多行数据指定列插入
insert into student (表名,表名...) values (值,值...);举例如下
mysql insert into student (id, name) values (2, 李四),(3, 王五);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0这里通过 mysql 客户端给出的信息也能看到我们成功插入了 2 行数据 注意values()括号中的内容个数和类型一定要和表的结构匹配
2、查询操作Retrieve
创建考试成绩表
create table exam_result(id int, name varchar(20), chinese decimal(3,1), math decimal(3,1), english decimal(3,1)
);插入测试数据
insert into exam_result (id, name, chinese, math, english) values(1, 唐三藏, 67, 98, 56), (2, 孙悟空, 87.5, 78, 77), (3, 猪悟能, 88, 98, 90), (4, 曹孟德, 82, 84, 67), (5, 刘玄德, 55.5, 85, 45), (6, 孙权, 70, 73, 78.5), (7, 宋公明, 75, 65, 30);2.1全列查询
查询表里的所有列*表示通配符 --select * from 表名
mysql select * from exam_result;
-----------------------------------------
| id | name | chinese | math | english |
-----------------------------------------
| 1 | 唐三藏 | 67.0 | 98.0 | 56.0 |
| 2 | 孙悟空 | 87.5 | 78.0 | 77.0 |
| 3 | 猪悟能 | 88.0 | 98.0 | 90.0 |
| 4 | 曹孟德 | 82.0 | 84.0 | 67.0 |
| 5 | 刘玄德 | 55.5 | 85.0 | 45.0 |
| 6 | 孙权 | 70.0 | 73.0 | 78.5 |
| 7 | 宋公明 | 75.0 | 65.0 | 30.0 |
-----------------------------------------
7 rows in set (0.00 sec)2.2指定列查询
这个查询不用按照表中列的顺序来查询只要表中包含该列即可 --select 列名 列名... from 表名;
mysql select id, name from exam_result;
-----------------
| id | name |
-----------------
| 1 | 唐三藏 |
| 2 | 孙悟空 |
| 3 | 猪悟能 |
| 4 | 曹孟德 |
| 5 | 刘玄德 |
| 6 | 孙权 |
| 7 | 宋公明 |
-----------------
7 rows in set (0.00 sec)2.3指定列查询
查询每位同学语文成绩10分的结果
mysql select name, chinese10 from exam_result;
-----------------------
| name | chinese10 |
-----------------------
| 唐三藏 | 77.0 |
| 孙悟空 | 97.5 |
| 猪悟能 | 98.0 |
| 曹孟德 | 92.0 |
| 刘玄德 | 65.5 |
| 孙权 | 80.0 |
| 宋公明 | 85.0 |
-----------------------
7 rows in set (0.00 sec)查询每个同学的总成绩
mysql select name, chinese math english from exam_result;
-------------------------------------
| name | chinese math english |
-------------------------------------
| 唐三藏 | 221.0 |
| 孙悟空 | 242.5 |
| 猪悟能 | 276.0 |
| 曹孟德 | 233.0 |
| 刘玄德 | 185.5 |
| 孙权 | 221.5 |
| 宋公明 | 170.0 |
-------------------------------------
7 rows in set (0.00 sec)注意select 只是查询并不会修改原来表中的数据而查询的结果是一个 “临时表”这个查询出来的表是不会写到硬盘里面去的
2.4别名as
为查询结果中的列指定别名表示返回的结果集中以别名作为该列的名称
mysql select name, chinese math english as total from exam_result;
------------------
| name | total |
------------------
| 唐三藏 | 221.0 |
| 孙悟空 | 242.5 |
| 猪悟能 | 276.0 |
| 曹孟德 | 233.0 |
| 刘玄德 | 185.5 |
| 孙权 | 221.5 |
| 宋公明 | 170.0 |
------------------
7 rows in set (0.00 sec)2.5去重distinct --98重复了
mysql select math from exam_result;
------
| math |
------
| 98.0 |
| 78.0 |
| 98.0 |
| 84.0 |
| 85.0 |
| 73.0 |
| 65.0 |
------
7 rows in set (0.00 sec)--去重结果
mysql select distinct math from exam_result;
------
| math |
------
| 98.0 |
| 78.0 |
| 84.0 |
| 85.0 |
| 73.0 |
| 65.0 |
------
6 rows in set (0.01 sec)2.6排序order by
要想让查询的结果“有序”就必须手动使用order by语句让MySQL主动排序 --select * from 表名 order by 列名/表达式;
mysql select * from exam_result order by chinese;
-----------------------------------------
| id | name | chinese | math | english |
-----------------------------------------
| 5 | 刘玄德 | 55.5 | 85.0 | 45.0 |
| 1 | 唐三藏 | 67.0 | 98.0 | 56.0 |
| 6 | 孙权 | 70.0 | 73.0 | 78.5 |
| 7 | 宋公明 | 75.0 | 65.0 | 30.0 |
| 4 | 曹孟德 | 82.0 | 84.0 | 67.0 |
| 2 | 孙悟空 | 87.5 | 78.0 | 77.0 |
| 3 | 猪悟能 | 88.0 | 98.0 | 90.0 |
-----------------------------------------
7 rows in set (0.00 sec)此处默认是按照升序排序如果要使用降序排序需要加上desc关键字
mysql select * from exam_result order by chinese desc;
-----------------------------------------
| id | name | chinese | math | english |
-----------------------------------------
| 3 | 猪悟能 | 88.0 | 98.0 | 90.0 |
| 2 | 孙悟空 | 87.5 | 78.0 | 77.0 |
| 4 | 曹孟德 | 82.0 | 84.0 | 67.0 |
| 7 | 宋公明 | 75.0 | 65.0 | 30.0 |
| 6 | 孙权 | 70.0 | 73.0 | 78.5 |
| 1 | 唐三藏 | 67.0 | 98.0 | 56.0 |
| 5 | 刘玄德 | 55.5 | 85.0 | 45.0 |
-----------------------------------------
7 rows in set (0.00 sec)也可以按照别名的方式进行order by直接表达式是一样的
mysql select name, chinese math english as total from exam_result order by total;
------------------
| name | total |
------------------
| 宋公明 | 170.0 |
| 刘玄德 | 185.5 |
| 唐三藏 | 221.0 |
| 孙权 | 221.5 |
| 曹孟德 | 233.0 |
| 孙悟空 | 242.5 |
| 猪悟能 | 276.0 |
------------------
7 rows in set (0.00 sec)order by 也可以指定多个列排序通过多个列排序约定更复杂的比较规则 --select * from 表名 order by 列名[desc], 列名[desc];--先按照第一列排序第一列相同了再按照第二列排序
mysql select * from exam_result order by math desc,chinese desc;
-----------------------------------------
| id | name | chinese | math | english |
-----------------------------------------
| 3 | 猪悟能 | 88.0 | 98.0 | 90.0 |
| 1 | 唐三藏 | 67.0 | 98.0 | 56.0 |
| 5 | 刘玄德 | 55.5 | 85.0 | 45.0 |
| 4 | 曹孟德 | 82.0 | 84.0 | 67.0 |
| 2 | 孙悟空 | 87.5 | 78.0 | 77.0 |
| 6 | 孙权 | 70.0 | 73.0 | 78.5 |
| 7 | 宋公明 | 75.0 | 65.0 | 30.0 |
-----------------------------------------
7 rows in set (0.00 sec)2.7条件查询where
比较运算符 逻辑运算符 注意 1.WHERE条件可以使用表达式但不能使用别名。 2.AND的优先级高于OR在同时使用时需要使用小括号()包裹优先执行的部分
查询语文成绩大于60分的同学
mysql select name, chinese from exam_result where chinese 60;
--------------------
| name | chinese |
--------------------
| 唐三藏 | 67.0 |
| 孙悟空 | 87.5 |
| 猪悟能 | 88.0 |
| 曹孟德 | 82.0 |
| 孙权 | 70.0 |
| 宋公明 | 75.0 |
--------------------
6 rows in set (0.01 sec)数据库服务器收到SQL之后就会遍历表中的每一个数据行取出当前行带入到条件之中如果条件成立当前这一行数据就会进入到结果集合中如果不成立跳过进入下一行 上述条件查询的过程可以理解成按照条件进行“筛选”
可以在条件选择的时候使用order by来排序 如果没有显示使用order by顺序是不可预期的
mysql select name, chinese from exam_result where chinese 60 order by chinese;
--------------------
| name | chinese |
--------------------
| 唐三藏 | 67.0 |
| 孙权 | 70.0 |
| 宋公明 | 75.0 |
| 曹孟德 | 82.0 |
| 孙悟空 | 87.5 |
| 猪悟能 | 88.0 |
--------------------
6 rows in set (0.00 sec)查询语文成绩大于80或者英语大于60的同学
mysql select name, chinese, english from exam_result where chinese 80 or english 60;
-----------------------------
| name | chinese | english |
-----------------------------
| 孙悟空 | 87.5 | 77.0 |
| 猪悟能 | 88.0 | 90.0 |
| 曹孟德 | 82.0 | 67.0 |
| 孙权 | 70.0 | 78.5 |
-----------------------------
4 rows in set (0.01 sec)查询数学成绩在[80 90]的同学
mysql select name, math from exam_result where math 80 and math 90;
-----------------
| name | math |
-----------------
| 曹孟德 | 84.0 |
| 刘玄德 | 85.0 |
-----------------
2 rows in set (0.00 sec)mysql select name, math from exam_result where math between 80 and 90;
-----------------
| name | math |
-----------------
| 曹孟德 | 84.0 |
| 刘玄德 | 85.0 |
-----------------
2 rows in set (0.00 sec)上述两种写法都是可以的
查询英语成绩是56分67分77分的同学
mysql select name, english from exam_result where english in(56,67,77);
--------------------
| name | english |
--------------------
| 唐三藏 | 56.0 |
| 孙悟空 | 77.0 |
| 曹孟德 | 67.0 |
--------------------
3 rows in set (0.00 sec)mysql select name, english from exam_result where english 56 or english 67 or english 77;
--------------------
| name | english |
--------------------
| 唐三藏 | 56.0 |
| 孙悟空 | 77.0 |
| 曹孟德 | 67.0 |
--------------------
3 rows in set (0.00 sec)上述这两种也是可以的
查询姓‘孙’的同学 %匹配任意多个包括0个字符
mysql select name from exam_result where name like 孙%;
-----------
| name |
-----------
| 孙悟空 |
| 孙权 |
-----------
2 rows in set (0.00 sec)_匹配严格的一个任意字符
mysql select name from exam_result where name like 孙_;
--------
| name |
--------
| 孙权 |
--------
1 row in set (0.00 sec)查询没有数学成绩的同学
mysql select name, math from exam_result where math is null;
Empty set (0.00 sec)查询有数学成绩的同学
mysql select name, math from exam_result where math is not null;
-----------------
| name | math |
-----------------
| 唐三藏 | 98.0 |
| 孙悟空 | 78.0 |
| 猪悟能 | 98.0 |
| 曹孟德 | 84.0 |
| 刘玄德 | 85.0 |
| 孙权 | 73.0 |
| 宋公明 | 65.0 |
-----------------
7 rows in set (0.00 sec)2.8分页查询limit
分页查询限制了每次查询显示的最多为多少条数据比如我们现在只查询俩条数据
mysql select * from exam_result limit 2;
-----------------------------------------
| id | name | chinese | math | english |
-----------------------------------------
| 1 | 唐三藏 | 67.0 | 98.0 | 56.0 |
| 2 | 孙悟空 | 87.5 | 78.0 | 77.0 |
-----------------------------------------
2 rows in set (0.00 sec)搭配offset关键字offset称为偏移量相当于下标offset默认是从0开始的
mysql select * from exam_result limit 2 offset 2;
-----------------------------------------
| id | name | chinese | math | english |
-----------------------------------------
| 3 | 猪悟能 | 88.0 | 98.0 | 90.0 |
| 4 | 曹孟德 | 82.0 | 84.0 | 67.0 |
-----------------------------------------
2 rows in set (0.00 sec)3、修改操作Update --update 表名 set 列名 值 where 条件
mysql update exam_result set english 56 where name 曹孟德;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0--修改结果
mysql select name, english from exam_result;
--------------------
| name | english |
--------------------
| 唐三藏 | 56.0 |
| 孙悟空 | 77.0 |
| 猪悟能 | 90.0 |
| 曹孟德 | 56.0 |
| 刘玄德 | 45.0 |
| 孙权 | 78.5 |
| 宋公明 | 30.0 |
--------------------
7 rows in set (0.00 sec)修改多个列set后面写多组列分别进行 赋值即可 修改操作也可以借助一些表达式还可以搭配order by 和 limit 如果update不指定任何条件所有的数据都会被修改
4、删除操作Delete --delete from 表名 where 条件;
mysql delete from exam_result where name 宋公明;
Query OK, 1 row affected (0.01 sec)--删除结果
mysql select * from exam_result;
-----------------------------------------
| id | name | chinese | math | english |
-----------------------------------------
| 1 | 唐三藏 | 67.0 | 98.0 | 56.0 |
| 2 | 孙悟空 | 87.5 | 78.0 | 77.0 |
| 3 | 猪悟能 | 88.0 | 98.0 | 90.0 |
| 4 | 曹孟德 | 82.0 | 84.0 | 56.0 |
| 5 | 刘玄德 | 55.5 | 85.0 | 45.0 |
| 6 | 孙权 | 70.0 | 73.0 | 78.5 |
-----------------------------------------
6 rows in set (0.00 sec)注意删除操作也是在操作数据库服务器的硬盘需要小心 delete 的操作后面的条件是可以跟 update 一样的支持 whereorder bylimit 等操作 如果没有写任何条件那就是把整个表中的数据都删除了