0
点赞
收藏
分享

微信扫一扫

数据库表中的增删改查

陬者 2022-03-12 阅读 70

1.增加数据:

全列插入:值的顺序与表中字段的顺序一致

  • insert into 表名 values(...) 

部分列插入:值的顺序与给定的列顺序对应

  • insert into 表名 (列1,...)values(值1,...)
  • insert into class values(1,'math',85.2); 
  • insert into class (class_id ,class_name ,class_num) values(2,'PE',60.22); 

2.修改:

  • 语法:update 表名 set 字段名=值 ,字段名=值 where 条件;
  • update students set gender=0,hometown='太原' where id=9; 

3.删除:

  • delete from 表名 where 条件;

重点

查询:

查询的基本语法: select *(字段名) from 表名; 

一.

1.SELECT 特殊标识 数字和日期使用的数学表达式 

操作符描述
+
-
*
/

操作符优先级: 乘除的优先级高于加减 同一优先级运算符从左向右执行 括号内的运算先执行

select (sno +2)*2 from score;
mysql> select * from Student;
+--------+----------+-------------+------+------------+
| stu_id | stu_name | phone       | sex  | birthday   |
+--------+----------+-------------+------+------------+
|      1 | asd     | 1564896322 | 男   | 2022-03-08 |
|      1 | shiwei   | 1564679877 | 男   | 2000-09-28 |
+--------+----------+-------------+------+------------+
2 rows in set (0.00 sec)

mysql> select stu_id+2 from Student;
+----------+
| stu_id+2 |
+----------+
|        3 |
|        3 |
+----------+
2 rows in set (0.32 sec)

mysql> select * from Student;
+--------+----------+-------------+------+------------+
| stu_id | stu_name | phone       | sex  | birthday   |
+--------+----------+-------------+------+------------+
|      1 | asd      |1564896322 | 男   | 2022-03-08 |
|      1 | shiwei   |  1564679877 | 男   | 2000-09-28 |
+--------+----------+-------------+------+------------+
2 rows in set (0.00 sec)

 

2.列的别名:

列名 AS 别名 :ac_id AS a

别名=列 :select sno = 'te_id' from student;


3..连接符

 把列与列,列与字符连接在一起 用concat(字段1,字段2) orcale数据库可使用 || select
concat(sname,ssex) from student;

mysql> select concat(stu_id,stu_name)from Student;
+-------------------------+
| concat(stu_id,stu_name) |
+-------------------------+
| 1asd                  |
| 1shiwei                 |
+-------------------------+
2 rows in set (0.09 sec)

4.数据排重

select distinct 字段 from 表名; 

mysql> select distinct stu_id from Student;
+--------+
| stu_id |
+--------+
|      1 |
+--------+
1 row in set (0.11 sec)


二.

1.数据过滤

  • 使用WHERE 子句,对行数据进行限制,将不满足where条件的行过滤掉。
  • select *from student where sno>105;
  • mysql> select * from Student where stu_name='shiwei';
    +--------+----------+-------------+------+------------+
    | stu_id | stu_name | phone       | sex  | birthday   |
    +--------+----------+-------------+------+------------+
    |      1 | shiwei   | 18234243849 | 男   | 2000-09-28 |
    +--------+----------+-------------+------+------------+
    1 row in set (0.16 sec)
    
  • WHERE子句中,字符和日期要包含在单引号中。

2.比较运算

操作符含义
==
>大于
>=大于等于
小于
<=小于等于
< > 不等于
between...and..在两个值之间
in等于值列表中的一个
like模糊查询
is null 空值

注意点:

  • BETWEEN a AND b表达一个闭区间 [a,b]
  • select * from student where sno between 101 and 105;

  • IN运算显示列表中规定的值
  • select * from student where sno in(1,103,108); --顺序不同,效率不同,尽量把出现概率高的放前
    面

  • LIKE 运算选择类似的值 选择条件可以包含字符或数字 %代表一个或多个字符 _代表一个字符
  • ‘%’和‘-’可以同时使用

3.逻辑运算

操作符含义
and逻辑并
or逻辑或
not逻辑否
and: select * from student where sno>=108 and ssex="man";

4.优先级

  • 1 算术运算符(+ - * /)
  • 2连接符(“||"将不同列的数据合为一列)CONCAT
  • 3 比较符 (< > =)
  • 4 IS [NOT] NULL, LIKE, [NOT] IN
  • 5 [NOT] BETWEEN
  • 6 NOT
  • 7 AND
  • 8 OR

5.常用数学函数:

count(*) 
avg() 平均值 
sum() 求和

三.数据排序

1.单个列排序 ORDER BY 排序标准(字段) 排序方式; 

        ORDER BY 子句在SELECT语句的结尾

               排列的方式:ASC 升序,DESC 降序

select * from 表名 order by 字段;

 代码:

select * from mdm ORDER BY ac_id desc;

2.多个列排序 ORDER BY 排序标准 1 排序方式,排序标准 2 排序方式

        先按第一个条件排,第一个相同再按第二个排。

select * from mdm ORDER BY ac_id ASC,ac_no desc;

3.按别名排序

select ac_id,ac_id *2 test from mdm_ac_rel order by test;

四.子查询


  • 子查询是一个 SELECT 查询
  • 其作用是把返回值嵌套在 SELECT、INSERT、UPDATE、DELETE 语句或其它子查询中。
  • 任何允许使用表达式的地方都可以使用子查询。
  • 语法:SELECT 字段FROM 表名 WHERE 字段 +运算符 (select 字段 from 表名 where 条件)

注意:

  • 子查询在主查询之前执行完成。 子查询的结果被主查询使用。
  • 子查询要包含在括号里面。 将子查询要放在比较条件的右边 单行操作符对应单行子查询,多行操作符对应多行子查询
  • 子查询按照查询的返回结果可分为单行子查询和多行子查询; 两者的区别就是单行子查询每次只返回一行数据,而多行子查询每次返回多行数据;
  • 例子
    select * from student where sno = (select ac_id from mdm_ac_rel where ac_id=1); 

    • 多行子查询:返回多行操作符
    • 含义 IN 等于列表中的任何一个 ANY 和子查询返回的任意一个值比较 ALL 和子查询返回的所有值比较
  • IN       等于列表中的任何一个
  • ANY   和子查询返回的任意一个值比较
  • ALL    和子查询返回的所有值比较
select * from mdm_ac_rel where ac_id in (select sno from student); 
select * from mdm_ac_rel where ac_id >any (select sno from student); 
select * from mdm_ac_rel where ac_id >all (select sno from student where sno=1);

五.多表查询

  • 目的是从多个表中查询到数据。
  • 当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回

区分重复的列名:

elect a.ac_no,b.bal from mdm a ,dd_mst b where a.ac_id=b.ac_id; 
  1. (1)使用表名前缀在多个表中区分相同的列。
  2. (2)使用表名可以提高效率。
  3. (3)在不同表中具有相同列名的列可以用别名加以区分。 为了连接n个表,至少需要n-1个连接条件 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值
  4. 例如:
    a.ac_id= b.ac_id 

2. 内连接:

  • 两个表(或连接)中某一数据项相等的连接称为内连接。
  • 等值连接一般用where字句设置条件,
  • 内连接一般用on字句设置条件,但内连接与等值连接效果是相同的。
  • 语法格式: SELECT 显示的字段 from 表名1 inner join 表名2 on 连接条件
  • 简写形式:SELECT 显示的字段 from 表名1 ,表名2 where 连接条件

3.非等值连接: 连接运算符包括:>、>=、<=、<、!>、!<和<>

4.外连接:

  • 使用外连接可以查询不满足连接条件的数据。
  • 外链接的结果集等于内链接的结果集加匹配不上的记录(一个也不能少)
  • *外连接的符号是 (+)。把(+)对面表的数据全部匹配出来; *传统的外连接分为左外连接和右外连接两种。
  • 两个表在连接过程中除返回满足连接条件的行为外,还返回左表中不满足条件的行为,这种连接称为左外连接. 两个表在连接过程中除返回满足连接条件的行为外,还返回右表中不满足条件的行为,这种连接称为右外连接.

5.自然连接:

是一种特殊的等值连接,他要求多个表有相同的属性字段,然后条件为相同的属性字段值相等,最后再将表中重复的属性字段去掉,即为自然连接。

 

举报

相关推荐

0 条评论