前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL知识大全(一):数据库的语言分类你都知道吗?

SQL知识大全(一):数据库的语言分类你都知道吗?

作者头像
数据万花筒
发布2020-12-30 15:29:18
6180
发布2020-12-30 15:29:18
举报
文章被收录于专栏:数据万花筒

今天是数据库语言分类的第一讲,主要会介绍数据库的四类语言,以及其语法,课程大纲详见脑图。

数据库定义语言

数据库定义语言(DDL,Data Definition Language)是负责数据的模式定义与数据的物理存取构建,主要包括CREATE建表语句,ALTER 更新表结构语句,DROP 删除语句,DECLARE 创建游标。

CREATE建表语句

创建一张名为OrderItems的空表

代码语言:javascript
复制
CREATE TABLE OrderItems 
(
order_num     INTEGER              NOT NULL,
order_item    INTEGER              NOT NULL,
prod_id       CHAR(10)             NOT NULL,
quantity      INTEGER             NOT NULL   DEFAULT 1, 
item_price    DECIMAL(8,2)        NOT NULL
)

已有部分数据表,关联数据表,建中间表

代码语言:javascript
复制
CREATE VIEW ProductCustomers AS
SELECT cust_name, cust_contact, prod_id 

FROM Customers, Orders, OrderItems

WHERE Customers.cust_id = Orders.cust_id 

AND OrderItems.order_num = Orders.order_num;

ALTER 更新表结构

ALTER之前需要完成表的备份,因为ALTER的过程是不可逆的。

代码语言:javascript
复制
#增加一列
ALTER TABLE Vendors 
ADD vend_phone CHAR(20);
#删除一列
ALTER TABLE Vendors 
DROP COLUMN vend_phone;

DROP 删除表

代码语言:javascript
复制
DROP TABLE CustCopy;

数据操纵语言

数据操纵语言(DML,Data Manipulation Language):负责数据的操纵,包括查询及增、删、改等操作,SELECT(选择),DELETE(删除),UPDATE(更新),INSERT(插入)四类语法。

SELECT(选择)

SELECT说起来大家都不陌生,它是SQL中最常见的语法,主要用法是从数据表中选择你想要的那几列数据。

代码语言:javascript
复制
#选择表中的某列
SELECT
prod_name
FROM
Products;

#选择表中的多个列
SELECT prod_id, prod_name, prod_price
FROM Products;


#选择表中的所有列
SELECT
*
FROM
Products;

DELETE(删除)

DELETE删除行,甚至删除所有的行,但是并不删除表本身。如果要快速删除所有行,可以使用TRUNCATE TABLE语句,因为不记录数据变动。下面举几个例子。

1.从表中删除特定的行

下面这个例子是从Customers 这张表中,删除cust_id = '1000000006'的行。

代码语言:javascript
复制
DELETE FROM Customers 
WHERE cust_id = '1000000006'; 

2.从表中删除所有的行

下面例子删除所有的行,但是并不删除Customers 这张表。

代码语言:javascript
复制
DELETE FROM Customers

UPDATE(更新)

UPDATE(更新)由三部分组成,分别是要更新的表,列名和他们的新值,确定要更新那些行的过滤条件。

1.更新表中特定的列

代码语言:javascript
复制
#更新一列
UPDATE Customers
 SET cust_email = 'kim@thetoystore.com' WHERE cust_id = '1000000005'; 

#更新多列
UPDATE Customers
 SET cust_contact = 'Sam Roberts', 
 cust_email = 'sam@toyland.com' WHERE cust_id = '1000000006'; 

#删除某列
#删除某列可以将该列设为null
UPDATE Customers
 SET cust_email = NULL
 WHERE cust_id = '1000000005';

2.更新表中所有的行

该示例将Customers表中cust_email列全部更新为'kim@thetoystore.com' 。

代码语言:javascript
复制
UPDATE Customers
 SET cust_email = 'kim@thetoystore.com' 

INSERT(插入)

INSERT插入可以在数据表中插入完整的行,插入行的一部分,插入某些查询结果,下面我们将会给出几个例子进行说明。

1.插入完整的行

在Customers这张表中插入一行数据。

代码语言:javascript
复制
INSERT INTO Customers
VALUES('1000000006',
       'Toy Land',
       '123 Any Street',
       'New York',
       'NY',
       '11111',
       'USA',
       NULL,
       NULL);

2.插入行的一部分

在Customers表中插入部分行,cust_contact,cust_email字段没有插入数据。

代码语言:javascript
复制
INSERT INTO Customers(cust_id,
                      cust_name,
                      cust_address,
                      cust_city,
                      cust_state,
                      cust_zip,
                      cust_country,
                      cust_contact,
                      cust_email)
VALUES('1000000006',
       'Toy Land',
       '123 Any Street',
       'New York',
       'NY',
       '11111',
       'USA',
       NULL,
       NULL);

3.插入某些查询结果

从CustNew中SELECT出一些结果插入到Customers表中。

代码语言:javascript
复制
INSERT INTO Customers(cust_id,
                      cust_contact,
                      cust_email,
                      cust_name,
                      cust_address,
                      cust_city,
                      cust_state,
                      cust_zip,
                      cust_country)
SELECT cust_id,
       cust_contact,
       cust_email,
       cust_name,
       cust_address,
       cust_city,
       cust_state,
       cust_zip,
       cust_country

FROM CustNew;

数据控制语言

数据控制语言(DCL,Data Control Language):负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能,主要语法有GRANT授权,REVOKE取消授权等。大部分情况下,这部分语法主要是提供给数据库工程师以及数仓开发使用的,分析师不太能用到这些语法,所以也不细讲了。

事务控制语

事务控制语言(TCL,Transaction Control Language)包括SAVEPOINT 设置保存点,它是事务处理中设置临时的占位符,可以对它发布回退;ROLLBACK 回滚,撤销指定的SQL语句;COMMIT提交,将未储存的SQL写入数据库表。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据万花筒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档