Mysql数据库基础

Posted 乐之之

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql数据库基础相关的知识,希望对你有一定的参考价值。

一、关系

  将实体与实体的关系,反应到最终数据库表的设计上来:

  将关系分成三种:

  • 一对一
  • 一对多(多对一)
  • 多对多

  所有的关系都是指的表与表之间的关系。

1、一对一

  一对一:一张表的一条记录一定只能与另外一张表的一条记录进行对应;反之亦然。

  学生表:姓名,性别,年龄,身高,体重,婚姻状况,籍贯,家庭住址,紧急联系人。

id 姓名 性别 年龄 体重 身高 婚姻 籍贯 住址 联系人
                   

  其中姓名、性别、年龄、身高、体重属于常用数据

  但是婚姻、籍贯、住址、联系人属于不常用数据

如果每次查询都是查询所有数据、不常用的数据就会影响效率、 实际又不用。

  • 解决方案:将常用的和不常用的信息分离存储,分成两张表

    • 常用信息表

id 姓名 性别 年龄 体重 身高
           
  • 不常用信息表:

  • 保证不常用信息与常用信息一定能够对应上(找一个具有唯一性的字段来共同连接两张表)

id 婚姻 籍贯 住址 联系人
         

2、一对多

  一对多:一张表中有一条记录可以对应另外一张表中的多条记录;但是返回过,另外一张表的一条记录只能对应第一张表的一条记录。这种关系就是一对多或者多对一。

母亲与孩子的关系:

妈妈表:

id 名字 年龄 电话
       

孩子表:

id 名字 年龄 电话
       

  以上关系:一个妈妈可以在孩子表中找到多条记录(也有可能是一条);但是一个孩子只能找到一个妈妈:是一种典型的一对多的关系。

  但是以上设计,解决了实体的设计表问题,但是没有解决关系问题,孩子找不出妈,妈也找不到孩子。

解决方案:

  • 在某一张表中增加一个字段,能够找到另外一张表的中记录

  • 应该在孩子表中增加一个字段指向妈妈表(外键)

    孩子表:

id 名字 年龄 电话 妈妈id
        妈妈表的主键

3、多对多

  多对多:一张表中(A)的一条记录能够对应另外一张表(B)中的多条记录;同时B表中的一条记录也能对应A表中的多条记录: 多对多的关系。

老师与学生的关系:

老师表:

id 姓名 性别 电话
1 张老师 88888888888
2 李老师 99999999999

学生表:

id 姓名 性别 电话
1 张三 12312312312
2 李四 32132132132

  以上设计方案:实现了实体的设计,但是没有维护实体的关系。

一个老师教过多个学生;一个学生也被多个老师教过。

  • 解决方案:

    • 增加一张新表: 专门维护两张表之间的关系

    • 这张表就叫做中间表

中间表:

id t_id(老师id) s_id(学生id)
1 1 1
2 1 2
3 2 1
4 2 2

  增加中间表之后:中间表与老师表形成了一对多的关系:而且中间表是多表,维护了能够唯一找到一表的关系;同样的,学生表与中间表也是一个一对多的关系:一对多的关系可以匹配到关联表之间的数据。

二、范式

  范式:是一种离散数学中的知识,是为了解决一种数据的存储与优化的问题,保存数据的存储之后,凡是能够通过关系找出来的数据,坚决不再重复储存,终极目标是为了减少数据的冗余。

  范式也是一种分层结构的规范,分为六层,每一次层都比上一层更加严格,若要满足下一层范式,前提是满足上一层范式。

  六层范式:1NF、2NF、3NF、4NF、5NF、6NF

  1NF是最底层,要求最低;6NF最高层,最严格。

  范式在数据库的设计当中是有指导意义: 但是不是强制规范。

注意:我们掌握前三个范式即可。

1、1NF

第一范式

  • 属性不可分割

  • 即每个属性都是不可分割的原子项。(实体的属性即表中的列)

原子性:

  • 数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性。

讲师排课表:

讲师 性别 班级 教室 代课时间 时间区间(开始,结束)
苯环 male python2301 p01 50天 x年x月x日—x年x月x日
萧何 male python2302 p02 50天 x年x月x日—x年x月x日
蓝桥 male python2303 p03 50天 x年x月x日—x年x月x日

  上表设计不存在问题,但是如果需求是将数据查出来之后,要求显示一个老师从什么时候开始上课,到什么时候节课,需要将代课时间进行拆分,不符合1NF,数据不具有原子性,可以再拆分。

  • 解决办法:将排课时间区间拆分成两个字段就解决问题。

讲师 性别 班级 教室 代课时间 开始 结束
苯环 male python2301 p01 50天 x年x月x日 x年x月x日
萧何 male python2302 p02 50天 x年x月x日 x年x月x日
蓝桥 male python2303 p03 50天 x年x月x日 x年x月x日

2、2NF

第二范式

  • 满足第一范式

  • 第二范式需要确保数据表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言),每张表只描述一件事情;

  • 消除部分依赖,要求一张表中的每一列都完全依赖于主键(针对于组合主键),也就是不会出现某一列只和部分主键相关。

简单理解一下:

  • 唯一性:数据表中的每条记录必须是唯一的。

  • 为了实现区分,通常要为表加上一个列来存储唯一标识,这个唯一属性列被称作主键列

案例1:

  • 学号为001的学生在2023-01-10考试第一次58没及格,然后当天补考第二次还是60没及格,于是数据库就有了重复的数据。解决办法就是添加一个考试流水号,让数据变得唯一。

学号 考试成绩 日期
001 60 2023-01-10
001 60 2023-01-10

 

考试流水号 学号 考试成绩 日期
20230110335 001 60 2023-01-10
20230110567 001 60 2023-01-10

3、3NF

第三范式

  • 满足第一范式和第二范式

  • 第三范式需要确保数据表中的每一列数据表和主键直接相关,而不能间接相关。

  • 消除传递依赖,要求一张表中的每一列都和主键是直接依赖的,不是间接依赖。

简单理解:

  • 关联性:每列都与主键有直接关系,不存在传递依赖。

案例1:

  • 根据主键爸爸能关联儿子女儿,但是女儿的玩具、衣服都不是依赖爸爸的,而是依赖女儿的,这些东西不是与爸爸有直接关系,所以拆分两个表。

    儿子女儿依赖于爸爸,女儿的玩具、衣服依赖于女儿。

爸爸 儿子 女儿 女儿的玩具 女儿的衣服
张三 张小山 张婷婷 芭比娃娃 校服

拆分后:

爸爸 儿子 女儿
张三 张小山 张婷婷

 

儿女 女儿的玩具 女儿的衣服
张婷婷 芭比娃娃 校服

三、数据库高级操作

1、查询数据

  完整语法

Select [字段别名]/* from 数据源 [where条件子句] [group by子句] [having子句] [order by子句] [limit 子句];

(1)通用的select语句

  • select * from 表名;

(2)去重查询

  数据准备:

CREATE TABLE t_emp(
	id INT(10) PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20) NOT NULL,
	job VARCHAR(20) NOT NULL
)

INSERT INTO t_emp
	(NAME, job) 
VALUE
	(\'张三\', \'销售\'),
	(\'李四\', \'销售\'),
	(\'王五\', \'技师\'),
	(\'赵六\', \'技师\');

  假如我们查询员工职业,执行如下语句:

SELECT job FROM t_emp;

  结果如下:

 

  我们发现有很多重复的记录,因为职业是有可能相同的。

此时我们加上distinct,继续执行。

SELECT DISTINCT job FROM t_emp;

结果如下:

注意:

  • distinct关键字只能在select子句中使用一次

  • distinct关键字只能写在select子句的第一个字段前面

(3)聚合查询

  通过聚合函数进行聚合查询。

  聚合函数在数据查询分析中,应用十分广泛。

  聚合函数可以对数据求和、求最大值和最小值、求平均值等等。

SQL提供了如下聚合函数:

  • Count(): 统计每一组有多少记录

  • Max(): 统计每组中非空的最大值

  • Min(): 统计非空的最小值

  • Avg(): 统计平均值

  • Sum(): 统计和

数据准备:

CREATE TABLE t_emp(
	id INT(10) PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20) NOT NULL,
	job VARCHAR(20) NOT NULL,
	sal INT(20) NOT NULL
)

INSERT INTO t_emp
	(NAME, job, sal) 
VALUE
	(\'张三\', \'销售\', 1000),
	(\'李四\', \'销售\', 2000),
	(\'王五\', \'技师\', 3000),
	(\'赵六\', \'技师\', 4000);

案例1:查询公司员工平局工资

SELECT AVG(sal) FROM t_emp;

案例2:月收入最高的员工

SELECT MAX(sal) FROM t_emp;

(4)分组查询

  Group by:主要用来分组查询,,通过一定的规则将一个数据集划分为若干个小的区域,然后针对每个小区域分别进行数据汇总处理。也就是根据某个字段进行分组(相同的放一组,不同的分到不同的组)

案例1:根据不同的 job 分组显示平均工资

SELECT job, ROUND(AVG(sal)) FROM t_emp GROUP BY job;
/*round四舍五入为整数*/

(5)排序查询

  Order by: 排序,根据某个字段进行升序或者降序排序。

基本使用语法:

  • 单字段排序

Order by 字段名 [asc|desc]; -- asc是升序(默认的),desc是降序
  • 多字段排序
Order by 字段名1, 字段名2, 字段名3 [asc|desc]; -- asc是升序(默认的),desc是降序

(6)分页查询

  Limit:子句是一种限制结果的语句,用来做数据分页的。

  可以事先多准备一点数据。

  Limit有两种使用方式:

  • 方案1:只用来限制长度(数据量)

  • 语法:limit 数据量

SELECT * FROM t_emp LIMIT 2;

  • 方案2:限制起始位置,限制数量

  • 语法:limit 起始位置,长度

SELECT * FROM t_emp LIMIT 2, 3;

2、多表查询

  MySQL语句学习的难点和重点就在于多表查询,同时MySQL也有诸多方法供大家选择(联结表、左连接、右连接……)还是子查询(SELECT子查询、WHERE子查询、FROM子查询),掌握一种方法达到目的即可,当然其他方法也需要理解,本节将阐述完整的多表查询方法。

 (1)数据准备

首先准备一个数据库

  • 创建公司表

#创建数据库,可忽略,一般用不到
CREATE DATABASE test;
use test;
#创建数据表company
CREATE TABLE company (
	id INT PRIMARY KEY,
	name VARCHAR(255) NOT NULL
);
#新增数据
INSERT INTO company VALUES(1,\'IBM\');
INSERT INTO company VALUES(2,\'HP\');
  • 创建员工表
#创建数据表menber
CREATE TABLE menber(
    id INT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    sal DOUBLE(10,2),
    comid INT,
    FOREIGN KEY(comid) REFERENCES company(id)
);
#新增数据
INSERT INTO menber VALUES(101,\'小李\',3000,1);
INSERT INTO menber VALUES(102,\'小王\',4000,1);
INSERT INTO menber VALUES(103,\'小刘\',5000,2);
INSERT INTO menber VALUES(104,\'小孙\',5000,2);

(2)联结

  应用:查询IBM的员工信息

SELECT 
	m.*
FROM 
	company c, menber m
WHERE 
	c.id = m.comid AND c.name = \'IBM\';

结果:

拓展:(笛卡尔积)

SELECT * FROM company, menber

结果:

(3)左外连接查询

  左表是主表、左表中满足条件的记录会查询出来、左表中【不满足】条件的也会查出来,运行结果也以左表为主。

格式:

select 字段 from 表1 left join 表2 on 表1.字段1 = 表2.字段2
SELECT
	*
FROM 
	company c LEFT JOIN menber m 
ON 
	c.id = m.comid;

(4)右外连接查询

  右表是主表、右表中所有的记录会查询出来,运行结果以右表为主。

格式:

select 字段 from 表1 RIGHT JOIN 表2 on 表1.字段1 = 表2.字段2
SELECT
	*
FROM 
	menber m RIGHT JOIN company c 
ON 
	c.id = m.comid;

(5)内连接查询

  查询的是满足条件的记录。

格式:

SELECT 字段 FROM 表1 INNER JOIN 表2 ON 表1.字段1 = 表2.字段2
SELECT * FROM menber m INNER JOIN company c ON c.id = m.comid

(6)子查询

  把一个查询的结果当作另一个查询的条件。

应用:查询小刘的公司民名称

SELECT NAME FROM company WHERE id = 2;

SELECT NAME FROM company WHERE id = (SELECT comid FROM menber WHERE name = \'小刘\');

3、练习

  多表查询数据准备

-- 创建db6数据库
CREATE DATABASE db6;
-- 使用db6数据库
USE db6;

-- 创建user表
CREATE TABLE USER(
    id INT PRIMARY KEY AUTO_INCREMENT,    -- 用户id
    NAME VARCHAR(20),                    -- 用户姓名
    age INT                             -- 用户年龄
);
-- 添加数据
INSERT INTO USER VALUES (1,\'张三\',23);
INSERT INTO USER VALUES (2,\'李四\',24);
INSERT INTO USER VALUES (3,\'王五\',25);
INSERT INTO USER VALUES (4,\'赵六\',26);


-- 订单表
CREATE TABLE orderlist(
    id INT PRIMARY KEY AUTO_INCREMENT,    -- 订单id
    number VARCHAR(30),                    -- 订单编号
    uid INT,    -- 外键字段
    CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id)
);
-- 添加数据
INSERT INTO orderlist VALUES (1,\'hm001\',1);
INSERT INTO orderlist VALUES (2,\'hm002\',1);
INSERT INTO orderlist VALUES (3,\'hm003\',2);
INSERT INTO orderlist VALUES (4,\'hm004\',2);
INSERT INTO orderlist VALUES (5,\'hm005\',3);
INSERT INTO orderlist VALUES (6,\'hm006\',3);
INSERT INTO orderlist VALUES (7,\'hm007\',NULL);


-- 商品分类表
CREATE TABLE category(
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 商品分类id
    NAME VARCHAR(10)                    -- 商品分类名称
);
-- 添加数据
INSERT INTO category VALUES (1,\'手机数码\');
INSERT INTO category VALUES (2,\'电脑办公\');
INSERT INTO category VALUES (3,\'烟酒茶糖\');
INSERT INTO category VALUES (4,\'鞋靴箱包\');


-- 商品表
CREATE TABLE product(
    id INT PRIMARY KEY AUTO_INCREMENT,   -- 商品id
    NAME VARCHAR(30),                    -- 商品名称
    cid INT, -- 外键字段
    CONSTRAINT cp_fk1 FOREIGN KEY (cid) REFERENCES category(id)
);
-- 添加数据
INSERT INTO product VALUES (1,\'华为手机\',1);
INSERT INTO product VALUES (2,\'小米手机\',1);
INSERT INTO product VALUES (3,\'联想电脑\',2);
INSERT INTO product VALUES (4,\'苹果电脑\',2);
INSERT INTO product VALUES (5,\'中华香烟\',3);
INSERT INTO product VALUES (6,\'玉溪香烟\',3);
INSERT INTO product VALUES (7,\'计生用品\',NULL);


-- 中间表
CREATE TABLE us_pro(
    upid INT PRIMARY KEY AUTO_INCREMENT,  -- 中间表id
    uid INT, -- 外键字段。需要和用户表的主键产生关联
    pid INT, -- 外键字段。需要和商品表的主键产生关联
    CONSTRAINT up_fk1 FOREIGN KEY (uid) REFERENCES USER(id),
    CONSTRAINT up_fk2 FOREIGN KEY (pid) REFERENCES product(id)
);
-- 添加数据
INSERT INTO us_pro VALUES (NULL,1,1);
INSERT INTO us_pro VALUES (NULL,1,2);
INSERT INTO us_pro VALUES (NULL,1,3);
INSERT INTO us_pro VALUES (NULL,1,4);
INSERT INTO us_pro VALUES (NULL,1,5);
INSERT INTO us_pro VALUES (NULL,1,6);
INSERT INTO us_pro VALUES (NULL,1,7);
INSERT INTO us_pro VALUES (NULL,2,1);
INSERT INTO us_pro VALUES (NULL,2,2);
INSERT INTO us_pro VALUES (NULL,2,3);
INSERT INTO us_pro VALUES (NULL,2,4);
INSERT INTO us_pro VALUES (NULL,2,5);
INSERT INTO us_pro VALUES (NULL,2,6);
INSERT INTO us_pro VALUES (NULL,2,7);
INSERT INTO us_pro VALUES (NULL,3,1);
INSERT INTO us_pro VALUES (NULL,3,2);
INSERT INTO us_pro VALUES (NULL,3,3);
INSERT INTO us_pro VALUES (NULL,3,4);
INSERT INTO us_pro VALUES (NULL,3,5);
INSERT INTO us_pro VALUES (NULL,3,6);
INSERT INTO us_pro VALUES (NULL,3,7);
INSERT INTO us_pro VALUES (NULL,4,1);
INSERT INTO us_pro VALUES (NULL,4,2);
INSERT INTO us_pro VALUES (NULL,4,3);
INSERT INTO us_pro VALUES (NULL,4,4);
INSERT INTO us_pro VALUES (NULL,4,5);
INSERT INTO us_pro VALUES (NULL,4,6);
INSERT INTO us_pro VALUES (NULL,4,7);
  • 查询用户的编号、姓名、年龄、订单编号
/*
分析:
    用户的编号、姓名、年龄  user表     订单编号 orderlist表
    条件:user.id = orderlist.uid
*/
SELECT
    t1.`id`,    -- 用户编号
    t1.`name`,    -- 用户姓名
    t1.`age`,    -- 用户年龄
    t2.`number`    -- 订单编号
FROM
    USER t1,       -- 用户表
    orderlist t2   -- 订单表
WHERE
    t1.`id` = t2.`uid`;
  • 查询用户年龄大于23岁的信息。显示用户的编号、姓名、年龄。订单编号
/*
分析:
    用户的编号、姓名、年龄 user表     订单编号 orderlist表
    条件:user.age > 23 AND user.id = orderlist.uid
*/
/*
select
    t1.`id`,    -- 用户编号
    t1.`name`,    -- 用户姓名
    t1.`age`,    -- 用户年龄
    t2.`number`    -- 订单编号
from
    user t1,     -- 用户表
    orderlist t2 -- 订单表
where
    t1.`age` > 23
    and
    t1.`id` = t2.`uid`;
*/
SELECT
    t1.`id`,    -- 用户编号
    t1.`name`,    -- 用户姓名
    t1.`age`,    -- 用户年龄
    t2.`number`    -- 订单编号
FROM
    USER t1       -- 用户表
LEFT OUTER JOIN
    orderlist t2  -- 订单表
ON
    t1.`id` = t2.`uid`
WHERE
    t1.`age` > 23;
  • 查询商品分类的编号、分类名称。分类下的商品名称
/*
分析:
    商品分类的编号、分类名称 category表     分类下的商品名称 product表
    条件:category.id = product.cid
*/
SELECT
    t1.`id`,    -- 分类编号
    t1.`name`,    -- 分类名称
    t2.`name`    -- 商品名称
FROM
    category t1,    -- 商品分类表
    product t2        -- 商品表
WHERE
    t1.`id` = t2.`cid`;

 

Mysql基础1

一、数据库简介
1、Structured Query Language (结构化查询语言)
2、SQL:工业标准。(各个数据库厂商都支持)
SQL-Server:对标准进行了扩展。TSQL 方言
Oracle:对标准进行了扩展。PLSQL

规定:
shell>window下命令
mysql>mysql中的命令,一般以;结尾(进入数据库)

二、安装MySQL数据库
如何验证安装是否成功!
shell>mysql -u root -psorry
显示所有的数据库
mysql>SHOW DATABASES;
除了test,其他2个数据库不要动。
*****三、SQL语句
1、DDL:Data Definition Language(数据定义语言)
关键字:CREATE ALTER DROP(操作对象:数据库和表结构。就是定义数据库或表的结构)
------------------------------------------------------------------
创建一个名称为mydb1的数据库。
mysql>CREATE DATABASE mydb1;
查看数据库的创建细节
mysql>SHOW CREATE DATABASE mydb1;
创建一个使用gbk字符集的mydb2数据库。
mysql>CREATE DATABASE mydb2 CHARACTER SET gbk;
创建一个使用utf8字符集,并带校对规则的mydb3数据库。
mysql>CREATE DATABASE mydb3 CHARACTER SET utf8 COLLATE utf8_general_ci;
查看当前数据库服务器中的所有数据库
mysql>SHOW DATABASES;
查看前面创建的mydb2数据库的定义信息
mysql>SHOW CREATE DATABASE mydb2;
删除前面创建的mydb2数据库
mysql>DROP DATABASE mydb2;

查看服务器中的数据库,并把其中mydb1库的字符集修改为gbk;
mysql>ALTER DATABASE mydb1 CHARACTER SET gbk;
备份test库中的数据,并恢复

备份:
shell>mysqldump -h localhost -u root -psorry test>c:/test.sql
恢复数据库:(删除掉test数据库)
创建test数据库
mysql>CREATE DATABASE test;
mysql>USE test;
恢复:
方式一:
mysql>SOURCE C:/test.sql;
//选择数据库
mysql>USE test;
方式二:
shell>mysql -u root -psorry test<c:/test.sql

显示数据库中的所有表格
mysql>SHOW TABLES;
-------------------------------------------------
创建员工信息表
mysql>CREATE TABLE employee(
id int,
name varchar(100),
gender varchar(10),
birthday date,
entry_date date,
job varchar(100),
salary float(8,2),
resume varchar(200)
);
查看数据库中所有的表格
mysql>SHOW TABLES;
查看某张表格的结构
mysql>DESC employee;
在上面员工表的基本上增加一个image列。
mysql>ALTER TABLE employee ADD (image blob);
修改job列,使其长度为60。
mysql>ALTER TABLE employee MODIFY job varchar(60);
删除gender列。
mysql>ALTER TABLE employee DROP gender;
表名改为user。
mysql>RENAME TABLE employee TO user;
修改表的字符集为utf-8
mysql>ALTER TABLE user CHARACTER SET utf8;
列名name修改为username
mysql>ALTER TABLE user CHANGE name username varchar(100);

*2、DML:Data Manipulation Language(数据操作语言)
关键字:INSERT UPDATE DELETE(操作对象:表中的数据。就是操作表中的记录用的)
------------------------------------------------------------------
在MySQL中,字符或字符串或日期类型的数据要使用单引号引起来。关键字NULL表示空值,不同于空字符串值。‘‘
使用insert语句向表中插入三个员工的信息。
mysql>INSERT INTO user (id,username,birthday,entry_date,job,salary,resume) VALUES (1,‘huangshanshan‘,‘1992-09-08‘,‘2012-11-15‘,‘CEO‘,‘10000‘,‘beautiful girl‘);
mysql>INSERT INTO user VALUES (2,‘niuyang‘,‘1992-09-08‘,‘2012-11-15‘,‘CTO‘,‘10000‘,‘beautiful boy‘);
mysql>INSERT INTO user VALUES (3,‘于连林‘,‘1992-09-08‘,‘2012-11-15‘,‘CMO‘,‘10000‘,‘帅锅‘);
告诉服务器客户端用的编码是什么?
mysql>SET character_set_client=gbk;
查看数据
mysql>SELECT * FROM user;
解决返回的数据中文乱码
mysql>SET character_set_results=gbk;
MySQL中的各种编码:
查看有哪些地方用到编码
mysql>SHOW VARIABLES LIKE ‘character%‘;
character_set_client:此变量通知服务器客户端用的是什么编码
character_set_connection:此变量通知服务器客户端链接时用的是什么编码
character_set_database:数据库用的编码
character_set_results:是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。
character_set_server:是服务器安装时指定的默认字符集设定
character_set_system :是数据库系统使用的字符集设定。

将所有员工薪水修改为5000元。
mysql>UPDATE user SET salary=5000;
将姓名为’niuyang’的员工薪水修改为30000元。
mysql>UPDATE user SET salary=30000 WHERE username=‘niuyang‘;
将姓名为’huangshanshan’的员工薪水修改为20000元,job改为HR。
mysql>UPDATE user SET salary=20000,job=‘HR‘ WHERE username=‘huangshanshan‘;
将于连林的薪水在原有基础上增加10000元。
mysql>UPDATE user SET salary=salary+10000 WHERE username=‘于连林‘;

删除表中名称为’于连林’的记录。
mysql>DELETE FROM user WHERE username=‘于连林‘;
删除表中所有记录。(一条一条地删除)
mysql>DELETE FROM user;
使用truncate删除表中记录。(摧毁整张表,然后重建表结构)
mysql>TRUNCATE user;

------------------------------------------------------------------
*3、DQL:Data Query Language(数据查询语言)
关键字:SELECT
查询表中所有学生的信息。
mysql>SELECT id,name,chinese,english,math FROM student;
或者SELECT * FROM student;
查询表中所有学生的姓名和对应的英语成绩。
mysql>SELECT name,english FROM student;
过滤表中重复数据。
mysql>SELECT DISTINCT english FROM student;

在所有学生语文分数上加10分特长分。
mysql>SELECT id,name,chinese+10 FROM student;
统计每个学生的总分。
mysql>SELECT id,name,chinese+english+math FROM student;
使用别名表示学生分数。(AS可以省略)
mysql>SELECT id,name,chinese+english+math AS 总分 FROM student;
mysql>SELECT id,name,chinese+english+math 分 FROM student;

查询姓名为wu的学生成绩
mysql>SELECT id,name,chinese,english,math FROM student WHERE name=‘王五‘;
查询英语成绩大于90分的同学
mysql>SELECT name,english FROM student WHERE english>90;
查询总分大于200分的所有同学
mysql>SELECT name,chinese+english+math AS 总分 FROM student WHERE (chinese+english+math)>200;
------------------------------------------------------------------
(选修)4、DCL:Data Control Language(数据控制语言)
GRANT等
*****四、多表关系及设计
*****五、约束

以上是关于Mysql数据库基础的主要内容,如果未能解决你的问题,请参考以下文章

MySQL入门基础一-Mysql的基础体系架构

《零基础入门MySQL数据库》专栏简介

Mysql基础1

mysql基础学习笔记

mysql基础学习笔记

MySQL基础命令 | ChatGPT问答记录