MySQL 数据库中的基础操作

3、表的修改

对表的表名、字段、字段类型、字段长度、约束等进行修改。

3.1 表的名称修改

-- 语法:

ALTER TABLE 库名.表名

RENAME TO 新表名;

-- 将foods表的名字修改为空food
ALTER TABLE test.`foods`
RENAME TO food;

3.2 修改表的字段或者约束(修改表结构)

3.2.1 为表添加/删除主键约束

-- 语法:

ALTER TABLE 库名.表名

ADD PRIMARY KEY(字段名);

-- 为表aa中的字段salary 添加主键约束
ALTER TABLE test.`aa`
ADD PRIMARY KEY(salary);
DESC test.`aa`; -- 查看添加主键约束结果

-- 语法:

ALTER TABLE 库名.表名

DROP PRIMARY KEY;

-- 删除sales表的主键customer_no约束
ALTER TABLE test.`sales`
DROP PRIMARY KEY; -- 删除主键约束

3.2.2 为表添加非空约束

-- 语法:

ALTER TABLE 库名.表名

MODIFY 字段名 数据类型(数据长度) NOT NULL;

-- 修改sales表约束,使客户名称customer_name不允许为空
ALTER TABLE test.`sales`
MODIFY customer_name INT(10) NOT NULL;

3.2.3 修改表中某个字段的名称

-- 语法:

ALTER TABLE 库名.表名

CHANGE 原字段名 新字段名 字段类型(数据长度);

-- 修改表sales,将字段`product_name`名称修改为pct_name
ALTER TABLE test.`sales`
CHANGE product_name pct_name VARCHAR(30);

3.2.4修改表中某个字段的数据类型

-- 语法:

ALTER TABLE 库名.表名

MODIFY [COLUMN] `字段名` 新数据类型(新数据长度);

-- 修改sales表中字段`pct_name`的字段类型为char(20)
ALTER TABLE test.`sales`
MODIFY pct_name CHAR(20); -- 修改数据库长度

3.2.5添加字段

-- 语法:

ALTER TABLE 库名.表名

ADD [COLUMN] `字段名` 数据类型(数据长度);

ALTER TABLE test.`sales`
ADD COLUMN product_name VARCHAR(30);

3.2.6删除表中指定的字段

-- 语法:

ALTER TABLE 库名.表名

DROP COLUMN 字段名;

-- 删除表sales中的字段pct_name (面试题)
ALTER TABLE test.`sales`
DROP COLUMN pct_name;

3.2.7将表中指定字段设置为外键

-- 语法:

ALTER TABLE 库名.表名

ADD CONSTRAINT 外键约束名称 FOREIGN KEY(本表设置为外键字段的名称)

REFERENCES 库名.`被引用字段的表名称`(被引用字段的名称);

-- 为test库中表student的字段classno添加外键约束,
-- 该外键字段的数据引用自表sclass的主键字段cno
ALTER TABLE test.`student`
ADD CONSTRAINT student_classno_fk FOREIGN KEY(classno)
REFERENCES test.`sclass`(cno);

3.2.8删除表中指定字段的外键约束

步骤一:删除外键约束

-- 语法

ALTER TABLE 库名.表名

DROP FOREIGN KEY 外键约束名称;

步骤二:删除外键索引

DROP INDEX 索引名称 ON 库名.表名;

-- 删除test库student表的字段classno的外键约束student_classno_fk
-- 步骤一 删除约束
ALTER TABLE test.`student`
DROP FOREIGN KEY student_classno_fk;
-- 步骤二 删除索引
DROP INDEX student_classno_fk ON test.`student`;

3.2.9修改指定表的表名

-- 语法

RENAME TABLE 库名.旧表名 TO 新表名;

-- 将test库class表的名称修改为classb
RENAME TABLE test.`class` TO classb;

4、 表结构的删除(就是删除表)

-- 语法:

DROP TABLE 库名.表名;

--删除classb表
DROP TABLE test.`classb`;

表中数据的操作

1、往表中插入数据

-- 语法

INSERT INTO 库名.表名(字段名1,字段名2)

VALUES(字段值1,字段值2);

-- 往表zhaosheng3种插入一条数据,学号为3,姓名为郑爽,班号为1,
zsbh字段的值为4 -- 方法一、
INSERT INTO test.`zhaosheng3`
VALUES(3,"郑爽",1,4); -- 方法二、
INSERT INTO test.`zhaosheng4`(xuehao,xingming,banhao,zsbh)
VALUES(4,"郑爽1",2,5);
-- 往表temp种插入100数据,数据来源于employees表
INSERT INTO hrdb.`temp` SELECT employee_id,first_name,salary
FROM hrdb.`employees` LIMIT 100;
-- limit 限制,limit 100,取前100条数据
-- select子句的字段数量、数据类型需要和insert子句中的对应

2、修改表中的数据

语法:

UPDATE 库名.表名

SET 字段名1=新字段值1

WHERE 字段名2=字段值2;

2.1 修改单字段数据

-- 修改student数据库表score中的数据,修改编号为1的记录的姓名为孙琦
UPDATE student.`score`
SET NAME="孙琦"
WHERE id=1;

2.2 修改多字段数据

-- 修改student数据库score 表中数据,修改姓名为李四的记录,将语文成绩修改为81,英语成绩修改为90
UPDATE student.`score`
SET chinese=81,english=90
WHERE NAME="李四";

2.3 修改多条记录的数据

-- 修改student数据库score 表中数据,修改语文成绩大于80的记录,将语文成绩修改为100
UPDATE student.`score`
SET chinese=100
WHERE chinese>80;

3.删除表中的数据

3.1删行

-- 方法一:

-- 语法:

DELETE FROM 库名.表名 WHERE 字段名1=字段值1;(删除指定数据)

-- 重点说明:删除表中数据时,如果不加where默认删除表中所有数据(清空表)

-- 重点说明:使用delete删除表中数据时,delete后不能跟*号,delete不能和*号搭配使用。

-- 删除student库score表中english成绩为84
DELETE FROM student.`score`
WHERE english=84;

3.2删全表

清空score表中所有记录
方法一
DELETE FROM student.`score`; 方法二
TRUNCATE student.`score`;
TRUNCATE school.`test`;

-- TRUNCATE 删除的意思,使用truncate删除的数据,无法恢复,

-- truncate不能和from、where配合使用

4、查询表中的数据(重中之重)

4.1 查询单个表中的数据

4.1.1结构化查询语言-SQL语言

结构化查询语言(Structured QUERY Language或简称为SQL),即SQL语言,是一种应用

最为广泛的关系数据库语言,该语言定义了操作关系数据库的标准语法,几乎所有的关系

数据库管理系统都支持SQL语言。【关系型数据库:mysql、oracle、SQL server、DB2、

sybase】

SQL语言分类:

下面的五大分类要能讲出来

  • DDL(Data Definition Language)(数据定义语言) - Create、Alter、Drop
  • DQL(Data QueryLanguage)(数据查询语言) - SELECT 查询语句
  • DML(Data Manipulation Language)(数据操纵语言) - Insert、Update、Delete
  • DTL(Data Transaction Language)(事务控制语言) - COMMIT(提交)、Rollback(回滚) 事务提交与回滚语句
  • DCL(Data Control Language)(数据控制语言) - GRANT(授权)、Revoke(回收权限) 授予权限与回收权限语句

Select语句语法如下:

(1)SELECT 字段列表

(2)FROM 数据表

(3)where条件

(4)GROUP BY 分组字段

(5)having条件

(6)ORDER BY 排序字段  ASC | DESC

(7)LIMIT START,LENGTH;

【划重点】:select语句中,各子句出现的顺序不能乱,否则报错

-- 逻辑运算符:not 非,and 和,or 或

-- not 表达式:取表达式计算结果相反的数据

4.1.2普通查询

-- 查询员工表(employees)中所有人员的所有信息
SELECT * FROM hrdb.`employees`;
-- 查询员工表中员工编号为101的员工的员工编号、工资
SELECT employee_id,salary
FROM hrdb.`employees`
WHERE employee_id=101;

4.1.3关键字in在查询语句中的用法

说明:当查询条件给出的为多个类似的值时,可以使用关键字IN,不同值之间使用逗

号隔开,

-- 语法

-- in(值1,值2...)

-- 查询工资分别为9000、10000、18000的员工编号、工资
SELECT employee_id,salary
FROM hrdb.`employees`
WHERE salary IN(9000,10000,18000);

4.1.4关键字between...and...的用法

说明:between...and...意思是在...和...之间

-- between 值1 and 值2,意思是在值1和值2之间

-- 查询工资在3000-6000之间的人员的工资、员工编号、职位编号
SELECT salary,employee_id,job_id
FROM hrdb.`employees`
WHERE salary BETWEEN 3000 AND 6000;
-- 查询结果包括边界3000和6000

4.1.5 null关键字在查询语句中的用法

-- 说明:null为空、不确定的意思

-- 说明:

-- is null代表为空的意思, is not null为非空的意思

-- 判断某个字段值为空,不能使用=null

-- 查询部门表中经理编号为空的部门的编号、部门名称、经理编号
SELECT department_id,department_name,manager_id
FROM hrdb.`departments`
WHERE manager_id IS NULL;

4.1.6聚合函数的用法

-- 说明:聚合函数即分组函数,主要包括:求最大值max()函数、最小值min()函数、

-- 平均值avg()函数、求和sum()函数

-- 统计条数count()函数。

-- 查询员工表中的最高工资、最低工资、平均工资、工资总和
SELECT MAX(salary) AS 最高工资,MIN(salary) AS 最低工资,
AVG(salary) AS 平均工资,SUM(salary) AS 工资之和
FROM hrdb.`employees`;
-- as后为别名,as 是单词alias单词的简写,别名的意思
-- as 可以省略

4.1.7计数

-- 查询员工表中的所有人员的工资之和以及人员的数量
方法一
SELECT SUM(salary),COUNT(employee_id)
FROM hrdb.`employees`; 方法二
SELECT SUM(salary),COUNT(*)
FROM hrdb.`employees`;-- *号代表所有记录 方法三
SELECT SUM(salary),COUNT(1)
FROM hrdb.`employees`;-- *号代表所有记录
-- 在部门表中,统计部门表中部门的数量
SELECT COUNT(*) FROM hrdb.`departments`;
SELECT COUNT(manager_id) FROM hrdb.`departments`;

-- 总结:

-- 使用count()函数统计表中记录的数量时:

-- 使用*作为count()函数进行统计时,结果包含所有记录

-- 使用单个字段作为count()函数的参数进行统计时,结果不统计字段值为null 的记录。

4.1.8 分组查询关键字group by用法

-- 说明:

-- group by 字段名/聚合函数, 意思是先通过给定的【字段名/聚合函数】先进行分组,

-- 再对分组后的数据进行分别处理【求和、求平均值、统计数量等】。

-- 查询时,什么时候需要对数据进行分组?

-- 一般查询问题为“每个...”,“各...”的时候,需要对数据进行分组

-- 查询员工表中每个部门人员的平均工资,查询结果显示部门编号、平均工资
SELECT department_id,AVG(salary)
FROM hrdb.`employees`
GROUP BY department_id;
-- 先对employees表的数据进行分组,再对每个组中的数据求平均值

4.1.9 使用group by关键字进行多字段分组

-- 查询不同部门中,不同职位的人员的平均工资,查询结果显示部门编号、职位编号、平均工资
SELECT department_id,job_id,AVG(salary)
FROM hrdb.`employees`
GROUP BY department_id,job_id;

4.1.10对group by分组后的结果数据使用having关键字进行过滤

-- 说明:having关键字,可以对分组后的数据进行过滤,类似于where的作用,但又不同于where.

-- having 后的过滤条件,可以跟字段,也可以跟聚合函数。

-- 查询员工表中不同部门人员的平均工资,查询结果要求只显示平均工资高于12000的部门编号、平均工资
SELECT department_id,AVG(salary)
FROM hrdb.`employees`
GROUP BY department_id
HAVING AVG(salary) >12000;

4.1.11 对查询结果使用order by关键字进行排序

-- 说明:mysql中查询,查询结果默认按升序(从上到下,按从小到大)排列

-- 升序排列:

--不加排序关键字/使用关键字 ASC

-- 降序排列:

-- 使用关键字DESC

-- 排序关键字使用语法:order by 字段名 [asc|desc],

-- 意思是通过给定的字段名将查询结果进行排序(升序或者降序)

-- 查询员工表中所有人员的工资,查询结果按工资高低升序排列,结果显示员工编号、工资

方法一 默认升序排列
SELECT employee_id,salary
FROM hrdb.`employees`
ORDER BY salary; 方法二、使用升序排列关键字asc
SELECT employee_id,salary
FROM hrdb.`employees`
ORDER BY salary ASC; -- asc用于升序排列

4.1.12查询关键字limit的用法-分页查询

-- 说明:limit限制的意思,在sql语句可以对查询结果进行过滤

-- 在mysql中,limit m,n,意思是从第m+1条数据开始取数据,连续取n条数据,显示在查询结果中。

-- 查询员工表中所有人员的工资,查询结果按工资高低降序排列,结果显示工资前四高的员工编号、工资
SELECT employee_id,salary
FROM hrdb.`employees`
ORDER BY salary DESC
LIMIT 4;
-- 查询员工表中所有人员的工资,查询结果按工资高低降序排列,结果显示工资第四高的员工编号、工资
SELECT employee_id,salary
FROM hrdb.`employees`
ORDER BY salary DESC
LIMIT 3,1;
-- 从第3+1条(即第4条)数据开始取数据,只取1条

MySQL 数据库 查 续

MySQL 增删查改 必知必会的更多相关文章

  1. mysql 增删查改

    非关系型数据库关系型数据库Oracle mysql sqlserver db2 Postgresql Sqlite access sqlserver 微软db2 ibm================ ...

  2. php mysql增删查改

    php mysql增删查改代码段 $conn=mysql_connect('localhost','root','root');  //连接数据库代码 mysql_query("set na ...

  3. node.js+mysql增删查改

    数据库和表: -- -- 数据库: `test` -- -- -------------------------------------------------------- -- -- 表的结构 ` ...

  4. 后端Spring Boot+前端Android交互+MySQL增删查改(Java+Kotlin实现)

    1 前言&概述 这篇文章是基于这篇文章的更新,主要是更新了一些技术栈以及开发工具的版本,还有修复了一些Bug. 本文是SpringBoot+Android+MySQL的增删查改的简单实现,用到 ...

  5. 后端Spring Boot+前端Android交互+MySQL增删查改

    2021.1.27 更新 已更新新版本博客,更新内容很多,因此新开了一篇博客,戳这里. 1 概述 使用spring boot作为后端框架与Android端配合mysql进行基本的交互,包含了最基本的增 ...

  6. python操作mysql增删查改

    # coding=utf-8 ''' python操作mysql,需安装MySQLdb驱动 安装MySQLdb,请访问 http://sourceforge.net/projects/mysql-py ...

  7. 2016/3/13 MySQL 增删查改 CRUD 用代码实现

    用代码实现数据库数据输入 T-SQL语句 查询语句分几块 ①创建表 create table Car (Code varchar(50) primary key, #primary key 主键 定义 ...

  8. MySQL增删查改语句(入门)

    目录 create alter: insert delete update select 数据库定义语句: create:创建数据库及表对象 drop:删除数据库及表对象 alter:修改数据库及表对 ...

  9. mysql增删查改练习

    建表 班级表 create table class( cid int auto_increment unique, caption varchar(32) not null default '' )c ...

随机推荐

  1. NOI Online#1 小记

    虽然只是一个普通的模拟赛,但是毕竟是我第一次参加官方组织的比赛,所以还是写一篇小记纪念一下吧(毕竟经验少,太菜了. 上午一直颓着,随便看了两眼文化课,补了补昨天的化学作业,就当是对明天月考的复习吧(月 ...

  2. Java入门到实践系列(1)——Java简介

    一.Java的发展历史 Java是由SUN公司的开发人员James Gosling及其领导的一个开发小组与1995年开发并推出的一门高级编程语言.经过二十几年的发展已经成为最受程序员欢迎.使用最为普遍 ...

  3. 014_go语言中的变参函数

    代码演示 package main import "fmt" func sum(nums ...int) { fmt.Print(nums, " ") toto ...

  4. 利用Python实现定时发送邮件,实现一款营销工具

    说起自动化绝对算是茶余饭后最有显B格的谈资,毕竟解放双手是从老祖先那里就流传下来的基因,都2020了,你每天上班还要登录各个邮箱账号查收邮件?快来解锁本章内容 整体思路 很多人学习python,不知道 ...

  5. Python编程的10个经典错误及解决办法

    接触了很多Python爱好者,有初学者,亦有转行人.不论大家学习Python的目的是什么,总之,学习Python前期写出来的代码不报错就是极好的.下面,严小样儿为大家罗列出Python3十大经典错误及 ...

  6. 618购物节要到了,Python帮你实现商品有货的微信提醒

    时间过的真快,不知不觉一年已过了一半,又快到618购物狂欢节了,剁手党们都希望无论是618购物节还是双11购物节,都能够买到便宜又实惠的商品,但是真心实惠的东西往往是紧俏的,经常会出现无货的情况,我们 ...

  7. 恕我直言,你可能真没用过这些 IDEA 插件!

    一.前言 IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境.IntelliJ在业界被公认为最好的java开发工具. 不是我说的喔,百度百科说的... IDEA 如此好用,插 ...

  8. JAVA三种多线程实现方法和应用总结

    最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结.1.JAVA多线程实现方式JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用Exe ...

  9. Linux-Centos 用crontab定时运行python脚本详细步骤

    服务器总是要定时运行某个程序,而我在解决这个问题的时候遇到很多困难, 特此记录下来. 1.编辑crontab配置 crontab -e 服务器一般会安装好crontab,若没有安装请按命令安装 yum ...

  10. 图论算法(一)存图与STL第六弹——vector容器

    图论算法(一)存图 我发现我的博客阅读量贼低,问小伙伴们,ta们都说这些博客太长了QAQ! 今天来个短亿点的(也短不了多少……) 进入正题,图论究竟是什么? 图论就是给你一张图,让你在这张图上进行各种 ...