MySQL 详细单表增删改查crud语句

MySQL 增删改查语句

1.创建练习表

  • 这里练习表没有满足三范式

第一范式(又称 1NF):保证每列的原子性
数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。
第二范式(又称 2NF):保证一张表只描述一件事情
满足1NF后要求表中的所有列,每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。
第三范式(又称 3NF):保证每列都和主键直接相关
满足2NF后,要求:表中的每一列都要与主键直接相关,而不是间接相关(表中的每一列只能依赖于主键)。
数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系。像:a–>b–>c 属性之间含有这样的关系,是不符合第三范式的。

  • 五大约束

数据库中的五大约束包括:

1.主键约束(Primay Key Coustraint) 唯一性,非空性;

2.唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个;

3.默认约束 (Default Counstraint) 该数据的默认值;

4.外键约束 (Foreign Key Counstraint) 需要建立两表间的关系;

5.非空约束(Not Null Counstraint):设置非空约束,该字段不能为空。

五大约束的语法示例:

添加主键约束
Alter table 表名 add Constraint 主键名 primary key(字段)

添加唯一约束
Alter table 表名 add Constraint 约束名 unique(字段)

添加默认约束
Alter table 表名 add Constraint 约束名 default(默认内容) for 字段名

添加检查约束
Alter table 表名 add Constraint 约束名 check (字段表达)

添加外键约束
Alter table 表名 add Constraint 约束名 foreign key(字段) references 表名(字段名)

1.1用户表(user)

CREATE TABLE `user`(
	`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户id(主键)',
	`username` VARCHAR(50) COMMENT '用户姓名',
	`age` CHAR(3) COMMENT '用户年龄'
);

插入数据

INSERT INTO USER VALUES(2,'小二',12);
INSERT INTO USER VALUES(3,'张三',33);
INSERT INTO USER VALUES(4,'李四',24);
INSERT INTO USER VALUES(5,'王五',17);
INSERT INTO USER VALUES(6,'赵六',36);
INSERT INTO USER VALUES(7,'七七',18);

完成后
表名 user
表数据:

1.2学生表

CREATE TABLE `students`(
	`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '学生id(主键)',
	`name` VARCHAR(10) COMMENT '学生姓名',
	`grade` VARCHAR(10) COMMENT '学生年级',
	`chinese` INT COMMENT '语文成绩',
	`math` INT COMMENT '数学成绩',
	`english` INT COMMENT '英语成绩'
);

插入数据

INSERT INTO students VALUES(1,'迪丽热巴','二年级',100,100,100);
INSERT INTO students VALUES(2,'古力娜扎','一年级',99,88,98);
INSERT INTO students VALUES(3,'马尔扎哈','三年级',46,20,99);
INSERT INTO students VALUES(4,'阿里巴巴','一年级',78,81,100);
INSERT INTO students VALUES(5,'哈哈哈哈','六年级',20,10,5);
INSERT INTO students VALUES(6,'作者本人','二年级',100,100,100);
INSERT INTO students VALUES(7,'嘻嘻哈哈','五年级',70,99,60);
INSERT INTO students VALUES(8,'哭哭啼啼','四年级',33,15,54);

列名或者表名和 MySQL 关键字冲突可以使用 ` 符号,键盘esc 下面,1 左边,Tab 上面;
注意 ==> 如果成绩类型是 varcher ,那使用排序将会显示不正确。

完成后
表名 students
表数据:

2.查询

2.1查询全部(这里使用user用户表)

Select * from 表名;

SELECT * FROM USER;

2.2查询已经成年的用户(使用where条件查询)

  • 条件中比较运算符:( 等于: = 大于: > 大于等于: >= 小于: < 小于等于: <= 不等于: != 或 <> )
  • Select * from 表名 where 条件;
SELECT * FROM USER WHERE age >= 18;

2.3查询未成年用户的名字

SELECT 字段名 FROM 表名 WHERE 条件;

SELECT username FROM USER WHERE age < 18;

2.4使用别名查询

使用as关键字(as可以省略)

SELECT u.* FROM USER AS u;

2.5使用逻辑运算符查询

逻辑运算符( 并且:and 或 && 或:or 非:not 或 ! )

查询名字为小二又年龄是12岁的(显示名字和年龄)

SELECT u.`username`,u.`age` FROM USER u WHERE u.`username`='小二' && u.`age`=12;

查询名字为张三又是未成年的(查询结果空,没有这个人)

SELECT * FROM USER WHERE username='张三' && age < 18;

2.6使用运算符查询(这里开始使用students学生表)

查询 哈哈哈哈 的三科总分
运算符优先级:
1.乘法和除法的优先级高于加法和减法
2.同级运算的顺序是从左到右
3.表达式中使用"括号"可强行改变优先级的运算顺序
select 列1[ ±*/ ]列2 from 表名 where 条件;

SELECT s.chinese + s.math + s.english FROM students s WHERE s.name = '哈哈哈哈';

2.7范围查询(between 条件1 and 条件2)

(良 60-70,中70-80,优80-90,优秀90-100)

查询语文成绩是 良到中 的同学名字一
where 字段(列名) between 条件1 and 条件2;

SELECT NAME FROM students WHERE chinese BETWEEN 60 AND 80;

查询数学成绩不合格的同学名字

where 字段(列名)not between 条件1 and 条件2;

SELECT NAME FROM students WHERE math NOT BETWEEN 60 AND 100;

查询英语成绩优秀的同学id和名字;

where !( 字段名 between 条件1 and 条件2);

SELECT s.`id`,s.`name` FROM students s WHERE !(s.`english` BETWEEN 0 AND 90);

2.8集合查询查询一年级和二年级的学生信息

where 列名 in (值1,值2,值3);

SELECT * FROM students WHERE grade IN ('一年级','二年级');

*查询一年级,二年级,三年级以外的学生信息
where 列名 not in (值1,值2,值3);

SELECT * FROM students WHERE grade NOT IN ('一年级','二年级','三年级');

2.9 NULL值查询

注意:列中值为null不能使用=去查询

查询名字为 null 的学生数据(没有存储有,所以啥也没有)
where 列名 is null;

SELECT * FROM students WHERE `name` IS NULL;

2.10模糊查询( like )% 表示0个到n个字符

where 列名 like '%巴'; 		-- 表示以 巴 结尾的;
where 列名 like '巴%'; 		-- 表示以 巴 开头的;
where 列名 like '%巴巴%' 	-- 表示数据里面包含 巴巴 的;

查询名字以 巴 结尾的学生;

SELECT * FROM students WHERE `name` LIKE '%巴';

查询名字以 作者 开头的学生;

SELECT * FROM students WHERE `name` LIKE '作者%';

查询名字里面包含 嘻哈 的学生;

SELECT * FROM students WHERE `name` LIKE '%嘻哈%';

_ 表示一个字符,可以多次使用

查询名字里面倒数第二个字有 哈 的学生
where 列名 like ‘哈_';

SELECT * FROM students WHERE `name` LIKE '%哈_';

2.11结果排序

对结果经行排序(对查询出的结果按照一列或多列进行升序或者倒序排序,升序式ASC,倒序式 DESC,默认升序)。

注意不能使用中文或者中问别名排序。
where 条件 order by 列名 [ ASC / DESC ];

查询一年级,二年级,三年级学生数据,以 语文成绩排序,降序。

SELECT * FROM students WHERE grade IN ('一年级','二年级','三年级') ORDER BY chinese DESC;

2.12分页查询

分页查询( beginIndex 表示从第几条数据开始(也可以说是跳过前面多少页),第一页从0开始。pageSize 表示每页显示多少条数据);
select * from 表名 where 条件 limit beginIndex , pageSize;

分页算法公式 (当前页 - 1)* pageSize;

比如说每页 10页 分页。
第一页 limit 0,10;// 显示 0-10;跳过前面0条数据
第二页 limit 10,10;// 显示 11-20;跳过前面10条数据
第三页 limit 20,10;// 显示 21-30;跳过前面20条数据

注意当我们使用 select * from students;(最后底层执行语句分页了 limit 0,1000 )

查询全部学生,每页三条数据
第一页

SELECT * FROM students LIMIT 0,3;


第二页

SELECT * FROM students LIMIT 3,3;

第三页

SELECT * FROM students LIMIT 6,3;

2.13聚合函数

作用于一组数据,对那组返回一个值

  • count :统计结果记录多少条数,
  • max:统计最大值
  • min:统计最小值sum:计算求和
  • avg: 计算平均值

注意,分组函数 group by。如果要对 分组后 的数据进行筛选,那么必须使用 having 关键字,条件写在 having 后面;

  • where:先过滤已有的数据,在分组,在聚合函数计算;
  • having:过滤分组之后的数据。

插入我们需要练习的表city 表

CREATE TABLE `city` (
	`id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
	`city_name` VARCHAR(100) COMMENT '城市名',
	`city_year` VARCHAR(4) COMMENT '年份,yyyy',
	`city_gdp` DOUBLE COMMENT '当前年份,城市一整年的GDP,单位亿元',
	`city_population` DOUBLE COMMENT '当前年丰,城市的总人口,单位万人'
);

添加数据

INSERT INTO city VALUES(1,'上海',2018,32679,2418);
INSERT INTO city VALUES(2,'北京',2018,30320,2171);
INSERT INTO city VALUES(3,'深圳',2018,24691,1253);
INSERT INTO city VALUES(4,'广州',2018,23000,1450);
INSERT INTO city VALUES(5,'重庆',2018,20363,3372);
INSERT INTO city VALUES(6,'上海',2019,38155,2424);
INSERT INTO city VALUES(7,'北京',2019,35371,2171);
INSERT INTO city VALUES(8,'深圳',2019,26927,1302);
INSERT INTO city VALUES(9,'广州',2019,23628,1491);
INSERT INTO city VALUES(10,'重庆',2019,23605,3372);

COUNT
查询计算2019年一共有多少个城市录入数据(答案 5个)

SELECT COUNT(*) FROM city WHERE city_year = '2019';

MAX
查询 2018年里 GDP 最高是多少;

SELECT MAX(city_gdp) FROM city WHERE city_year = '2018';

MIN
查询 2018年里 GDP 最低是多少;

SELECT MIN(city_gdp) FROM city WHERE city_year = '2018';

SUM
查询2019年里所有城市 GDP 总和;

SELECT SUM(city_gdp) FROM city WHERE city_year = '2019';

AVG
查询2019年所有城市 GDP 平均值;

SELECT AVG(city_gdp) FROM city WHERE city_year = '2019';

3.增加

insert into 表名(字段1,字段2,字段3,…)values(值1,值2,值3,…);

添加学生鸡鸡鸡鸡

INSERT INTO students(id,NAME,grade,chinese,math,english)
VALUES( 9,'鸡鸡鸡鸡','七年级',77,77,77);

其它插入方式

INSERT INTO 表名(字段1,字段2,字段3) VALUES (值1,值2,值3),(值1,值2,值3); -- 插入多条数据
INSERT INTO 表名 VALUES(值1,值2); -- 针对表全字段进行插入操作
INSERT INTO 表名(字段) SELECT 字段 FROM 表2; -- 查询结果插入
INSERT INTO 表名 SELECT 字段 FROM 表2; -- 查询结果,全表插入

4.更新

update 表名 set 字段=值 where 条件; -- 带条件的去修改指定数据,否则修改全表;

修改学生 ‘哈哈哈哈' 的英语成绩为 10;

UPDATE students SET english = 10 WHERE `name` = '哈哈哈哈';

5.删除

delete from 表名 where 条件; -- 删除数据带条件删除,否则删除全表的数据

删除学生 ‘鸡鸡鸡鸡' ;

DELETE FROM students WHERE `name` = '鸡鸡鸡鸡';

6.语句执行顺序

from -> on -> join -> where -> group by -> having -> select -> distinct -> order by -> limitMySQL其它文章,请看下面链接

MySQL DDL 语句
MySQL CRUD 语句
MySQL 聚合函数
MySQL 多表查询

END…

到此这篇关于MySQL 详细单表增删改查crud语句的文章就介绍到这了,更多相关MySQL 增删改查语句内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • node.js中 mysql 增删改查操作及async,await处理实例分析

    本文实例讲述了node.js中 mysql 增删改查操作及async,await处理.分享给大家供大家参考,具体如下: 要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = require('mysql'); //创建数据库连接 let conn = mysql.createConnection({ //主机地址 host: '127.0.0.1', //用户

  • Python连接Mysql进行增删改查的示例代码

    Python连接Mysql 1.安装对应的库 使用Python连接Mysql数据库需要安装相应的库 以管理员身份运行cmd,输入命令 pip install mysql.connector 安装完成后建立 test.py 写入 import mysql.connector 保存后运行 python test.py 用以测试模块库是否安装完成,如果不报错,说明安装完成 2.进行连接测试 编写connectTest.py文件 文件内容: import mysql.connector connect

  • Mysql表,列,库增删改查问题小结

    下面是我总结的一些基础的sql知识,主要是为了以后更好的查阅和帮助其他初学的人,同时记录自己的成长,还写了一点稍有 难度的sql面试题级别的题目,好了废话不多说,见真题... #创建数据库 CREATE DATABASE mytest CHARACTER SET gbk #删除数据库 DROP DATABASE mytest 表的操作 #创建表(create table 表名(columns)) CREATE TABLE students( id INT PRIMARY KEY, NAME CH

  • mysql视图之管理视图实例详解【增删改查操作】

    本文实例讲述了mysql视图之管理视图操作.分享给大家供大家参考,具体如下: mysql提供了用于显示视图定义的SHOW CREATE VIEW语句,我们来看下语法结构: SHOW CREATE VIEW [database_name].[view_ name]; 要显示视图的定义,需要在SHOW CREATE VIEW子句之后指定视图的名称,我们先来根据employees表创建一个简单的视图用来显示公司组织结构,完事在进行演示: CREATE VIEW organization AS SELE

  • pymysql模块的使用(增删改查)详解

    一.pymysql的下载和使用 之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢?这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装. (1)pymysql模块的下载 pip3 install pymysql (2)pymysql的使用 # 实现:使用Python实现用户登录,如果用户存在则登录成功(假设该用户已在数据库中) import pymysql user = input('请输入用户名:')

  • Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连接数据库测试 import pymysql #打开数据库 db = pymysql.connect(host="localhost",user="root",password="root",db="test") #使用cursor

  • Mysql的增删改查语句简单实现

    Mysql的增删改查语句简单实现 增加记录: insert into tablename(...) values(...) //如果增加的记录包括所有的列,则不需要写数据列表 insert into tablename values(...) 删除记录: delete from tablename where condition ; 修改记录: update tablename set xx=xx , xx=xx... where condition ; alter table tablenam

  • mysql触发器之触发器的增删改查操作示例

    本文实例讲述了mysql触发器之触发器的增删改查操作.分享给大家供大家参考,具体如下: 我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义.触发器作为纯文本文件存储在以下数据库文件夹中: /data_folder/database_name/table_name.trg 我们还可通过查询information_schema数据库中的triggers表来显示触发器,如下所示: SELECT * FROM information_schema.triggers WHERE trig

  • mysql增删改查基础语句

    语法 这里是INSERT INTO命令将数据插入到MySQL表的通用SQL语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 要插入字符串类型数据,则需要双或单引号保留到所有的值,例如: "value". 1.从命令提示符插入数据 这将使用SQL 的INSERT INTO命令将数据插入到MySQL表:tutorials_tbl 示例 root@host#

  • MySQL 详细单表增删改查crud语句

    MySQL 增删改查语句 1.创建练习表 这里练习表没有满足三范式 第一范式(又称 1NF):保证每列的原子性 数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性.满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了. 第二范式(又称 2NF):保证一张表只描述一件事情 满足1NF后要求表中的所有列,每一行的数据只能与其中一列相关,即一行数据只做一件事.只要数据列中出现数据重复,就要把表拆分开来. 第三范式(又称 3NF):保证每列都

  • Vue项目通过node连接MySQL数据库并实现增删改查操作的过程详解

    目录 Vue项目通过node连接MySQL数据库 1.创建Vue项目 2.下载安装需要的插件 3.在项目中创建server文件夹,用于搭建本地服务器 4.Vue项目访问接口获取数据 数据表的增删改查操作 1.服务器配置 2.前端配置 页面样式 总结 Vue项目通过node连接MySQL数据库 1.创建Vue项目 vue create 项目名 Vue项目创建的详细步骤,有需要的可移步这里 2.下载安装需要的插件 下载express npm install express 下载cors,用于处理接口

  • MySQL筑基篇之增删改查操作详解

    目录 一.增加表中数据 1.无自增列时 2.有自增列时 二.删除表中数据 1.使用delete 2.使用truncate 三.修改表中数据 四.*查询操作 1.简单查询 2.条件查询 3.排序 一.增加表中数据 1.无自增列时 1.指定字段添加数据 给表中的部分列添加数据:值的顺序必须跟指定列的顺序保持一致 语法:insert into 表名(列1,列2,...) values(值1,值2,...) 2.默认添加数据 向表中的所有列添加数据:值的顺序必须跟字段顺序保持一致 语法:insert i

  • PHP实现对xml进行简单的增删改查(CRUD)操作示例

    本文实例讲述了PHP实现对xml进行简单的增删改查(CRUD)操作.分享给大家供大家参考,具体如下: 假如有下面xml文件: <?xml version="1.0" encoding="UTF-8"?> <setting> <preferTime>55.8</preferTime> <playerValue>56</playerValue> <reduceValue>40</r

  • Android连接MySQL数据库并进行增删改查操作示例讲解

    1.Android 连接MySQL数据库 public class DBOpenHelper { private static String driver = "com.mysql.jdbc.Driver";//MySQL 驱动 private static String url = "jdbc:mysql://IP:3306/数据库";//MYSQL数据库连接Url private static String user = "root";//用

  • Node连接MySQL并封装其增删改查的实现代码

    目录 Node连接Mysql 安装Mysql模块 连接Mysql 常用的SQL语句 Node操作Mysql 封装 结束 Node连接Mysql 说到node,可能大家会想到MOngoDB作为数据库,这里将会介绍node与mysql的连接,并分享了封装好的实例代码,在项目开发中可直接使用. 安装Mysql模块 npm install mysql 连接Mysql const mysql = require('mysql'); let connection = mysql.createConnecti

  • java实现单链表增删改查的实例代码详解

    package 数据结构算法.链表; /* *定义节点 * 链表由节点构成 */ public class Node<E> { private E e; //数据data private Node<E> next; //指向下一个节点 public Node() { } public Node(E e) { this.e = e; } public Node<E> getNext() { return next; } public void setNext(Node&l

  • php+mysql实现简单的增删改查功能

    列表代码 <?php $con = mysql_connect("localhost:3306","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("test", $con); $result = mysql_query("SELECT * FROM user"); echo &

随机推荐