SQL世界之命令语句Ⅴ

目录

一、SQL CREATE INDEX 语句

1.SQL CREATE INDEX 语句

2.SQL CREATE INDEX 语法

3.SQL CREATE UNIQUE INDEX 语法

4.SQL CREATE INDEX 实例

二、SQL 撤销索引、表以及数据库

1.SQL DROP INDEX 语句

2.SQL DROP TABLE 语句

3.SQL DROP DATABASE 语句

4.SQL TRUNCATE TABLE 语句

三、SQL ALTER TABLE 语句

1.ALTER TABLE 语句

2.SQL ALTER TABLE 语法

3.SQL ALTER TABLE 实例

4.DROP COLUMN 实例

四、SQL AUTO INCREMENT 字段

1.AUTO INCREMENT 字段

2.用于 MySQL 的语法

3.用于 SQL Server 的语法

4.用于 Access 的语法

5.用于 Oracle 的语法

五、SQL VIEW(视图)

1.SQL CREATE VIEW 语句

2.SQL CREATE VIEW 语法

3.SQL CREATE VIEW 实例

4.SQL 更新视图

5.SQL 撤销视图

六、SQL NULL 值

1.SQL NULL 值

2.SQL 的 NULL 值处理

1.SQL IS NULL

2.SQL IS NOT NULL


一、SQL CREATE INDEX 语句

1.SQL CREATE INDEX 语句

CREATE INDEX 语句用于在表中创建索引,在不读取整个表的情况下,使数据库应用程序可以更快地查找数据。

索引只能被用来加速搜索/查询,不能被用户看到。

注:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。理想的做法是仅在常被搜索的列(以及表)上面创建索引。

2.SQL CREATE INDEX 语法

在表上创建一个简单的索引(允许使用重复的值):

CREATE INDEX index_name

ON table_name (column_name)

注:"column_name" 规定需要索引的列。

3.SQL CREATE UNIQUE INDEX 语法

在表上创建一个唯一的索引(唯一的索引意味着两个行不能拥有相同的索引值):

CREATE UNIQUE INDEX index_name

ON table_name (column_name)

4.SQL CREATE INDEX 实例

创建一个简单的索引,名为 "Index_Pers",在 Person 表的 LastName 列:

CREATE INDEX Index_Pers

ON Person (LastName)

以降序索引某个列中的值,可以在列名称之后添加保留字 DESC:

CREATE INDEX Index_Pers

ON Person (LastName DESC)

索引不止一个列,可以在括号中列出这些列的名称,并用逗号隔开:

CREATE INDEX Index_Pers

ON Person (LastName, FirstName)

二、SQL 撤销索引、表以及数据库

1.SQL DROP INDEX 语句

使用 DROP INDEX 命令删除表格中的索引。

①用于 Microsoft SQLJet (以及 Microsoft Access) 的语法:

DROP INDEX index_name ON table_name

②用于 MS SQL Server 的语法:

DROP INDEX table_name.index_name

③用于 IBM DB2 和 Oracle 语法:

DROP INDEX index_name

④用于 MySQL 的语法:

ALTER TABLE table_name DROP INDEX index_name

2.SQL DROP TABLE 语句

DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):

DROP TABLE 表名称

3.SQL DROP DATABASE 语句

DROP DATABASE 语句用于删除数据库:

DROP DATABASE 数据库名称

4.SQL TRUNCATE TABLE 语句

使用 TRUNCATE TABLE 命令仅删除表格中的数据,但并不删除表本身:

TRUNCATE TABLE 表名称

三、SQL ALTER TABLE 语句

1.ALTER TABLE 语句

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

2.SQL ALTER TABLE 语法

在表中添加列:

ALTER TABLE table_name

ADD column_name datatype

删除表中的列:

ALTER TABLE table_name

DROP COLUMN column_name

注:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。

改变表中列的数据类型:

ALTER TABLE table_name

ALTER COLUMN column_name datatype

Persons 表:

Id

LastName

FirstName

Address

City

001

Aam

Joh

Oxd Street

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Can Street

Beijing

3.SQL ALTER TABLE 实例

在表 "Persons" 中添加一个名为 "Birthday" 的新列:

ALTER TABLE Persons

ADD Birthday date

注:新列 "Birthday" 的类型是 date,可以存放日期。

新"Persons" 表:

Id

LastName

FirstName

Address

City

Birthday

001

Aam

Joh

Oxd Street

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Can Street

Beijing

改变 "Persons" 表中 "Birthday" 列的数据类型:

ALTER TABLE Persons

ALTER COLUMN Birthday year

注:"Birthday" 列的数据类型是 year,可以存放 2 位或 4 位格式的年份。

4.DROP COLUMN 实例

删除 "Person" 表中的 "Birthday" 列:

ALTER TABLE Person

DROP COLUMN Birthday

Persons 表:

Id

LastName

FirstName

Address

City

001

Aam

Joh

Oxd Street

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Can Street

Beijing

四、SQL AUTO INCREMENT 字段

1.AUTO INCREMENT 字段

Auto-increment 会在新记录插入表中时生成一个唯一的数字。

2.用于 MySQL 的语法

把 "Persons" 表中的 "P_Id" 列定义为 Auto-increment 主键:

CREATE TABLE Persons

(

P_Id int NOT NULL AUTO_INCREMENT,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

PRIMARY KEY (P_Id)

)

MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。

默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。

AUTO_INCREMENT 序列以其他的值起始:

ALTER TABLE Persons AUTO_INCREMENT=100

在 "Persons" 表中插入新记录,不必为 "P_Id" 列规定值(会自动添加一个唯一的值):

INSERT INTO Persons (FirstName,LastName)

VALUES ('Bill','Gates')

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 会被赋予一个唯一的值。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

3.用于 SQL Server 的语法

把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:

CREATE TABLE Persons

(

P_Id int PRIMARY KEY IDENTITY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务。

默认地,IDENTITY 的开始值是 1,每条新记录递增 1。

要规定 "P_Id" 列以 10 起始且递增 1,请把 identity 改为 IDENTITY(10,1)

在 "Persons" 表中插入新记录,不必为 "P_Id" 列规定值(会自动添加一个唯一的值):

INSERT INTO Persons (FirstName,LastName)

VALUES ('Bill','Gates')

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 会被赋予一个唯一的值。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

4.用于 Access 的语法

把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:

CREATE TABLE Persons

(

P_Id int PRIMARY KEY AUTOINCREMENT,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

MS Access 使用 AUTOINCREMENT 关键字来执行 auto-increment 任务。

默认地,AUTOINCREMENT 的开始值是 1,每条新记录递增 1。

要规定 "P_Id" 列以 10 起始且递增 1,请把 autoincrement 改为 AUTOINCREMENT(10,1)

在 "Persons" 表中插入新记录,不必为 "P_Id" 列规定值(会自动添加一个唯一的值):

INSERT INTO Persons (FirstName,LastName)

VALUES ('Bill','Gates')

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 会被赋予一个唯一的值。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

5.用于 Oracle 的语法

在 Oracle 中,代码稍微复杂一点。通过 sequence 对创建 auto-increment 字段(该对象生成数字序列)。

使用 CREATE SEQUENCE 语法:

CREATE SEQUENCE seq_person

MINVALUE 1

START WITH 1

INCREMENT BY 1

CACHE 10

上面的代码创建名为 seq_person 的序列对象,它以 1 起始且以 1 递增。该对象缓存 10 个值以提高性能。CACHE 选项规定了为了提高访问速度要存储多少个序列值。

在 "Persons" 表中插入新记录,必须使用 nextval 函数(该函数从 seq_person 序列中取回下一个值):

INSERT INTO Persons (P_Id,FirstName,LastName)

VALUES (seq_person.nextval,'Lars','Monsen')

上面的 SQL 语句会在 "Persons" 表中插入一条新记录。"P_Id" 的赋值是来自 seq_person 序列的下一个数字。"FirstName" 会被设置为 "Bill","LastName" 列会被设置为 "Gates"。

五、SQL VIEW(视图)

1.SQL CREATE VIEW 语句

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以提交数据,就像这些来自于某个单一的表。

注:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。

2.SQL CREATE VIEW 语法

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

注:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。

3.SQL CREATE VIEW 实例

可以从某个查询内部、某个存储过程内部,或者从另一个视图内部来使用视图。

通过向视图添加函数、join 等,可以向用户精确地提交希望提交的数据。

样本数据库 Northwind 拥有一些被默认安装的视图。视图 "Current Product List" 会从 Products 表列出所有正在使用的产品:

CREATE VIEW [Current Product List] AS

SELECT ProductID,ProductName

FROM Products

WHERE Discontinued=No

查询上面这个视图:

SELECT * FROM [Current Product List]

Northwind 样本数据库的另一个视图会选取 Products 表中所有单位价格高于平均单位价格的产品:

CREATE VIEW [Products Above Average Price] AS

SELECT ProductName,UnitPrice

FROM Products

WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

查询上面这个视图:

SELECT * FROM [Products Above Average Price]

另一个来自 Northwind 数据库的视图实例会计算在 1997 年每个种类的销售总数。请注意,这个视图会从另一个名为 "Product Sales for 1997" 的视图那里选取数据:

CREATE VIEW [Category Sales For 1997] AS

SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales

FROM [Product Sales for 1997]

GROUP BY CategoryName

查询上面这个视图:

SELECT * FROM [Category Sales For 1997]

可以向查询添加条件。仅需要查看 "Beverages" 类的全部销量:

SELECT * FROM [Category Sales For 1997]

WHERE CategoryName='Beverages'

4.SQL 更新视图

更新视图:

SQL CREATE OR REPLACE VIEW Syntax

CREATE OR REPLACE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

向 "Current Product List" 视图添加 "Category" 列:

CREATE VIEW [Current Product List] AS

SELECT ProductID,ProductName,Category

FROM Products

WHERE Discontinued=No

5.SQL 撤销视图

通过 DROP VIEW 命令来删除视图。

DROP VIEW view_name

六、SQL NULL 值

1.SQL NULL 值

如果表中的某个列是可选的,那么可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。

注:无法比较 NULL 和 0,因为它们是不等价的。

默认地,表的列可以存放 NULL 值。

NULL 值是遗漏的未知数据。

NULL 值的处理方式与其他值不同。

NULL 用作未知的或不适用的值的占位符。

2.SQL 的 NULL 值处理

"Persons" 表:

Id

LastName

FirstName

Address

City

001

Aam

Joh

London

002

Buh

Grge

Fifth Aue

New York

003

Car

Tmas

Beijing

假如 "Persons" 表中的 "Address" 列是可选的。这意味着如果在 "Address" 列插入一条不带值的记录,"Address" 列会使用 NULL 值保存。

使用 IS NULL 和 IS NOT NULL 操作符来测试 NULL 值,不能使用比较运算符来测试 NULL 值,比如 =, <, 或者 <>。

1.SQL IS NULL

仅选取在 "Address" 列中带有 NULL 值的记录,必须使用 IS NULL 操作符:

SELECT LastName,FirstName,Address FROM Persons

WHERE Address IS NULL

结果集:

LastName

FirstName

Address

Aam

Joh

Car

Tmas

注:请始终使用 IS NULL 来查找 NULL 值。

2.SQL IS NOT NULL

在 "Address" 列中不带有 NULL 值的记录,必须使用 IS NOT NULL 操作符:

SELECT LastName,FirstName,Address FROM Persons

WHERE Address IS NOT NULL

结果集:

LastName

FirstName

Address

Buh

Grge

Fifth Aue

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件压缩炸弹,想到有点后怕

今天了解到一个概念&#xff0c;压缩炸弹。 参考&#xff1a; https://juejin.cn/post/7289667869557178404 https://www.zhihu.com/zvideo/1329374649210302464 什么是压缩炸弹 压缩炸弹&#xff08;也称为压缩文件炸弹、炸弹文件&#xff09;是一种特殊的文件&#xff0c;它…

ACTable开源框架的使用及异常

介绍 ACTable是对Mybatis做的增强功能&#xff0c;支持SpringBoot以及传统的SpringMvc架构&#xff0c;配置简单&#xff0c;使用方便。主要是自动生成数据库表&#xff0c;直接修改java代码&#xff0c;数据库就会对应的变化&#xff0c;省去在调整数据库表的问题&#xff0c…

笔试刷题(持续更新)| Leetcode 45,1190

45. 跳跃游戏 题目链接&#xff1a; 45. 跳跃游戏 II - 力扣&#xff08;LeetCode&#xff09; 这道题思路不难记&#xff0c;遍历数组每个位置&#xff0c;更新下一次的范围&#xff0c;当当前位置已经在当前范围之外时&#xff0c;步数一定得加一&#xff0c;当前范围更新成…

蓝桥杯官网填空题(质数拆分)

问题描述 将 2022 拆分成不同的质数的和&#xff0c;请问最多拆分成几个&#xff1f; 答案提交 本题为一道结果填空的题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将结果输出即可。 运行限制 import java.util.Scanner;public class Main {static int …

Pandas Series 的学习笔记

Pandas Series 的学习笔记 0. Pandas 简介1. Series 学习1-1. 创建 Series1-2. 索引1-3. 选择数据1-4. 修改 Series1-5. Series 的操作 2. 结论 0. Pandas 简介 想象一下&#xff0c;你有一张超级大的餐桌&#xff0c;上面放满了各种各样的食物。Pandas 就像是这张餐桌&#x…

面试:大数据和深度学习之间的关系是什么?

大数据与深度学习之间存在着紧密的相互关系&#xff0c;它们在当今技术发展中相辅相成。 大数据的定义与特点:大数据指的是规模(数据量)、多样性(数据类型)和速度(数据生成及处理速度)都超出了传统数据处理软件和硬件能力范围的数据集。它具有四个主要特点&#xff0c;通常被称…

【Java】零基础蓝桥杯算法学习——二分查找

算法模板一: // 数组arr的区间[0,left-1]满足arr[i]<k,[left,n-1]满足arr[i]>k;Scanner scan new Scanner(System.in);int[] arr {1,2,3,4,5};int left 0,right arr.length-1;int k scan.nextInt();while(left<right) {//leftright时退出循环int mid (leftrigh…

leetcode(双指针)11.盛最多水的容器(C++详细解释)DAY9

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回…

【Django】Django项目部署

项目部署 1 基本概念 项目部署是指在软件开发完毕后&#xff0c;将开发机器上运行的软件实际安装到服务器上进行长期运行。 在安装机器上安装和配置同版本的环境[python&#xff0c;数据库等] django项目迁移 scp /home/euansu/Code/Python/website euansuxx.xx.xx.xx:/home…

Rust的Match语句:强大的控制流运算符

在Rust中&#xff0c;match语句是一种强大的控制流运算符&#xff0c;用于比较一个值与一系列模式&#xff0c;并执行与第一个匹配的模式对应的代码块。它提供了一种清晰而灵活的方式来处理多个条件&#xff0c;使得代码更加可读、易于理解。 Match语句的基本使用 首先&#…

2月14作业

21.C 22.D 23.B 5先出栈表示1&#xff0c;2&#xff0c;3&#xff0c;4已经入栈了&#xff0c;5出后4出&#xff0c;但之后想出1得先让3&#xff0c;2先后出栈&#xff0c;所以 B 不可能 24.10&#xff0c;12&#xff0c;120 25.2&#xff0c;5 26.可能会出现段错误…

js importmap

在html文件中使用npm 下载的包&#xff0c;比如vue&#xff0c;在使用import引入的时候会报错 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-widt…

vue使用Mars3d弹框嵌套video视频/实时视频(flv) 使用jessibuca.js播放器

在html引入jessibuca.js (还需下载decoder.js&#xff0c;decoder.wasm) http://jessibuca.monibuca.com/player.html 官方下载 <script type"text/javascript" src"./jessibuca.js"></script> 同Mars3d弹框嵌套视频播放m3u8前面相同 1.播放…

OpenCV基础:用Python生成一幅随机的噪声图像

使用Python&#xff1a;生成一幅随机数值的灰度图像&#xff0c;图像大小为1616像素。借助OpenCV库。输出数值&#xff0c;并显示图像。 # -*- coding: utf-8 -*- """ Created on Wed Feb 14 21:49:09 2024author: 李立宗公众号&#xff1a;计算机视觉之光知识…

SQL世界之命令语句Ⅱ

目录 一、SQL TOP语句 1.TOP 子句 2.SQL TOP 实例 3.SQL TOP PERCENT 实例 二、SQL LIKE 操作符 1.LIKE 操作符 2.SQL LIKE 操作符语法 3.LIKE 操作符实例 三、SQL通配符 1.SQL 通配符 2.使用 % 通配符 3.使用 _ 通配符 4.使用 [charlist] 通配符 四、SQL IN操作…

Raspbian简易RTSP服务

Raspbian简易RTSP服务 1. 源由2. 搭建简易RTSP服务器2.1 系统安装2.2 软件安装2.3 命令介绍2.3.1 libcamera-hello2.3.2 libcamera-vid2.3.3 cvlc 3. 实测4. 参考资料 1. 源由 鉴于前期的一些准备工作&#xff1a; 《ArduPilot开源飞控之Companion Computers简单分析》《Ardu…

Python re找到特定pattern并将此pattern重复n次

要找到字符串s中的数字&#xff0c;并将这些数字重复3次&#xff1a; import re s "abc123def456ghi789" # 找到所有的数字 numbers re.findall(r\d, s) # 重复每个数字3次 repeated_numbers [num * 3 for num in numbers] # 将重复的数字放回原位置 #…

【QT+QGIS跨平台编译】之四十:【gsl+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、GSL介绍二、GSL下载三、文件分析四、pro文件五、编译实践一、GSL介绍 GSL(GNU Scientific Library)是一个开源的数值计算库,用于提供一系列常用的数学函数和算法。它为科学计算和数据分析提供了高效、可靠的工具。 GSL库提供了丰富的功能,包括数值积分、数值…

C++-带你深度理解string类的常见接口

1. 为什么学习string类&#xff1f; C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需…

“从根到叶:深入理解堆数据结构“

​​​​​​​ 一.堆的概念及实现 1.1堆的概念 在数据结构中&#xff0c;堆是一种特殊的树形数据结构。堆可以分为最大堆和最小堆两种类型。 最大堆&#xff1a;对于堆中的任意节点&#xff0c;其父节点的值都不小于它的值。换句话说&#xff0c;最大堆中的根节点是堆中的最…