DML语句:数据库操作语句

DML语句之插入表记录

插入数据的语法1:insert into 表名 values(值1,值2,值3,值4...值n); 插入全部数据
INSERT INTO student VALUES(1,'高圆圆',42,'女','西安市') ;-- 插入表的数据支持 :一次插入多条数据
-- insert into 表名 values(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n);
INSERT INTO student VALUES(2,'文章',35,'男','咸阳市'),
(3,'马伊琍',40,'女','上海市'),(4,'马保国',56,'男','宝鸡市') ;插入数据的语法2:插入部分字段,没有插入的字段,默认值就是null, 也支持一次性插入多条数据
-- insert into 表名(字段名称1,字段名称2....) values(值1,值2...) ;
INSERT INTO student(id,NAME,age,gender) VALUES(5,'王宝强',35,'男') ;
INSERT INTO student(id,NAME,age,gender) VALUES(6,'张三丰',60,'男'),(7,'令狐冲',38,'男') ;

注意事项

1)插入的这些值必须要和表中的字段对应上; 先后顺序保证一致!
2)目前没有加入"数据库约束",可以插入非法数据,举例:id重复 ,后期需要使用数据库约束来限定用户的操作表的行为!

DML语句之修改表记录

-- DML语句之修改表记录
语法一:一般实际开发中修改:都是带条件修改  (推荐)
-- update 表名 set 字段名称 = 值 where 条件 ;-- 需求:将name为张佳宁的学生id改为8
UPDATE student SET id = 8 WHERE NAME = '张佳宁' ;-- 需求: 修改id为6的学生的姓名为 '姚笛' (id字段在实际开发中:都是非业务字段,以后唯一的)
UPDATE student SET NAME = '姚笛' WHERE id =  6 ;语法二:一次性修改多个字段
-- update 表名 set 字段名称1 = 值 ,字段名称2 =值2.... where 条件;-- 需求:将id为6的学生 的年龄改为25,性别改为女,地址改为上海
UPDATE student SET age = 25,gender ='女',address='上海市' WHERE id = 6 ;语法三:不带条件 属于批量修改 (部分场景可以用的)
-- update 表名 set 字段名称= 值,字段名称2 =值2....
UPDATE student SET address = '鄠邑区' ;

DML语句之删除表记录

-- delete  from 表名 where 条件 ; 带条件删除记录 (使用的非业务字段id删除)
-- 需求:删除id为7的学生信息
DELETE FROM student WHERE id = 7 ;-- delete from 表名 :删除全表数据
DELETE FROM student ;-- truncate table 表名; 删除全表数据
TRUNCATE TABLE student;

DQL语句之查询表记录

-- * 代表所有字段,仅仅是自己玩的时候可以用,实际开发中不能用*,需要写上全部的字段名称
SELECT * FROM student ; -- 创建student3表
CREATE TABLE student3 ( id INT, -- 编号NAME VARCHAR(20), -- 姓名age INT, -- 年龄 sex VARCHAR(5), -- 性别 address VARCHAR(100), -- 地址 math INT, -- 数学english INT -- 英语
);
-- 给student3表中添加数据
INSERT INTO student3(id,NAME,age,sex,address,math,english)
VALUES (1,'马云',55,'男',' 杭州',66,78),(2,'马化腾',45,'女','深圳',98,87),(3,'马景涛',55,'男','香港',56,77),(4,'柳岩 ',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'刘德华',57,'男','香港 ',99,99),(7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);

DQL语句:数据库的查询语句

1)最基本的查询语句select

语法:查询全表数据:select * from 表名;
SELECT * FROM student3 ;
-- 实际开发中查询全部字段,把字段名称全部写上
SELECT id,NAME,age,sex,address,math,english
FROM student3;-- 查询全部字段的时候,给字段起一个别名  as '别名名称' ,as省略
SELECT id AS '编号',NAME AS '姓名',age AS '年龄',sex AS '性别',address AS '地址',math AS '数学成绩',english AS '英语成绩'
FROMstudent3 ;
-- as 可以省略的
SELECT id  '编号',NAME  '姓名',age  '年龄',sex  '性别',address  '地址',math  '数学成绩',english  '英语成绩'
FROMstudent3 ;-- 当表的名称比较长的时候,可以给表名起一个别名;
SELECT s.`id` '学生编号',s.`name` '学生姓名',s.`age` '学生年龄',s.`sex` '学生性别',s.`address` '学生地址',s.`math` '数学成绩',s.`english` '英语成绩'
FROMstudent3 s ;-- 起了一个别名s -- 可以查询部分字段
-- 需求:查询学生的姓名以及数学和英语成绩
SELECT NAME '姓名',math '数学成绩',english '英语成绩'
FROMstudent3 ;-- 需求:查询学生的地址信息
SELECT address
FROM student3;-- 发现:字段冗余(重复度大) 字段去重  DISTINCT 后面跟上字段名称
SELECT  DISTINCT address FROM student3;

2)DQL语句之条件查询 where 关键字

比较运算符 说明
>、<、<=、>=、=、<> <>在 SQL 中表示不等于,在 mysql 中也可以使用!= 没有=
BETWEEN…AND 在一个范围之内,如:between 100 and 200 相当于条件在 100 到 200 之间,包头又包尾
IN(集合) 集合表示多个值,使用逗号分隔
LIKE ‘张%’ 模糊查询
IS NULL 查询某一列为 NULL 的值,注:不能写=NULL

2.1)使用 赋值运算符=,比较运算符 <,<=,>=,>,!=, mysql中的不等于 <>
2.2)Java中逻辑运算符:&&,|| mysql推荐使用 and , or
2.2)针对两个范围查询: 可以使用&&,可以使用and, 也可以 “字段名称 between 值1 and 值2”

 -- 需求:查询年龄大于20岁的学生所有信息
SELECT*
FROMstudent3
WHERE  age > 20 ;-- 需求:查询年龄在20到30之间的学生的姓名,年龄,住址 ,数学和英语成绩信息
SELECT NAME '姓名',age '年龄',address '住址',math '数学成绩',english '英语成绩'
FROMstudent3
WHERE age >= 20 && age <= 30 ; -- && 逻辑双与-- mysql中使用and 并列关系
SELECT NAME '姓名',age '年龄',address '住址',math '数学成绩',english '英语成绩'
FROMstudent3
WHERE age >= 20 AND age <= 30 ; -- and 连接-- 使用的between 值1 and 值2
SELECTNAME '姓名',age '年龄',address '住址',math '数学成绩',english '英语成绩'
FROMstudent3
WHERE age BETWEEN 20  AND 30 ;-- 需求:查询年龄是20岁学生的所有信息
SELECT  * FROM student3 WHERE age = 20 ;-- 需求:查询年龄不是20岁的学生的所有信息
SELECT * FROM student3 WHERE age != 20 ; -- != Java中 的用法SELECT * FROM student3 WHERE age <> 20 ;-- mysql中的不等于 <>-- 需求:查询年龄是18岁或者是20或者是45岁的学生的所有信息-- Java中逻辑双或||
SELECT *
FROM student3
WHERE age = 18 || age =20 || age = 45 ;-- Mysql中的or这个表示 或(并集)
SELECT *
FROM student3
WHERE age = 18 OR age =20 OR age = 45 ; -- 上面这个格式优化为 in(值1,值2,值3..值n) ;in集合语句
SELECT  *
FROMstudent3
WHERE age IN(18,20,45) ;-- Java语言中:去判断某个条件的内容为null ,mysql语言不支持这个格式 ==null-- 需求:查询学生的英语成绩为null的学生所有信息-- select * from student3 where english == null ;-- mysql中判断某个字段为null,使用的语法是 is null
-- 判断某个字段不为null,使用的语法是 is not null
SELECT * FROM student3 WHERE english IS NULL ;-- 需求:查询学生的英语成绩不为null的学生的所有信息
SELECT * FROM student3 WHERE english IS NOT NULL ;  -- 关于int类型字段求和的时候,注意: int类型的值 + null 值 = null;
-- 查询学生的姓名以及英语和数学总分
SELECT  NAME '姓名',(math+english) '总分'
FROMstudent3 ;-- 上面这种情况:不太友好,数学成绩有值,但是结果求和是null
-- mysql提供函数 ifnull(字段名称,值);  如果字段名称是null,给一个默认值
SELECT  NAME '姓名',(math+IFNULL(english,0)) '总分'
FROMstudent3 ;

3)DQL语句之where条件后面加入模糊查询-----关键字 like

SHOW VARIABLES LIKE '%character%' ;
-- 语法:select 字段列表 from 表名 where 字段名称 like '%xxx%' ;
-- %:代表任何多个字符或者某个字符   (使用居多):网站门户系统---"搜索商品" ,模糊搜索
-- _:代表某个单个字符-- 需求:查询所有姓马的学生信息
SELECT*
FROMstudent3
WHERE NAME LIKE '%马%'-- 查询学生姓名三个字符并且第二个字符是化的人
SELECT *
FROM    student3
WHERE NAME LIKE '_化_' ;-- 查询姓名为三个字符的学生信息
SELECT *
FROM student3
WHERE NAME LIKE '___' ;

4)聚合函数查询:针对int类型:单行单列数据

SQL中的聚合函数 作用
max(列名) 求这一列的最大值
min(列名) 求这一列的最小值
avg(列名) 求这一列的平均值
count(列名) 统计这一列有多少条记录
sum(列名) 对这一列求总和
-- select  聚合函数 from 表名 where 还可以指定条件;-- count(字段名称):查询表中记录 ,字段名称使用都是id,非业务字段
-- avg(字段名称): 查询这个字段中平均值
-- sum(字段列表):求和函数
-- max(字段名称):最大值
-- min(字段名称):最小值-- 需求:查询表的总记录数
-- select count(english) '总记录数' from student3; -- 前提条件使用业务字段查询,不能有null值
-- select count(ifnull(english,0)) '总记录数' from student3;
SELECT COUNT(id) '总条数' FROM student3 ;
-- 查询数学平均分 avg(字段名称)
SELECT AVG(math) '数学平均分' FROM student3;
-- 数学和英语成绩求和的学生信息(姓名,和总分)
SELECT  SUM(math+IFNULL(english,0)) '总分' --数学成绩中含有null值
FROMstudent3;
-- max()和min()
SELECT MAX(math) '数学最高分' FROM student3 ;-- select语句嵌套select语句 --- 子查询
-- 需求:查询出学生数学成绩大于 数学平均分的学生所有信息;
-- 使用where 条件 后面带上 比较运算符...-- Java中
-- int x =10,y ;
-- y = y+x ; 将10代入-- 1)查询数学平均分是多少
SELECT AVG(math) FROM student3; -- 79.5000
-- 2)查询大于数学平均分的学生信息
SELECT *
FROM student3
WHERE math > 79.5000;-- 一步完成
SELECT *
FROM student3
WHERE math >  (SELECT AVG(math) FROM student3) ;-- 查询数学成绩最高分的学生的姓名,年龄,地址以及数学成绩;
-- 1)查询最高分是多少
SELECT  MAX(math) FROM student3; -- 99
-- 2)查询最高分是这个成绩的学生信息
SELECT NAME '姓名',age '年龄',address '地址',math '数学成绩'
FROM student3
WHERE math = 99 ;-- 一步完成
SELECT NAME '姓名',age '年龄',address '地址',math '数学成绩'
FROM student3
WHERE math = (SELECT  MAX(math) FROM student3) ;

5)DQL之排序查询 order by

通过 ORDER BY 子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];
ASC: 升序,默认值
DESC: 降序
-- select 字段列表 from 表名 order by 字段名称 排序规则(asc(默认值就是升序)或者desc 降序)UPDATE student3 SET english = 88  WHERE id = 5 ;
UPDATE student3 SET english = 94 WHERE id = 6 ;-- 需求:按照数学成绩升序排序 单个字段
SELECT *
FROM student3
ORDER BY math ASC ; -- 默认不写排序规则,就是asc 升序-- 同时条件和order by,order by在where的后面
-- 需求:数学成绩大于56分的学生进行数学的降序排序
SELECTNAME ,math
FROMstudent3
WHERE  math > 56    -- 先满足条件,才能排序!where 必须order by之前
ORDER BY math DESC ;-- 多个字段要同时排序,首先第一个字段排序规则,然后才是第二个字段
-- 需求:数学成绩降序,英语成绩升序排序
SELECT *
FROM student3
ORDER BY math DESC , english ASC ;SELECT * FROM student3 ;

面试题:

delete from 表名 和 truncate table 表名 :两个区别?共同点:都是可以删除全表的记录的;不同点:delete from 表名 ; 仅仅只是将表的全部记录删除了,表还在!它针对id(非业务字段:设置主键并且自增长),它不影响自增长主键的这个值; (数据库约束后面讲)truncat table 表名; 将表所有数据删除,而且还会把删除之后,自动创建一个张一模一样的表,影响自增主键的值!
DROP TABLE student ;
SHOW TABLES ;
-- 创建一个学生表,id 加入主键(非空且唯一)和自增长(不断的自增1)约束
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT , -- id主键并且自增长NAME VARCHAR(20),-- 姓名age INT
);
-- 一次插入4条
INSERT INTO student(NAME,age) VALUES('高圆圆',42),('张佳宁',32),('文章',35),('王宝强',38) ;-- 自增长的id可以自己给个值
INSERT INTO student  VALUES(15,'高圆圆2',42);
INSERT INTO student(NAME,age) VALUES('姚笛',35) ;

面试题:

在MySQL数据库软件中,有如下三个数据库:test01,test02,test03,登录数据库后,输入语句:select database test02; 运行结果是什么?答案:这是一条错误的语句,如果要选中一个数据库,应使用:use test02;

数据库DML语句:数据库操作语句相关推荐

  1. 数据库基本知识和操作语句

    数据库的概念 在计算机中, 通过一定的结构,来组织,存储和管理数据的软件系统 数据库管理系统(Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一 ...

  2. CDA数据分析师 - SQL数据库基础 数据类型表操作语句

    SQL 基础概念 [领会] 关系型数据库基本概念 表的基本概念(字段.记录) 表的约束条件(主键.外键.非空.唯一.自增.默认值) 实体关系图(E-R 图) ANSI-SQL 以及不同的数据库实现的关 ...

  3. mysql load xml_MySQL的SQL语句 - 数据操作语句(10)- LOAD XML 语句

    LOAD XML 语句 1. LOAD XML 2. [LOW_PRIORITY | CONCURRENT] [LOCAL] 3. INFILE 'file_name' 4. [REPLACE | I ...

  4. mysql语句6_MySQL的SQL语句 - 数据操作语句(6)- INSERT 语句

    INSERT 语句 1. INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] 2. [INTO] tbl_name 3. [PARTITI ...

  5. MySQL中购买的语句,mysql操作语句 - 买灰机自己开的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.对数据库的CRUD 1.创建数据库:create database  数据库名[character set 字符集] 2.查询所有数据库:show databases 3.查询数据库定义结构:sh ...

  6. jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...

    求用jsch网络工具包通过ssh连接远程oracle数据库(数据库在unix上)java代码例子:为何jsch发送:sqlplususer/pwd@service此命令,却没有结果返回啊.下面是代码: ...

  7. mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)

    子查询的限制 ● 通常,不能在子查询中修改表并从同一表中进行选择.例如,此限制适用于以下形式的语法: 1. DELETE FROM t WHERE ... (SELECT ... FROM t ... ...

  8. mysql的values使用_MySQL的SQL语句 - 数据操作语句(16)- VALUES 语句

    VALUES 语句 VALUES 是 MySQL 8.0.19 中引入的一个 DML 语句,它以表的形式返回一个或多个行的集合.换句话说,它是一个表值构造器,也可以作为独立的 SQL 语句来运行. 1 ...

  9. mysql select call_MySQL的SQL语句 - 数据操作语句(1)- CALL 语句

    CALL 语句 1. CALL sp_name([parameter[,...]]) 1. CALL sp_name[()] CALL 语句调用 CREATE PROCEDURE 定义的存储过程. 如 ...

  10. 在mysql数据库中DDL_Mysql 数据库操作之DDL、DML、DQL语句操作

    Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l  Show databases 查看数据库列表信息 l  查看数据库中的数据表信息 ,格式: use 数据库名: sh ...

最新文章

  1. 2015年最新出炉的JavaScript开发框架
  2. 二元函数泰勒公式例题_考研数一对二元函数的二阶泰勒公式的要求是了解,那我们要了解到什么程度呢?会出那种类型的题呢?...
  3. P4318 完全平方数
  4. python-子类和派生、继承
  5. java中整数的整数次方_数值的整数次方 - 剑指 Offer 学习心得_教程_Java开发社区...
  6. 淘宝大数据之路【转】
  7. ABP入门系列(17)——使用ABP集成的邮件系统发送邮件
  8. 趣头条确认总编辑肖厚君离职:对现有业务没有任何影响
  9. centos下安装php-fpm,centos下怎么安装php-fpm
  10. YUV_NV21图像数据到RGB颜色空间的转换
  11. abaqus算出来的转角单位是什么_abaqus单位等等
  12. DIAMOND: 超快的蛋白序列比对软件
  13. 数据结构 图的邻接表
  14. 使用脚注添加网页类参考文献(使用word)
  15. 存算一体文献阅读笔记二:XNOR-RRAM architecture for BNN from Shimeng Yu in ASU 2017
  16. 跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)
  17. java定义贵宾卡等级_会员卡分成那几个级别,分别有什么叫法
  18. 蓄电池外壳如何执行EN45545防火试验
  19. JVM笔记:Java虚拟机的字节码指令详解
  20. 2018上海居转户条件

热门文章

  1. cesium mars3d天地图标注置顶
  2. CentOS7搭建Nacos Cluster
  3. wlop的4k画质图包_wlop超清原画4k壁纸包2018年度无水印网盘
  4. 解析:微软收购诺基亚硬件或为Asha
  5. 洛谷 P1095 守望者的逃离 题解 (附题目)
  6. PR2018安装PJ后无法使用,并且无法试用。一直显示试用剩余0天。
  7. 记录一次mac 外接硬盘安装win10的过程
  8. 四个人分52张扑克牌,同时拿到红桃A和黑桃A的概率?
  9. 一碗面风行30年,康师傅匠心守护传承中国味道
  10. 惠州数字孪生智能工厂,3d可视化工业建模,数字工厂智能车间建设