MySQL基本操作(增删改查)

一、MySQL基本命令

1.1 查看MySQL中所有数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| nacos_devtest      |
| performance_schema |
| qfshops            |
| springboot         |
| sys                |
+--------------------+
7 rows in set (0.05 sec)

1.2 创建自定义数据库

1.2.1 创建mydb1数据库
mysql> create database mydb1;
Query OK, 1 row affected (0.11 sec)
1.2.2 创建数据库并设置编码格式为gbk
mysql> create database mydb2 character set gbk;
Query OK, 1 row affected (0.01 sec)

1.2.3 如果存在则不创建,否则创建

mysql> create database if not exists mydb3;
Query OK, 1 row affected (0.01 sec)
查看创建语法帮助

在命令行模式下,我们可能记不清参数格式,所以一定要养成查看帮助的习惯

mysql> help create database
Name: 'CREATE DATABASE'
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

CREATE DATABASE creates a database with the given name. To use this
statement, you need the CREATE privilege for the database. CREATE
SCHEMA is a synonym for CREATE DATABASE.

URL: http://dev.mysql.com/doc/refman/5.7/en/create-database.html

1.3 查看数据库的创建信息

mysql> show create database mydb2;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| mydb2    | CREATE DATABASE `mydb2` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)

1.4 修改数据库

1.4.1 修改数据库的编码字符集character

mysql> alter database mydb2 character set UTF8;
Query OK, 1 row affected (0.00 sec)

mysql> show create database mydb2;
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| mydb2    | CREATE DATABASE `mydb2` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)

1.5 删除数据库

mysql> drop database mydb3;
Query OK, 0 rows affected (0.02 sec)

1.6 进入数据库中的某个库

mysql> use mydb1;

1.7 查看当前使用的数据库

mysql> use mydb1;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| mydb1      |
+------------+
1 row in set (0.01 sec)

二、MySQL基本查询

关系结构数据库是以表格进行数据存储,表格由行和列组成;执行查询语句返回的结果集是一张虚拟表

2.1 基本查询

语法:select 列名 from 表明;

2.1.1 查询部分列
#查询员⼯表中所有员⼯的编号、名字、邮箱
select employee_id,first_name,email FROM t_employees;
2.1.2 查询所有列

生产环境下,优先使用列名查询。*的方式到SQL执行时还是会转成列名,效率低,可读性差。

#查询员⼯表中所有员⼯的所有信息(所有列)
select 所有列的列名 FROM t_employees;
select * FROM t_employees;

2.2 对列中的数据进行运算

#查询员⼯表中所有员⼯的编号、名字、年薪(乘以12)
select employee_id , first_name , salary * 12 FROM t_employees;
算数运算符描述
+两列做加法运算
-两列做减法运算
*两列做乘法运算
/两列做除法运算

注意:%是占位符,⽽⾮模运算符。

2.3 列的别名

列名 as 别名

#查询员⼯表中所有员⼯的编号、名字、年薪(列名均为中⽂)
select employee_id as "编号", first_name as "名字", salary*12 as "年薪" 
from t_employees;

2.4 查询结果去重

DISTINCT 列名(distinct)

去重里面可以根据聚合函数的结果,或者是列的运算结果后进行去重

#查询员⼯表中所有经理的ID。
select DISTINCT manager_id from t_employees;

2.5 排序查询

语法:SELECT 列名 FROM 表名 ORDER BY 排序列 [排序规则]

排序规则描述
ASC对前⾯排序列做升序排序
DESC对前⾯排序列做降序排序
2.5.1 依据单列排序
#查询员⼯的编号,名字,薪资。按照⼯资⾼低进⾏降序排序。
SELECT employee_id , first_name , salary 
FROM t_employees
ORDER BY salary DESC;
2.5.2 依据多列排序

先按照前面的字段排序,如果有相等存在,在按照后面的进行排序

#查询员⼯的编号,名字,薪资。按照⼯资⾼低进⾏升序排序(薪资相同时,按照编号进⾏升序排序)。
select employee_id , first_name , salary 
from t_employees
order by salary DESC, employee_id ASC;

2.6 条件查询

语法:SELECT 列名 FROM 表名 WHERE 条件

先执行from,再执行where,最后执行select

关键字描述
WHERE条件在查询结果中,筛选符合条件的查询结果,条件为布尔表达式
2.6.1 等值判断
#查询薪资是11000的员⼯信息(编号、名字、薪资)
select employee_id , first_name , salary 
from t_employees
where salary = 11000;
2.6.2 逻辑判断
#查询薪资是11000并且提成是0.30的员⼯信息(编号、名字、薪资)
select employee_id , first_name , salary 
from t_employees
where salary = 11000 and commission_pct = 0.30;
2.6.3 不等值判断(>、<、>=、<=、!=、<>)
#查询员⼯的薪资在6000~10000之间的员⼯信息(编号,名字,薪资)
select employee_id , first_name , salary 
from t_employees
where salary >=6000 and salary <=10000;
2.6.4 区间判断(between and)
#查询员⼯的薪资在6000~10000之间的员⼯信息(编号,名字,薪资)
select employee_id , first_name , salary 
from t_employees
where salary BETWEEN 6000 AND 10000; #闭区间,包含区间边界的两个值

注意:在区间判断语法中,⼩值在前,⼤值在后,反之,得不到正确结果

2.6.5 NULL值判断(IS NULL、IS NOT NULL)

列名 IS NULL

列名 IS NOT NULL //非空

#查询没有提成的员⼯信息(编号,名字,薪资,提成)
select employee_id , first_name , salary , commission_pct 
from t_employees
where commission_pct is NULL;
2.6.6 枚举查询(IN (值1,值2,值3 ))
#查询部⻔编号为70、80、90的员⼯信息(编号,名字,薪资,部⻔编号)
SELECT employee_id , first_name , salary , department_id 
FROM t_employees
WHERE department_id IN(70,80,90);

注意:in的查询效率较低,可通过多条件拼接

2.6.7 模糊查询

LIKE _(单个任意字符) :

​ 列名 LIKE ‘张_’

LIKE %(任意⻓度的任意字符) :

​ 列名 LIKE ‘张%’ 可以组合not

注意:模糊查询只能和LIKE关键字结合使⽤

#查询名字以"L"开头的员⼯信息(编号,名字,薪资,部⻔编号)
select employee_id , first_name , salary , department_id 
from t_employees
where first_name LIKE 'L%';
#查询名字以"L"开头并且⻓度为4的员⼯信息(编号,名字,薪资,部⻔编号)
selet employee_id , first_name , salary , department_id 
from t_employees
where first_name LIKE 'L___';
2.6.8 分⽀结构查询
CASE
    WHEN 条件 1 THEN 结果1 
    WHEN 条件 2 THEN 结果2
    WHEN 条件 3 THEN 结果3
    ELSE 结果
END

注意:通过使⽤CASE END进⾏条件判断,每条数据对应⽣成⼀个值。

#查询员⼯信息(编号,名字,薪资,薪资级别<对应条件表达式⽣成>)
SELECT employee_id , first_name , salary , department_id ,
    CASE
        WHEN salary>=10000 THEN 'A'
        WHEN salary>=8000 AND salary<10000 THEN 'B'
        WHEN salary>=6000 AND salary<8000 THEN 'C'
        WHEN salary>=4000 AND salary<6000 THEN 'D'
        ELSE 'E'
    END as "LEVEL" 
FROM t_employees;

注意:判断哪一个字段,select后面就不要再查询该字段

2.7 时间查询

语法:SELECT 时间函数([参数列表])

执⾏时间函数查询,会⾃动⽣成⼀张虚表(⼀⾏⼀列)

时间函数描述
SYSDATE()当前系统时间(年、⽉、日、时、分、秒)
CURDATE()获取当前⽇期
CURTIME()获取当前时间
WEEK(DATE)获取指定⽇期为⼀年中的第⼏周
YEAR(DATE)获取指定⽇期的年份
HOUR(TIME)获取指定时间的⼩时值
MINUTE(TIME)获取时间的分钟值
DATEDIFF(DATE1,DATE2)获取DATE1和DATE2之间相隔的天数
ADDDATE(DATE,N)计算DATE加上N天后的⽇期
2.7.1 查询当前时间(年-月-日 时:分:秒)
mysql> select sysdate();
+---------------------+
| sysdate()           |
+---------------------+
| 2021-10-10 03:00:36 |
+---------------------+
1 row in set (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2021-10-10 03:00:56 |
+---------------------+
1 row in set (0.01 sec)
2.7.2 查询当前日期(年-月-日)
mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2021-10-10 |
+------------+
1 row in set (0.01 sec)
2.7.3 查询当前时间(时:分:秒)
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 03:02:44  |
+-----------+
1 row in set (0.00 sec)
2.7.4 获取指定日期为当年第几周
mysql> select week(curdate());
+-----------------+
| week(curdate()) |
+-----------------+
|              41 |
+-----------------+
1 row in set (0.01 sec)

mysql> select week('2021-1-5');
+------------------+
| week('2021-1-5') |
+------------------+
|                1 |
+------------------+
1 row in set (0.00 sec)
2.7.5 获取指定日期年份
mysql> select year(sysdate());
+-----------------+
| year(sysdate()) |
+-----------------+
|            2021 |
+-----------------+
1 row in set (0.00 sec)

mysql> select year('1997-11-11');
+--------------------+
| year('1997-11-11') |
+--------------------+
|               1997 |
+--------------------+
1 row in set (0.00 sec)
2.7.6 获取指定时间的小时值
mysql> select hour(sysdate());
+-----------------+
| hour(sysdate()) |
+-----------------+
|               3 |
+-----------------+
1 row in set (0.00 sec)

mysql> select hour('12:14:59');
+------------------+
| hour('12:14:59') |
+------------------+
|               12 |
+------------------+
1 row in set (0.00 sec)
2.7.7 获取时间的分钟值
mysql> select minute('12:14:59');
+--------------------+
| minute('12:14:59') |
+--------------------+
|                 14 |
+--------------------+
1 row in set (0.00 sec)
2.7.8 获取DATE1和DATE2之间相隔的天数
mysql> select datediff(curdate(), '1997-11-11');
+-----------------------------------+
| datediff(curdate(), '1997-11-11') |
+-----------------------------------+
|                              8734 |
+-----------------------------------+
1 row in set (0.00 sec)
2.7.9 计算DATE加上N天后的日期
mysql> select adddate(sysdate(), 5);
+-----------------------+
| adddate(sysdate(), 5) |
+-----------------------+
| 2021-10-15 03:14:11   |
+-----------------------+
1 row in set (0.01 sec)

2.8 字符串查询

语法:SELECT 字符串函数([参数列表])

字符串函数说明
concat(str1,str2,str…)将多个字符串连接
INSERT(str,pos,len,newStr)将str中指定pos位置开始len⻓度的内容替换为newStr
LOWER(str)将指定字符串转换为⼩写
UPPER(str)将指定字符串转换为⼤写
substing(str,num,len)将str字符串指定num位置开始截取len个内容
2.8.1 字符串拼接
mysql> select concat('my','s','ql');
+-----------------------+
| concat('my','s','ql') |
+-----------------------+
| mysql                 |
+-----------------------+
1 row in set (0.01 sec)
2.8.2 字符串替换
mysql> select insert('javacpython',1,4,'mysql');
+-----------------------------------+
| insert('javacpython',1,4,'mysql') |
+-----------------------------------+
| mysqlcpython                      |
+-----------------------------------+
1 row in set (0.00 sec)
2.8.3 将大写转为小写
mysql> select lower('MYSQL');
+----------------+
| lower('MYSQL') |
+----------------+
| mysql          |
+----------------+
1 row in set (0.00 sec)
2.8.4 将小写转为大写
mysql> select upper('mysql');
+----------------+
| upper('mysql') |
+----------------+
| MYSQL          |
+----------------+
1 row in set (0.00 sec)
2.8.5 指定范围截取数据
mysql> select substring('Java#Mysql',1,4);
+-----------------------------+
| substring('Java#Mysql',1,4) |
+-----------------------------+
| Java                        |
+-----------------------------+
1 row in set (0.02 sec)

2.9 聚合函数

语法:SELECT 聚合函数(列名) FROM 表名;

注意:对多条数据的单列进⾏统计,返回统计后的⼀⾏结果。

聚合函数说明
SUM()求所有⾏中单列结果的总和
AVG()平均值
MAX()最⼤值
MIN()最⼩值
COUNT()求总⾏数
2.9.1 单列总和
#统计所有员⼯每⽉的⼯资总和
select sum(salary)
from t_employees;
2.9.2 单列平均值
#统计所有员⼯每⽉的平均⼯资
select AVG(salary)
from t_employees;
2.9.3 单列最大值
#统计所有员⼯中⽉薪最⾼的⼯资
select MAX(salary) 
from t_employees;
2.9.4 单列最小值
#统计所有员⼯中⽉薪最低的⼯资
select MIN(salary)
from t_employees;
2.9.5 总行数
#统计员⼯总数
select COUNT(*)
from t_employees;
#统计有提成的员⼯⼈数
select COUNT(commission_pct)
from t_employees;

注意:聚合函数⾃动忽略null值,不进⾏统计。

2.10 分组查询

语法:SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组依据(列);

关键字说明
GROUP BY分组依据,必须在WHERE之后⽣效
2.10.1 查询各部⻔的总⼈数
#思路:
#1.按照部⻔编号进⾏分组(分组依据是department_id)
#2.再针对各部⻔的⼈数进⾏统计(count)
SELECT department_id,COUNT(employee_id)
FROM t_employees
GROUP BY department_id;
2.10.2 查询各个部⻔、各个岗位的⼈数
#思路:
#1.按照部⻔编号进⾏分组(分组依据department_id)。
#2.按照岗位名称进⾏分组(分组依据job_id)。#3.针对每个部⻔中的各个岗位进⾏⼈数统计(count)。
SELECT department_id , job_id ,COUNT(employee_id)
FROM t_employees
GROUP BY department_id , job_id;
2.10.3 常见问题
#查询各个部⻔id、总⼈数、first_name
SELECT department_id ,COUNT(*) , first_name
FROM t_employees
GROUP BY department_id;#error

注:分组查询中,select显示的列只能是分组依据列,或者聚合函数列,不能出现其他列。

2.11 分组过滤查询Having

语法:SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组列 HAVING 过滤规则

关键字说明
HAVING过滤规则过滤规则定义对分组后的数据进⾏过滤
2.11.1 统计部⻔的最⾼⼯资
#统计60、70、90号部⻔的最⾼⼯资
#思路:
#1).确定分组依据(department_id)
#2).对分组后的数据,过滤出部⻔编号是60、70、90信息
#3).max()函数处理

SELECT department_id ,MAX(salary) 
FROM t_employees
GROUP BY department_id
HAVING department_id in(60,70,90)
# group确定分组依据department_id
#having过滤出60 70 90部⻔
#select查看部⻔编号和max函数。

having过滤的数据,要在group by分组里存在

2.11.2 Where和having的区别

Where是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用聚合函数

Having是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用聚合函数

所谓聚合函数,是对一组值进行计算并且返回单一值的函数:sum—求和,count—计数,max—最大值,avg—平均值等。

2.12 限定查询

SELECT 列名 FROM 表名 LIMIT 起始⾏,查询⾏数

关键字说明
LIMIT offset_start,row_count限定查询结果的起始⾏和总⾏数
2.12.1 查询前15行
#查询表中前五名员⼯的所有信息
SELECT * FROM t_employees LIMIT 0,5;

注意:起始⾏是从0开始,代表了第⼀⾏。第⼆个参数代表的是从指定⾏开始查询⼏⾏

2.12.2 查询范围记录
#查询表中从第四条开始,查询10⾏
SELECT * FROM t_employees LIMIT 3,10;

2.13 查询总结

SQL语句编写顺序

SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组 HAVING 过滤条件 ORDER BY 排序列(asc|descLIMIT 起始⾏,总条数

SQL语句执行顺序

1.FROM:指定数据来源表
2.WHERE:对查询数据做第⼀次过滤
3.GROUP BY:分组
4.HAVING:对分组后的数据第⼆次过滤
5.SELECT:查询各字段的值
6.ORDER BY:排序
7.LIMIT:限定查询结果

三、MySQL高级查询

3.1 子查询

3.1.1 作为条件判断

SELECT 列名 FROM 表名 WHERE 条件(⼦查询结果)

3.1.1.1 查询⼯资⼤于Bruce的员⼯信息
#1.先查询到Bruce的⼯资(⼀⾏⼀列)
SELECT SALARY FROM t_employees WHERE FIRST_NAME ='Bruce';#⼯资是6000
#2.查询⼯资⼤于Bruce的员⼯信息
SELECT * FROM t_employees WHERE SALARY >6000;
#3.将1、2两条语句整合
SELECT * FROM t_employees WHERE SALARY >SELECT SALARY FROM t_employees WHERE FIRST_NAME ='Bruce';
  • 注意:将⼦查询”⼀⾏⼀列“的结果作为外部查询的条件,做第⼆次查询
  • ⼦查询得到⼀⾏⼀列的结果才能作为外部查询的等值判断条件或不等值条件判断
3.1.2 作为枚举查询条件

SELECT 列名 FROM 表名 Where 列名 in(⼦查询结果);

3.1.2.1 查询与名为’King’同⼀部⻔的员⼯信息
#思路:
#1.先查询'King'所在的部⻔编号(多⾏单列)
SELECT department_id FROM t_employees
WHERE last_name ='King'; //部⻔编号:80、90
#2.再查询80、90号部⻔的员⼯信息
SELECT employee_id , first_name , salary , department_id 
FROMt_employees
WHERE department_idin(80,90);
#3.SQL:合并
SELECT employee_id , first_name , salary , department_id 
FROM t_employees
WHERE department_id in(SELECT department_id c from t_employees WHERE last_name ='King');#N⾏⼀列
  • 将⼦查询”多⾏⼀列“的结果作为外部查询的枚举查询条件,做第⼆次查询
3.1.2.2 ⼯资⾼于60部⻔所有⼈的信息
#1.查询60部⻔所有⼈的⼯资(多⾏多列)
SELECT SALARY from t_employees WHERE DEPARTMENT_ID=60;

#2.查询⾼于60部⻔所有⼈的⼯资的员⼯信息(⾼于所有)
select * from t_employees where SALARY >ALL(select SALARY from t_employees WHERE DEPARTMENT_ID=60);

#。查询⾼于60部⻔的⼯资的员⼯信息(⾼于部分)
select * from t_employees where SALARY > ANY(select SALARY from t_employees WHERE DEPARTMENT_ID=60);

注意:当⼦查询结果集形式为多⾏单列时可以使⽤ANY或ALL关键字

all和所有值都要比,any是比其中一个大就行(符合一个就行)

3.1.3 作为一张表

SELECT 列名 FROM(⼦查询的结果集)WHERE 条件;

3.1.3.1 查询员⼯表中⼯资排名前5名的员⼯信息
#思路:
#1.先对所有员⼯的薪资进⾏排序(排序后的临时表)
select employee_id , first_name , salary
from t_employees
order by salarydesc
#2.再查询临时表中前5⾏员⼯信息
select employee_id , first_name , salary 
from (临时表)
limit 0,5;
#SQL:合并
select employee_id , first_name , salary
from (select employee_id , first_name , salary from t_employees order by salary desc) as temp limit 0,5;
  • 将⼦查询”多⾏多列“的结果作为外部查询的⼀张表,做第⼆次查询。
  • 注意:⼦查询作为临时表,必须为其赋予⼀个临时表名

3.2 合并查询

SELECT * FROM 表名1 UNION SELECT * FROM 表名2

SELECT * FROM 表名1 UNION ALL SELECT * FROM 表名2

3.2.1 合并两张表的结果(去除重复记录)
#合并两张表的结果,去除重复记录
SELECT * FROM t1 UNION SELECT * FROM t2;

注意:合并结果的两张表,列数必须相同,列的数据类型可以不同

3.2.2 合并两张表的结果(保留重复记录)
#合并两张表的结果,不去除重复记录(显示所有)
SELECT * FROM t1 UNION ALL SELECT * FROM t2;

经验:使⽤UNION合并结果集,会去除掉两张表中重复的数据

3.3 表连接查询

SELECT 列名 FROM 表1 连接⽅式 表2 ON 连接条件

3.3.1 内连接查询(INNER JOIN ON)

两个表要有相同的数据才会显示,不会以某一个表的数据为主

#1.查询所有有部⻔的员⼯信息(不包括没有部⻔的员⼯)SQL标准
SELECT * FROM t_employees INNER JOIN t_jobs ON t_employees.JOB_ID= t_jobs.JOB_ID

#2.查询所有有部⻔的员⼯信息(不包括没有部⻔的员⼯)MYSQL
SELECT * FROM t_employees,t_jobs WHERE t_employees.JOB_ID= t_jobs.JOB_ID
  • 经验:在MySql中,第⼆种⽅式也可以作为内连接查询,但是不符合SQL标准
  • ⽽第⼀种属于SQL标准,与其他关系型数据库通⽤
  • 不会返回null值
3.3.2 三表连接查询
#查询所有员⼯⼯号、名字、部⻔名称、部⻔所在国家ID
SELECT * FROM t_employees e
INNER JOIN t_departments d 
on e.department_id= d.department_id 
INNER JOIN t_locations l
ON d.location_id= l.location_id
3.3.4 左外连接(LEFT JOIN ON)
#查询所有员⼯信息,以及所对应的部⻔名称(没有部⻔的员⼯,也在查询结果中,部⻔名称以NULL填充)
SELECT e.employee_id, e.first_name, e.salary, d.department_name FROM t_employees e 
LEFT JOIN t_departments d
ON e.department_id= d.department_id;
  • 注意:左外连接,是以左表为主表,依次向右匹配,匹配到,返回结果
  • 匹配不到,则返回NULL值填充
3.3.5 右外连接(RIGHT JOIN ON)
#查询所有部⻔信息,以及此部⻔中的所有员⼯信息(没有员⼯的部⻔,也在查询结果中,员⼯信息以NULL填充)
SELECT e.employee_id, e.first_name, e.salary, d.department_name FROM t_employees e 
RIGHT JOIN t_departments d
ON e.department_id= d.department_id;
  • 注意:右外连接,是以右表为主表,依次向左匹配,匹配到,返回结果
  • 匹配不到,则返回NULL值填充

四、MySQL新增

4.1 新增

INSERT INTO 表名(列1,列2,列3…) VALUES(值1,值2,值3…);

4.1.1 添加一条消息
#添加⼀条⼯作岗位信息
INSERT INTO t_jobs(JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY) VALUES('JAVA_Le','JAVA_Lecturer',2500,9000);
#添加⼀条员⼯信息
INSERTINTO`t_employees`
(EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,PHONE_NUMBER,HIRE_DATE,JOB_ID,SALARY,COMMISSION_PCT,MANAGER_ID,DEPARTMENT_ID)
VALUES
('194','Samuel','McCain','SMCCAIN','650.501.3876','1998-07-01','SH_CLERK','3200',NULL,'123','50');
  • 注意:表名后的列名和VALUES⾥的值要⼀⼀对应(个数、顺序、类型)
  • 如果这一个值是主键,可以忽略

五、MySQL修改

5.1 修改

UPDATE 表名 SET 列1=新值1 ,列2 =新值2,… WHERE 条件;

5.1.1 修改⼀条信息
#修改编号为100的员⼯的⼯资为25000
UPDATE t_employees SET SALARY =25000 WHEREE MPLOYEE_ID ='100';

#修改编号为135的员⼯信息岗位编号为ST_MAN,⼯资为3500
UPDATE t_employees SET JOB_ID=ST_MAN,SALARY =3500 WHEREE MPLOYEE_ID ='135';

注意:SET后多个列名=值,绝⼤多数情况下都要加WHERE条件,指定修改,否则为整表更新

六、MySQL删除

6.1 删除

DELETE FROM 表名 WHERE 条件;

6.1.1 删除一条信息
#删除编号为135的员⼯
DELETE FROM t_employees WHERE EMPLOYEE_ID='135';
#删除姓Peter,并且名为Hall的员⼯
DELETE FROM t_employees WHERE FIRST_NAME ='Peter' AND LAST_NAME='Hall';

注意:删除时,如若不加WHERE条件,删除的是整张表的数据

6.2 清空整张表数据

TRUNCATE TABLE 表名;

6.2.1 清空整张表
#清空t_countries整张表
TRUNCATE TABLE t_countries;

注意:与DELETE不加WHERE删除整表数据不同,TRUNCATE是把表销毁,再按照原表的格式创建⼀张新表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值