MySQL DDL 数据定义
文章目录
- 1.创建数据库
- 2.删除数据库
- 3.查看所有数据库
- 4.查看当前数据库
- 5.选择数据库
- 6.创建数据表
- 7.查看 MySQL 支持的存储引擎和默认的存储引擎
- 8.删除数据表
- 9.查看数据库的数据表
- 10.查看表结构
- 11.查看建表语句
- 12.重命名数据表
- 13.增加、删除和修改字段自增长
- 14.增加、删除和修改数据表的列
- 15.添加、删除和查看索引
- 16.约束管理
- 17.创建临时表
- 18.创建内存表
- 19.修改数据表的存储引擎
- 20.查看数据库数据表存储位置
- 21.创建 merge 表
- 22.清空表内容
- 参考文献
1.创建数据库
CREATE DATABASE db_name;
2.删除数据库
DROP DATABASE db_name;
3.查看所有数据库
SHOW DATABASES;
4.查看当前数据库
SELECT DATABASE();
5.选择数据库
USE db_name
6.创建数据表
CREATE TABLE [IF NOT EXISTS] tbl_name (col_name col_type [is null] [key] [default value] [extra] [comment],...
)[engine] [charset];
上面的建表语句命令格式,除了表名,字段名和字段类型,其它都是可选参数,可有可无,根据实际情况来定。
is null 表示该字段是否允许为空,不为空为 NOT NULL,不指明默认为 NULL。
key 表示该字段是否是主键、外键、唯一键还是索引。
default value 表示该字段在未显示赋值时的默认值。
extra 表示其它的一些修饰,比如自增 auto_increment。
comment 表示对该字段的说明注释。
engine 表示数据库存储引擎,MySQL 支持的常用引擎有 MyISAM、InnoDB、MEMORY 和 ARCHIVE 等,不显示指明默认使用 MyISAM。
charset 表示数据表数据存储编码格式,默认为 latin1。
存储引擎是什么? 其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。
主键(Primary Key)与唯一键(Unique Key)有什么区别?
- 主键的一个或多个列必须为 NOT NULL,而唯一键可以为 NULL。
- 一个表只能有一个主键,但可以有多个唯一键。
以学生表为例,演示数据表的创建。
学生表设计:
| 字段(Field) | 类型(Type) | 可空(Null) | 键(Key) | 其他(Extra) |
|---|---|---|---|---|
| 学号(student_no) | INT UNSIGNED | NOT NULL | PRI | AUTO_INCREMENT |
| 姓名(name) | VARCHAR(12) | NOT NULL | N | |
| 学院(school) | VARCHAR(12) | NOT NULL | N | |
| 年级(grade) | VARCHAR(12) | NOT NULL | N | |
| 专业(major) | VARCHAR(12) | NOT NULL | N | |
| 性别(gender) | Boolean | NOT NULL | N | |
| 爱好(hobby) | VARCHAR(128) | NULL | N |
建表语句:
CREATE TABLE IF NOT EXISTS student(student_no INT UNSIGNED NOT NULL COMMENT '学号' AUTO_INCREMENT,name VARCHAR(12) NOT NULL COMMENT '姓名',school VARCHAR(12) NOT NULL COMMENT '学院',grade VARCHAR(12) NOT NULL COMMENT '年级',major VARCHAR(12) NOT NULL COMMENT '专业',gender BOOLEAN NOT NULL COMMENT '性别',hobby VARCHAR(128) NULL COMMENT '爱好',PRIMARY KEY(student_no)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20160001;
观察上面的建表语句需要注意四点:
- 可以使用 IF NOT EXISTS 来判断数据表是否存在,存在则创建,不存在则不创建,这样可以避免因重复创建表导致失败。
- 设置主键时可以将 PRIMARY KEY 放在字段的后面来修饰,也可以另起一行单独来指定主键。
- NOT NULL 表示字段不允许为空,不指明,默认允许为 NULL,也可以显示指明 NULL,表示允许为空。
- 设置自增时,可以指定自增的起始值,MySQL 默认是从 1 开始自增,比如 QQ 号是从 10000 开始的。
7.查看 MySQL 支持的存储引擎和默认的存储引擎
可以使用 SHOW ENGINES 列出所有可用的存储引擎以及每个存储引擎的状态、默认值等信息。在结果中,可以查看 Support 列来确定每个存储引擎是否受支持以及默认的存储引擎是什么。
SHOW ENGINES;
查看默认的存储引擎也可以使用下面的方式。
SHOW VARIABLES LIKE '%storage_engine';
8.删除数据表
DROP TABLE [IF EXISTS] tbl_name1 [, tbl_name2, tbl_name3 ...]
为了避免在尝试删除不存在的表时出现错误,建议您在使用 DROP TABLE 时加上 IF EXISTS 子句。
# 删除单个数据表。
DROP TABLE [tablename];# 数据表存在时才删除,不会产生 Warning。
DROP TABLE IF EXISTS tbl_name1;# 同时删除多个数据表。
DROP TABLE IF EXISTS tbl_name1,tbl_name2,...;
9.查看数据库的数据表
# 查看当前数据库。不能使用 limit 子句
SHOW TABLES;# 模糊查找
SHOW TABLES LIKE '%tbl_name%'# 查看指定数据库
SHOW TABLES FROM dbname# 或者
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbname' AND TABLE_NAME LIKE "tbl_name" LIMIT 5;
10.查看表结构
DESC tbl_name;# 或
DESCRIBE tbl_name;# 或
SHOW COLUMNS FROM tbl_name;
11.查看建表语句
SHOW CREATE TABLE tbl_name;
12.重命名数据表
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ...
13.增加、删除和修改字段自增长
(1)删除字段自增长。
# 命令格式
ALTER TABLE tbl_name CHANGE old_col_name new_col_name column_definition;# 取消 student_no 的自增长
ALTER TABLE student CHANGE student_no student_no INT(10) UNSIGNED;
注意列名称要重复一次,即需要将列的名称写两次,因为一个是旧列明,一个是新列名,即使二者是相同的,新列明也不能省略。
(2)增加字段自增长。
# 命令格式
ALTER TABLE tbl_name MODIFY col_name col_type AUTO_INCREMENT;# 或者与上面删除字段自增长相反
ALTER TABLE tbl_name CHANGE old_col new_col col_type AUTO_INCREMENT;# 示例,添加 student_no 自增长
ALTER TABLE student MODIFY student_no INT(10) UNSIGNED AUTO_INCREMENT;
添加自增长的列必须为 NOT NULL 以及 PRIMARY KEY(UNIQUE)。如果不是,需添加相应定义。
(3)修改自增长起始值。
# 命令格式
ALTER TABLE tbl_name AUTO_INCREMENT=value;# 设置 student_no 从 10000 开始自增
ALTER TABLE tbl_name AUTO_INCREMENT=10000;
注意,设定的起始值 value 只能大于已有的 auto_increment 的整数值,小于的值无效。
使用下面的语句可以看到 Auto_increment 这一列现有的起始值。
SHOW TABLE STATUS LIKE 'tbl_name';
14.增加、删除和修改数据表的列
(1)增加列。
ALTER TABLE tbl_name ADD COLUMN col_name col_definition [FIRST | AFTER col_name];
如果不指定 FIRST(添加到第一列)或 AFTER col_name,新列将会添加到表的最后一列。
以下是一些示例。
# 示例 1,为数据表 student 增加家乡 hometown
ALTER TABLE student ADD COLUMN hometown varchar(32) comment '家乡';# 示例 2,在指定列后新增列,而非默认最后一列
ALTER TABLE student ADD COLUMN hometown varchar(32) comment '家乡' AFTER major;# 示例 3,同时增加多个列
ALTER TABLE student ADD COLUMN hometown varchar(32) comment '家乡' AFTER major, ADD COLUMN hobby varchar(128) AFTER hometown;
(2)删除列。
ALTER TABLE tbl_name DROP COLUMN column1, DROP COLUMN column2, ...;
如果您想删除表 orders 中的 quantity 和 price 列,则可以使用以下语句。
ALTER TABLE orders DROP COLUMN quantity, DROP COLUMN price;
(3)重命名列。
ALTER TABLE tbl_name CHANGE old_col new_col col_definition;
(4)修改列属性。
alter table tbl_name MODIFY col_name col_definition;
如修改 home 类型为 varchar(64) 且不允许 NULL:
ALTER TABLE student MODIFY home VARCHAR(64) NOT NULL;
15.添加、删除和查看索引
(1)添加索引。
ALTER TABLE tbl_name ADD INDEX [index_name](column1, column2,...);
其中 index_name 是可选的。如果不指定索引的名称,MySQL 会自动生成一个索引名称。这通常是在表名、列名和一些标识符的基础上生成的。
以下是一些示例。
# 为数据表 student 数据列 student_no 添加索引
ALTER TABLE student ADD INDEX index_student_no(student_no);# 或者
ALTER TABLE student ADD INDEX (student_no);
上面示例的第二种方法,如果不显示指明索引名称的话,默认以列名称作为索引名称。添加索引是为了提高查询速率。
(2)查看索引。
SHOW INDEX FROM tbl_name;
(3)删除索引。
ALTER TABLE tbl_name DROP INDEX index_name;
16.约束管理
(1)查看约束。
SHOW CREATE TABLE tbl_name;
这将显示创建表的完整 SQL 语句,包括列定义、索引和约束等信息。您可以在这个输出中查找约束的定义。
使用 INFORMATION_SCHEMA 也可以查询。
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE TABLE_NAME = 'tbl_name';
这将返回指定表的约束信息,包括约束名称和约束类型。
(2)删除约束。
要删除约束,可以使用 ALTER TABLE 语句并指定约束类型和名称。
# 删除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY;# 删除外键约束
ALTER TABLE tbl_name DROP FOREIGN KEY constraint_name;
17.创建临时表
创建表时可以使用TEMPORARY关键字。TEMPORARY表只在当前会话中可见,并且在会话关闭时自动删除。这意味着两个不同的会话可以使用相同的临时表名,而不会相互冲突,也不会与已有的同名非临时表冲突。(现有表被隐藏,直到临时表被删除。)
CREATE TEMPORARY TABLE [IF NOT EXISTS] tbl_name(col_name col_type [is null] [key] [default value] [extra] [comment],...
);# 示例
CREATE TEMPORARY TABLE pig(i int);
(1)创建临时表与创建普通表的语句基本是一致的,只是多了一个 TEMPORARY 关键字。
(2)临时表的特点是:表结构和表数据都是存储到内存中的,生命周期是当前 MySQL 会话,会话结束后,临时表自动被 drop。
(3)注意临时表与内存表(Memory Table)的区别是:
- Memory表的表结构存储在磁盘,临时表的表结构存储在内存。
- SHOW TABLES 看不到临时表,但看得到内存表。
- 内存表的生命周期是服务端 MySQL 进程生命周期,MySQL 重启或者关闭后内存表里的数据会丢失,但是表结构仍然存在,而临时表的生命周期是 MySQL 客户端会话。
- 内存表支持唯一索引,临时表不支持唯一索引。
- 在不同会话可以创建同名临时表,不能创建同名内存表。
18.创建内存表
与创建表的命令格式相同,只是显示地在后面指明存储引擎为 MEMORY。
# 命令格式
CREATE TABLE tbl_name ( col_name col_type [is null] [key] [default value] [extra] [comment],...)ENGINE=memory;# 示例
CREATE TABLE pig(i int) ENGINE=MEMORY;
19.修改数据表的存储引擎
ALTER TABLE tbl_name ENGINE=engine_name;# 将数据表test存储引擎设置为 InnoDB
alter table test ENGINE=InnoDB;
20.查看数据库数据表存储位置
SHOW GLOBAL VARIABLES LIKE "%datadir%";
21.创建 merge 表
MERGE 存储引擎把一组 MyISAM 数据表当做一个逻辑单元来对待,让我们可以同时对他们进行增删查改。构成一个 MERGE 数据表结构的各成员 MyISAM 数据表结构(索引、引擎、列、字符集等)必须相同。
假设你有几个日志数据表,他们内容分别是这几年来每一年的日志记录项,他们的定义都是下面这样,YY代表年份:
CREATE TABLE log_YY
( dt DATETIME NOT NULL, info VARCHAR(100) NOT NULL, INDEX (dt)
) ENGINE = MyISAM;
假设日志数据表的当前集合包括log_2015、log_2016、log_2017,而你可以创建一个如下所示的MERGE数据表把他们归拢为一个逻辑单元:
CREATE TABLE log_merge
(dt DATETIME NOT NULL,info VARCHAR(100) NOT NULL,INDEX(dt)
) ENGINE = MERGE UNION=(log_2015,log_2016,log_2017) INSERT_METHOD=LAST;
(1)ENGINE 选项的值必须是 MERGE 或 MRG_MYISAM。
(2)UNION 选项列出了将被收录在这个 MERGE 数据表离得各有关数据表。把这个 MERGE 表创建出来后,就可以像对待任何其他数据表那样查询它,只是每一次查询都将同时作用与构成它的每一个成员数据表 。下面这个查询可以让我们知道上述几个日志数据表的数据行的总数。
SELECT COUNT(*) FROM log_merge;
(3)除了便于同时引用多个数据表而无需多条查询,MERGE数据表还提供了以下一些便MERGE数据表也支持DELETE 和UPDATE操作。INSERT操作比较麻烦,因为MySQL需要知道应该把新数据行插入到哪一个成员表里去。在MERGE数据表的定义里可以包括一个INSERT_METHOD选项,这个选项的可取值是 NO、FIRST、LAST,他们的含义依次是INSERT操作是被禁止的、新数据行将被插入到现在UNION选项里列出的第一个数据表或最后一个数据表。
(4)对现有的merge表可以删除或新增包好的数据表,比如新增相同结构的数据表log_2018。
CREATE TABLE log_2009 LIKE log_2008;
ALTER TABLE log_merge UNION=(log_2015, log_2016,log_2017,log_2018);
22.清空表内容
TRUNCATE [TABLE] tbl_name
TRUNCATE 与 DELETE 均可以删除表记录,区别主要有如下几点:
(1)truncate 属于 DDL,delete 属于 DML。
(2)truncate 用于删除表中的所有行,delete 可以使用 where 子句有选择地进行删除。
(3)delete 每次删除一行,并在事务日志中为所删除的每行记录一项。truncate 释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,所以truncate 比 delete 使用的系统和事务日志资源更少,效率更高。
(4)truncate 导致自动增加字段的初始值被重置,delete 没有影响,自增字段的值还是按照最后一次插入的基础上递增。
(5)对于由 FOREIGN KEY 约束引用的表,不能使用 truncate,而应使用不带 where 子句的 delete 语句。由于 truncate 不记录在日志中,所以它不能激活触发器。
(6)TRUNCATE TABLE 不能用于参与了索引视图的表。
(7)对用 TRUNCATE TABLE 删除数据的表上增加数据时,要使用UPDATE STATISTICS来维护索引信息。
(8)如果有 ROLLBACK 语句,DELETE 操作将被撤销,但 TRUNCATE 不会撤销。
请记住,当你不再需要该表时用 DROP;当你仍要保留该表,但要删除所有记录时用 TRUNCATE;当你要删除部分记录时用 DELETE。
参考文献
MySQL Data Definition Statements
相关文章:
MySQL DDL 数据定义
文章目录 1.创建数据库2.删除数据库3.查看所有数据库4.查看当前数据库5.选择数据库6.创建数据表7.查看 MySQL 支持的存储引擎和默认的存储引擎8.删除数据表9.查看数据库的数据表10.查看表结构11.查看建表语句12.重命名数据表13.增加、删除和修改字段自增长14.增加、删除和修改数…...
Ventoy 设置VTOY_MAX_SEARCH_LEVEL = 0只扫描U盘根目录 不扫码子目录
在镜像分区/media/yeqiang/Ventoy创建目录ventory,目录内创建文件ventoy.json,内容如下 {"control":[{ "VTOY_MAX_SEARCH_LEVEL": "0" }] }采用系统默认的utf-8编码。 参考: search path . Ventoy Plugin.e…...
vue3父子同信的双向数据实现
前言: 我们知道的是,父传子的通信,和子传父的通信,那如何实现父子相互通信的呢? (vue3中)v-model 和modelValue结合使用,在vue2中使用的是.sync 在父组件的写法 <template> <Son v-model"num" /&…...
Shiro是什么?为什么要用Shiro?
前言 本文小新为大家带来 Shiro入门概述 相关知识,具体内容包括Shiro是什么,为什么要用 Shiro,Shiro与Spring Security 的对比,Shiro的基本功能(包括:基本功能框架,功能简介)&#x…...
Vue3+Vite+Pinia+Naive后台管理系统搭建之九:layout 动态路由布局
前言 如果对 vue3 的语法不熟悉的,可以移步Vue3.0 基础入门,快速入门。 1. 系统页面结构 由 menu,面包屑,用户信息,页面标签,页面内容构建 2. 创建页面 创建 src/pages/layout.vue 布局页 创建 sr…...
从零开始学Python(Ⅰ)基本变量与数据类型
🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Python的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.关于Python的基本知识(变量…...
SQL ASNI where from group order 顺序 where和having,SQL底层执行原理
SQL语句执行顺序: from–>where–>group by -->having — >select --> order 第一步:from语句,选择要操作的表。 第二步:where语句,在from后的表中设置筛选条件,筛选出符合条件的记录。 …...
Mac M2 Ventura(13.3) 新机 安装Cocoapods
1.执行命令: sudo gem install cocoapods 因为是新机,内置的ruby版本是(2.6.0)太低,会报错 所以需要安装新的ruby版本 2.如果已经安装了低版本的homebrew,可以先卸载: 卸载: /b…...
Unity 引擎做残影效果——2、屏幕后处理方式
Unity实现残影效果 大家好,我是阿赵。 这里继续介绍Unity里面做残影的方法。之前介绍了BakeMesh的方法做残影,这一期介绍的是用屏幕后处理的方法做残影。 一、原理 之前的BakeMesh方法,是真的生成了很多个网格模型在场景里面。如果用后处理做…...
考研算法38天:反序输出 【字符串的翻转】
题目 题目收获 很简单的一道题,但是还是有收获的,我发现我连scanf的字符串输入都忘记咋用了。。。。。我一开始写的 #include <iostream> #include <cstring> using namespace std;void deserve(string &str){int n str.size();int…...
“深入解析JVM:探秘Java虚拟机的工作原理“
标题:深入解析JVM:探秘Java虚拟机的工作原理 摘要:本文将深入探讨Java虚拟机(JVM)的工作原理,包括类加载、内存管理、垃圾回收、即时编译等关键概念。通过详细解析JVM的各个组成部分,读者将能够…...
[Flask]SSTI1
根据题目提示,这关应该是基于Python flask的模版注入,进入靶场环境后就是一段字符串,而且没有任何提示,有点难受,主要是没有提示注入点 随机尝试一下咯,首先尝试一下guest,GET传参 但是没有反应…...
Object Map 的相互转换
学生业务对象定义:Student Student student new Student(); student.setId(1L); student.setName("令狐冲") student.setAge(10) 第一种:通过Alibaba Fastjson实现 pom.xml 文件依赖 <dependency><groupId>com.alibaba</g…...
VS+Qt环境下解决中文乱码问题
目录 原因解决方案总结 原因 使用VSQt出现中文乱码的情况一般都是给控件添加中文文本时出现,而控件需要的字符串类型是QString,默认是utf-8。在 Visual Studio 中,源代码文件的默认执行字符集可能是 Windows 默认的 ANSI 字符集,…...
互联网摸鱼日报(2023-08-08)
互联网摸鱼日报(2023-08-08) 36氪新闻 宝洁、欧莱雅、联合利华加大广告预算投入:越萧条,要越营销? 把智能手机的“高端货”装进汽车,厂商的脑洞越来越大了 王一博《热烈》票房破7亿,街舞是一门怎样的生意࿱…...
NTT DATA利用相干伊辛机模拟基因组组装和疾病治疗的潜力
(图片来源:网络) 7月20日,日本领先的IT服务提供商和行业咨询公司NTT DATA宣布完成了一个使用量子计算优化基因组组装过程的项目。这是量子计算应用于医疗保健和生命科学行业中的一个里程碑。 本项目通过比较量子和非量子计算方…...
哈希表语法(转载自用)
哈希表 哈希表是一种很常见的数据结构,我现在平时刷算法题一般使用C++刷(不要问我为什么,懂的都懂)。C++关于哈希表有很多数据结构,平时使用的比较多的有unordered_set 跟 unordered_map。其中unordered_map 存储的是键值对。 其实我们在某些情况下可以使用数组构建哈希表…...
打破界限,图文档与物料清单完美互联
在现代企业的产品开发过程中,图文档和物料清单是不可或缺的重要信息。然而,由于数据来源多样、格式繁杂,图文档与物料清单之间的信息传递往往存在障碍。而PDM系统(Product Data Management,产品数据管理)的…...
【电机绘图】:插补算法(一)—直线插补—逐点比较法
今日介绍学习一种使用电机作画、绘图、加工零件时需要使用的算法 : 插补算法 本文提供直线插补的概念基础,基本思路分析,C语言实现等,代码会直接贴出! 插补算法是指在数值计算或数据处理中,根据已有的数据…...
16-2_Qt 5.9 C++开发指南_使用样式表Qss自定义界面
进行本篇介绍学习前,请先参考链接01_1_Qt工程实践_Qt样式表Qss,后再结合本篇进行融合学习如何使用样式表定义界面。 文章目录 1. Qt样式表2. Qt样式表句法2.1 一般句法格式2.2 选择器 (selector)2.3 子控件(sub-controls)2.4 伪状…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
