数据库:DML语言和DDL语言

article/2024/12/27 10:19:23

文章目录

  • 一、DML语言(数据操作语言)
    • 1.插入语句
      • (1)方式一
      • (2)方式二
      • (3)两种方式比较
    • 2.修改语句
      • (1)修改单表的记录
      • (2)修改多表的记录(补充)
    • 3.删除语句
      • (1)方式一
      • (2)方式二
      • (3)方式一与方式二区别(⭐)
  • 二、DDL语言
    • 1.库的管理
    • 2.表的管理
      • (1)表的创建
        • A.语法
        • B.常见的数据类型
      • (2)表的修改
        • A.用法
        • B.约束
      • (4)表的删除
      • (5)表的复制
      • (6)标识列
  • 总结


一、DML语言(数据操作语言)

1.插入语句

(1)方式一

语法:insert into 表名 (列名,…) values (值1,…);
注意:

  • 插入的值的类型要与列的类型一致或兼容
  • 可以为null的列是如和插入值?
    • 可以直接添加null
    • 把为空那列删掉

案例:

#方式一
INSERT INTO `beauty`(`id`,`name`,`sex`,`borndate`,`phone`,`photo`,`boyfriend_id`)
VALUES (13,'唐艺昕','女','1990-4-23','123456543',NULL,2);
#方式二
INSERT INTO `beauty`(`id`,`name`,`sex`,`borndate`,`phone`,`boyfriend_id`)
VALUES (14,'金星昕','女','1990-4-23','123456543',2);
  • 列的顺序可以调换,但值要一一对应
  • 列数和值的个数必须一致
  • 可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致

(2)方式二

语法:insert into 表名 set 列名=值1,…;(不常用)

案例:

INSERT INTO `beauty` SET id=15,`name`='刘涛',`phone`='999';

(3)两种方式比较

  • 方式一支持插入多行,方式二不支持

案例:

#方式一
select into beauty values(16,'杨幂','女','1990-5-23','334324543',NULL,2),(17,'杨紫','女','1993-6-13','112',NULL,2)
  • 方式一支持子查询,方式二不支持

案例:

INSERT INTO `beauty`(`id`,`name`,`phone`) SELECT 16,'宋茜','1234567';#是将结果集插入进去

2.修改语句

(1)修改单表的记录

语法:update 表名 set 列名=新值,…,where 筛选条件;
如果不加where筛选条件,所有行都更新了;但如果加id就会报错(Duplicate entry ‘19’ for key ‘PRIMARY’)因为主键的唯一性。

案例:

UPDATE `beauty` SET `name`='杨紫';

在这里插入图片描述

注意:

  • 新值的类型与列的值的类型一致或兼容
  • 字符、日期型要加单引号
  • 筛选条件跟查询一致

(2)修改多表的记录(补充)

92语法:update 表1 别名,表2 别名 set 列=新值,列=新值,。。。where 连接条件 and 筛选条件;
99语法:update 表1 别名 inner|left|right join 表2 别名 on 连接条件 set 列=新值,列=新值,。。。where 筛选条件 ;

案例:

#修改张无忌的女朋友的手机号为114
UPDATE boys bo 
INNER JOIN `beauty` b 
ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='114'
WHERE bo.`boyName`='张无忌';

3.删除语句

(1)方式一

注意:删除就是删除整行!!!
单表的删除的语法:delete from 表名 where 筛选条件;
多表的删除的语法:

  • sql92语法:delete 表1的别名,表2的别名 from 表1 别名,表2 别名 where 连接条件 and 筛选条件;
  • sql99语法:delete 表1的别名,表2的别名 from 表1 别名 inner|left|right join 表2 别名 on 连接条件 where 筛选条件;

案例:

#删除黄晓明的信息以及她女盆友的信息
DELETE b,bo #删除黄晓明和她女朋友的信息
FROM `beauty` b
INNER JOIN boy bo 
ON bo.`id`=b.`boyfriend_id`
WHERE bo.`boyName`='黄晓明';

(2)方式二

  • truncate:清空数据
  • 语法:truncate table 表名;

(3)方式一与方式二区别(⭐)

注意:面试常考!!!!

  • delete 可以加where条件,truncate不能加
  • truncate删除,效率高一丢丢
  • 假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从断1点开始。
  • truncate删除没有返回值,delete删除有返回值
  • truncate删除不能回滚,delete删除可以回滚

二、DDL语言

1.库的管理

注意:库的操作注意关键字!!!!

  • 库的创建(create
    • 语法:create 【if not exists】database 库名;
    • 【if not exists】增加容错性
  • 库的修改(alter
    • 只能更改库的字符集
    • 案例:ALTER DATABASE books CHARACTER SET gbk;
  • 库的删除(drop
    • 语法:drop database 库名;
    • 案例:DROP DATABASE 【 if exists】books;

2.表的管理

(1)表的创建

A.语法

create table 表名(
列名 列名的类型,
。。。
)

案例

CREATE TABLE book(id INT,bBook VARCHAR(20),price DOUBLE,authorId INT,publishDate DATETIME
);

B.常见的数据类型

  • 数值型
    • 整型:tinyint(1字节)、smallint(2字节)、mediumint(3字节)、int\integer(4字节)、bigint(8字节)
      • 特点:
        • 都可以设置无符号和有符号,默认有符号,通过unsigned设置无符号
        • 如果超出范围,会报out or range异常,插入临界值
        • 长度可以不指定,默认会有一个长度
        • 长度代表显示的最大宽度,如果不够则左边用0填充,但需要搭配zerofill,并且默认变为无符号整型
    • 小数
      • 浮点型:float(M,D),double(M,D)
      • 定点型:dec(M,D),decimal(M,D)
      • 特点
        • M:整数部位+小数部位, D:小数部位(如果超过范围,则插入临界值)
        • M和D都可以省略,如果是decimal,则M默认为10,D默认为0;如果是float和double,则会根据插入数值的精度来决定精度
        • 定点型的精度较高,如果要求插入数值的精度较高,如货币运算等,则考虑使用

无符号和有符号的测试:
在这里插入图片描述

  • 字符型
    • 较短的文本:char(M) (M 最多的字符数)、varchar(M) (M 最多的字符数)

      • 两者区别
        在这里插入图片描述
    • 较长的文本:text、blob(较大的二进制)

  • 日期型(必须用单引号引起来!!!
    • date:只保存日期
    • time:只保存时间
    • year:只保存年
    • datetime:保存日期+时间
    • timestamp:保存日期+时间
      • datetime和timestamp区别:
        在这里插入图片描述

(2)表的修改

A.用法

比较简单,就用代码写出来!
注意!!!三个修改的关键字不一样!!!!

  • 修改列名关键字:change
  • 修改列的类型或约束:modify
  • 修改表名:rename to
  • 添加新列:add
  • 删除列:drop
#修改列名
alter table book change column publishdate pubDate datetime;
#column列名(可以省略) publishdate旧列名 pubDate新列名 必须加类型 
#修改列的类型或约束
alter table book modify column pubDate timestamp;
#pubDate列名 timestamp改过后的类型
#添加新列
alter table author add column annual double;
#删除列
alter table author drop column annual;
#修改表名
alter table author rename to column book_authors;
#
#

B.约束

不知道约束是什么的小伙伴,可以移步->常见的约束

#添加非空约束(因为表级约束不支持,所以只写列级约束)
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
#添加默认约束(因为表级约束不支持,所以只写列级约束)
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
#添加主键(列级约束)
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
#添加主键(表级约束)
ALTER TABLE stuinfo ADD INT PRIMARY KEY(id);
#添加唯一(列级约束)
ALTER TABLE stuinfo MODIFY COLUMN SET INT UNIQUE;
#添加唯一(表级约束)
ALTER TABLE stuinfo ADD INT UNIQUE(seat);
#添加外键(因为列级约束不支持,所以只写表级约束)
ALTER TABLE stuinfo ADD FOREIGN KEY(majorid) REFERENCES major(id);

(4)表的删除

语法:drop table 表名;

(5)表的复制

  • 仅仅复制表的结构(全部结构)
create table copy like author;
  • 仅仅复制某些字段
create table copy4 select id,au_name from author where 1=2;
  • 复制表的结构+数据
create table copy2  select * from author;
  • 只复制部分数据
create table copy3 select id,au_name from author where nation='中国';
  • 跨库复制数据

只需要注意from后面那一步!

#将表`departments`中的数据插入新表dept2中
SELECT TABLE dept2 
SELECT `department_id`,`department_name`
FROM `myemployees`.`departments`;

(6)标识列

含义:又称为自增长列;可以不用手动的插入列,系统提高默认的序列值。

创建表时设置标识列:

CREATE TABLE stud(id INT PRIMARY KEY AUTO_INCREMENT,`name` VARCHAR(20)
)
  • 设置步长,起始值不能通过这种方式设置
SET auto_increment_increment=3;
  • 更改起始值,自己手动的设置
INSERT INTO stu VALUES(10,'john');#假如设置10为起始值
INSERT INTO stu VALUES(NULL,'john');#再运行这句,就可以达到效果

修改表时设置标识列:

#修改表时设置标识列,必须在没加数据,没设置标识列之前
ALTER TABLE stu MODIFY COLUMN id PRIMARY KEY AUTO_INCREMENT;#修改表示删除标识列
ALTER TABLE stu MODIFY COLUMN id INT;

总结

这篇文章较重要的就是关键字,删除库,删除数据的关键字不一样,而且表的管理的内容较多,注意看代码!!!


http://chatgpt.dhexx.cn/article/DJ3pxbPM.shtml

相关文章

ddl是什么意思网络语_DDL(数据定义语言)

DDL,是对数据库内部的对象进行创建,删除,修改等的操作语言。它和DML语言最大的区别是DML只是对表内部数据的操作,而不涉及到表的定义,结构的修改,更不会涉及到其它对象。 1.连接数据库: 注:1.mysql代表客户端命令,-u后面跟连接的数据库用户,-p表示需要输入密码。 2.命令…

数据库定义语言(DDL)详解

数据库定义预压(DDL 语言)是重要的语言之一。包含三个关键字:CREATE,DROP,ALTER。 数据库语言都遵循巴科斯范式,其语言规范如下所示:L利用CREATE关键字可以实现定义:定义数据库,定义表,定义索引,定义视图等…

枚举到底是个什么鬼类型?

前言 枚举是很多面向对象语言都会有的一种类型,它可以将表达同一类型的变量组合成一个集合,组成一个常量集 在Java中也有枚举类型,是用enum关键字来表示的 枚举常用来表示一个常量集,用来限定变量的取值,只能在枚举…

面试官:为啥需要枚举?枚举有什么作用?怎么用枚举实现单例?

点赞再看,养成习惯,微信搜索【三太子敖丙】关注这个互联网苟且偷生的工具人。 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 Java基础:枚举的用法与原理 在学习过程中&…

了解什么是枚举(enumeration)

1、枚举是一组常量的集合。还可以看成包含有限特定的对象。 2、自定义枚举的步骤: 将构造器私有化private将get方法拿掉在类的内部直接创建固定的对象,比如:public static Season SPRING new Season("春天","温暖");使…

Java~枚举的使用

目录 枚举的定义 枚举的使用 values()的使用 ordinal()的使用 valueOf() 的使用 compareTo()的使用 枚举的优缺点 枚举的定义 枚举是JDK1.5以后引入的。主要用途:将一组常量组织起来,在引入枚举之前表示一组常量通常是使用定义常量的方式&…

枚举类的使用方法

一、理解枚举类型 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。下面先来看看如何写…

java枚举类详解

一、初始枚举 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。下面先来看看什么是枚举…

(JAVA): 自定义枚举和enum枚举类型------详解。

目录 言图: ☣☣一、基本介绍 ☣1、什么是枚举 ☣2、枚举的特点 ☣3、枚举的实现方式 ☣☣二、自定义类实现枚举 ☣1、自定义枚举的特点 ☣2、代码示例 ☣3、代码分析 ☣☣三、enum关键字实现枚举 ☣1、enum使用细节 ☣2、enum实现接口 ☣3、代码示例 …

色彩-基础理论

颜色三大指标 色相 色相是颜色的一个属性,只有黑白灰没有色相这个属性(那银灰色是什么?) 颜色的相貌,指的也是给颜色一个名字 例如:暗红、酒红、土黄、墨绿 饱和度 颜色的鲜艳程度 纯度 饱和度主要取决于含色成分和消色成分&a…

10bit、8bit色彩深度的区别

下面 一张图能说明区别,10bit能表现的颜色值范围更多

OpenCV色彩空间与通道

色彩空间与通道 色彩空间(Color Space)是指用来描述和表示图像颜色的一种方式。不同的色彩空间具有不同的颜色模型和表示方式,常见的色彩空间包括 RGB、CMYK、HSV、Lab 等。 通道(Channel)是指在某种色彩空间中独立表…

色彩空间(一):色彩空间基础

转载自:https://www.zhangxiaochun.com/color-space-1/ 序言 相信很多做设计的小伙伴都听说过 RGB 或者 CMYK 这样的概念,RGB 和 CMYK 就是两个典型的色彩空间模式,前者主要用于光学色彩展示(比如我们的电脑显示屏)&am…

【数字图像处理】色彩模型

作者介绍:小星的学习笔记,一名努力成为合格程序员的本科在读生 提示:本文仅为学习复习笔记,如有不对欢迎指正🎉🎉🎉 文章目录 前言 一、什么是色彩模型? 二、面向设备的色彩模型 …

色阶

Ps菜单:图层/新建调整图层/色阶 Layer/New Adjustment Layer/Levels Ps菜单:图像/调整/色阶 Image/Adjustments/Levels 快捷键:Ctrl/Cmd L 色阶 Levels命令可以调整图像的阴影、中间调和高光的强度级别,校正色调范围和色彩平衡。…

调色进阶工具的一些认识——色彩平衡

打开色彩平衡里面的内容,以及有哪些功能 我们打开CR里面也有阴影高光 阴影 高光 中间调什么概念呢,等于我们打开一张图片把这张图片分成了这三个部分。 阴影:在图指的是颜色偏暗的,那么根据这个颜色条红色部分同理可选颜色&a…

PS 色阶调整之算法公式原理详解及 Python 实现(色阶原理)

本文介绍了 PS 中色阶的实现原理及公式,并用 Python 实现,自测与 PS 的色阶调整效果基本完全一样(使用和 PS 中色阶相同的参数对比效果,包括各极限值,本文只实现了 RGB 整体色阶的处理,对各个通道的处理逻辑…

第四章 Opencv图像色彩空间与通道

文章目录 1.色彩空间1-1.RGB/BGR色彩空间1-2.GRAY色彩空间1-3.HSV色彩空间 2.通道2-1.拆分通道:split()方法1.拆BGR色彩空间图像的通道2.拆HSV色彩空间图像的通道 2-2.合并通道:merge()方法1.B、G、R 通道的合并2.H、S、V 通道的合并3.B、G、R、A 通道的…

halcon画出灰度直方图_Halcon绘制彩色深度图

此小文主要介绍颜色空间的转换,将深度图转为彩色,借以说明颜色转换与图像通道,下面是效果: 彩色深度图.jpg 深度图的生成 深度图的生成有便捷的算子可用,主要使用了binocular_disparity算子,输入左右两幅图…

【色度学】颜色的显色系统

我的理解: 色相:绝对量,表示颜色。 视明度:人眼视觉对某一刺激量知觉光的数量的多少,是知觉的绝对量。 明度:人眼视觉对某一刺激量直觉出其与周围白点或者最亮区域的相对亮度。 明度 视明度/白场视明度 视彩…