标准SQL语言的用法_MySQL

May 27, 2016 pm 07:11 PM
標準 言語

SQL语言是目前最通用的关系数据库语言。ANSI SQL是指由美国国家标准局(ANSI)的数据库委员会制定的标准SQL语言,多数关系数据库产品支持标准SQL语言,但是它们也往往有各自的SQL方言。

 

在分层的软件结构中,关系数据库位于最底层,它的上层应用都被称为数据库的客户程序。以MySql为例,mysql.exe和Java应用就是它的两个客户程序。这些客户程序最终通过SQL语言与数据库通信。

 

SQL(Structured Query Language)的英语全称可翻译为结构化查询语言,但实际上它除了具有数据查询功能,还具有数据定义、数据操纵和数据控制功能。

 

SQL语言的类型

 

语言类型 描述 SQL语句

DDL(Data Definition Language) 数据定义语言,定义数据库中的表、视图和索引等 create、drop和alter语句

DML(Data Manipulation Language) 数据操纵语言,保存、更新或删除数据 insert、update和delete语句

DQL(Data Query Language) 数据查询语言,查询数据库中的数据 select语句

DCL(Data Control Language) 数据控制语言,用于设置数据库用户的权限 grant和remove语句

 

数据完整性

 

当用户向数据库输入数据时,由于种种原因,用户有可能输入错误数据。保证输入的数据符合规定,成为数据库系统,尤其是多用户的关系数据库系统首要关注的问题。为了解决这一问题,在数据库领域出现了数据完整性的概念。数据完整性(Data Integrity)就是指数据必须符合的规范,它主要分为三类:

 

实体完整性(Entity Integrity)

规定表的一行(即每一条记录)在表中是唯一的实体。实体完整性通过表的主键来实现。

 

域完整性(Domain Integrity)

指数据库表的列(即字段)必须符合某种特定的数据类型或约束。如not null。

 

参照完整性(Referential Integrity)

保证一个表的外键和另一个表的主键对应。

 

DDL数据定义语言

 

用于定义数据库中的表、视图和索引等。相关DDL语句如下:

 

createtable:创建一个表。

crate table CUSTOMERS(

 

ID bigint not null,

 

NAME varchar(15) not null,

 

AGE int,

 

primary key (ID)

 

);

 

crate table ORDERS(

 

ID bigint not null,

 

ORDER_NUMBER varchar(15) not null,

 

PRICE double precision,

 

CUSTOMER_ID bigint,

 

foreign key(CUSTOMER_ID) references CUSTOMERS(ID)

 

);

 

在创建数据库schema时,通常所有表的DDL语句都放在同一个SQL脚本文件中,必须按照先父表后子表的顺序来定义DDL语句。假如表之间的参照关系发生变化,就必须修改DDL语句的顺序,这增加了维护SQL脚本文件的难度。为了解决这一问题,可以采用另一种方式来定义外键。

 

crate table CUSTOMERS(

 

ID bigint not null,

 

NAME varchar(15) not null,

 

AGE int,

 

primary key (ID)

 

);

 

crate table ORDERS(

 

ID bigint not null,

 

ORDER_NUMBER varchar(15) not null,

 

PRICE double precision,

 

CUSTOMER_ID bigint,

 

primary key (ID)

 

);

 

alter table ORDERS add constraint FK_CUSTOMER foreign key (CUSTOMER_ID) references CUSTOMERS(ID);

 

altertable:修改一个表。

droptable:删除一个表,同时删除表中所有记录。

DML数据操纵语言

 

DML用于向数据库插入、更新或删除数据,这些操作分别对应insert、update和delete语句。

 

在执行这些语句时,数据库系统先进行数据完整性检查,如果这些语句违反了数据完整性,数据库系统会异常终止执行SQL语句。

 

DQL数据查询语言

 

SQL语言的核心就是数据查询语言。查询语句的语法如下:

 

select 目标列 from 基本表(或视图) [where 条件表达式] [group by 列名1[having 条件表达式]] [order by 列名2[asc|desc]] 

 

简单查询

简单SQL查询语句,其中where子句设定查询条件,order by子句设定查询结果的排序方式。

 

(1)查询年龄在10到50之间的客户,查询结果先按照年龄降序排列,再按照名字升序排列。

 

select * from customers where age between 18 and 50 order by age desc,name asc;

 

(2)查询名字为“Tom”、“Mike”、“Jack”的客户。

 

select * from customers where name in (‘Tom’,’ Mike’,’ Jack’);

 

(3)查询姓名的第二个字母是“a”的客户。

 

select * from customers where name like ‘’_a%’’;

 

(4)查询年龄为null的客户的名字。

 

select name from customers where age is null;

 

注意:不能用表达式age=null来比较age是否为null,因为这个表达式的值既不为true,也不为false,而是永远为null。当where子句的取值为null,select的查询语句的查询结果为空。

 

(5)在查询语句中为表和字段指定别名:

 

select name c_name,age c_age from customer c where c.id=1;

 

连接查询

连接查询的from子句的连接语法格式为:

 

from talbe1 join_type table2 [on (join_condition)] [where (query_condition)]

 

table1和talbe2表示参与连接操作的表,table1为左表,table2为右表。on子句设定连接条件,where子句设定查询条件,join_type表示连接类型,可分为3种:

 

交叉连接(cross join):不带on子句,返回连接表中所有数据行的笛卡儿积。

Select * from customers,orders;

 

返回两张表中记录数的乘积。若customers中有5条记录,orders表中有7条记录,则结果返回35条记录。

 

内连接(inner join):返回连接表中符合连接条件及查询条件的数据行。

显式内连接:使用inner join关键字,在on子句中设定连接条件

 

Select c.id,o.customer_id,c.name,o.id roder_id,order_number from customers c inner join orders o on c.id=o.customer_id;

 

隐式内连接:不包含inner join关键字和on关键字,在where子句中设定连接条件

 

Select c.id,o.customer_id,c.name,o.id order_id,order_number from customers c,orders o where c.id=o.customer_id;

 

外连接:分为左外连接(left outer join)、右外连接(right outer join)。与内连接不同的是,外连接不仅返回连接表中符合连接条件及查询条件的数据行,也返回左表(左外连接时)或右表(右外连接时)中仅符合查询条件但不符合连接条件的数据行。

Select c.id,o.customer_id,c.name,o.id order_id,order_number from customers c left outer join orders o on c.id=o.customer_id;

 

以上查询语句的查询结果不仅包含符合on连接条件的数据,还包含customers左表中的其他数据行。

 

子查询

子查询也叫嵌套查询,是指在select子句或者where子句中又嵌入select查询语句,下面举例说明它的用法。

 

1)查询具有3个以上订单的客户:

 

select * customers c where c

 

2)查询名为“Mike”的客户的所有订单

 

select * from orders o where o.customer_id in (select id form cutomers where name=’Mike’);

 

3)查询没有订单的客户:

 

select * from customers c where 0=(select count(*) from order o where c.id=o.customer_id);

 

或者

 

select * from customers c where not exists (select * from orders o where c.id=o.customer_id);

 

4)查询ID为1的客户的姓名、年龄及它的所有订单的总价格:

 

select name,age,(select sum(price) from orders where customer_id=1) total_price from customers where id=1;

 

total_price是别名

 

也可以通过左外连接查询来完成相同的功能:

 

select name,age,sum(price) from customers c left outer join orders o on c.id=o.customer_id where c.id=1 group by c.id;

 

如果数据库不支持子查询,可以通过连接查询来完成相同的功能。事实上,所有的子查询语句都可以改写为连接查询语句。

 

联合查询

联合查询能够合并两条查询语句的查询结果,去掉其中的重复数据行,然后返回没有重复数据行的查询结果。联合查询使用union关键字,例如:

 

select * from customers where age=24;

 

报表查询

报表查询对数据行进行分组统计,其语法格式为:

 

[select …] from … [where…] [ group by … [having… ]] [ order by … ]

 

其中group by 子句指定按照哪些字段分组,having子句设定分组查询条件。在报表查询中可以使用以下SQL聚集函数。

 

count():统计记录条数

 

min():求最小值

 

max():求最大值

 

sum():求和

 

avg():求平均值

 

用法:

 

1)按照客户分组,查询每个客户的所有订单的总价格:

 

select c.id,c.name,sum(price) from customers c left outer join orders o on c.id=o.customer_id group by c.id;

 

2)按照客户分组,查询每个客户的所有订单的总价格,并且要求订单的总价格大于100:

 

select c.id,c.name,sum(price) from customers c left outer join orders o on c.id=o.customer_id group by c.id having(sum(price)>100);

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11で不要な表示言語を完全に削除する方法 Windows 11で不要な表示言語を完全に削除する方法 Sep 24, 2023 pm 04:25 PM

同じセットアップで長時間作業したり、PC を他の人と共有したりします。いくつかの言語パックがインストールされている可能性があり、競合が発生することがよくあります。そこで、Windows 11 で不要な表示言語を削除しましょう。競合といえば、複数の言語パックがある場合、誤って Ctrl+Shift を押すとキーボード レイアウトが変更されてしまいます。これに注意しないと、当面の作業に支障をきたす可能性があります。それでは、早速メソッドの説明に入りましょう。 Windows 11 から表示言語を削除するにはどうすればよいですか? 1. [設定] から [+] を押して設定アプリを開き、ナビゲーション ペインから [時刻と言語] に移動して、[言語と地域] をクリックします。 Windows 削除する表示言語の横にある省略記号をクリックし、ポップアップ メニューから [削除] を選択します。クリック "

iPhoneで言語を変更する3つの方法 iPhoneで言語を変更する3つの方法 Feb 02, 2024 pm 04:12 PM

iPhone が最も使いやすい電子機器の 1 つであることは周知の事実であり、その理由の 1 つは、自分好みに簡単にカスタマイズできることです。個人設定では、iPhone のセットアップ時に選択した言語とは別の言語に変更できます。複数の言語に精通している場合、または iPhone の言語設定が間違っている場合は、以下で説明するように変更できます。 iPhoneの言語を変更する方法[3つの方法] iOSでは、ユーザーはさまざまなニーズに合わせてiPhoneの優先言語を自由に切り替えることができます。 Siri との対話言語を変更して、音声アシスタントとのコミュニケーションを容易にすることができます。同時に、ローカルキーボードを使用する場合、複数の言語を簡単に切り替えることができ、入力効率が向上します。

大規模な言語モデルに包括的なオーディオビジュアル機能を追加し、DAMO アカデミーがソース Video-LLaMA をオープンします 大規模な言語モデルに包括的なオーディオビジュアル機能を追加し、DAMO アカデミーがソース Video-LLaMA をオープンします Jun 09, 2023 pm 09:28 PM

今日のソーシャル メディアやインターネット文化においてビデオの役割はますます重要になっており、Douyin、Kuaishou、Bilibili などは数億人のユーザーに人気のプラットフォームとなっています。ユーザーは、自分の人生の瞬間、創造的な作品、興味深い瞬間、その他のビデオを中心としたコンテンツを共有して、他のユーザーと交流し、コミュニケーションを図ります。最近、大規模な言語モデルが優れた機能を実証しました。大型モデルに「目」と「耳」を持たせて、動画を理解してユーザーと対話できるようにすることはできないだろうか。この問題から出発して、DAMO アカデミーの研究者は、包括的なオーディオビジュアル機能を備えた大規模モデルである Video-LLaMA を提案しました。 Video-LLaMA は、ビデオ内のビデオ信号とオーディオ信号を認識して理解することができ、ユーザーが入力した指示を理解して、オーディオとビデオに基づいた一連の複雑なタスクを完了できます。

Win10コンピュータの言語を中国語に設定するにはどうすればよいですか? Win10コンピュータの言語を中国語に設定するにはどうすればよいですか? Jan 05, 2024 pm 06:51 PM

コンピュータ システムをインストールしただけで、システムが英語になっている場合があります。この場合、コンピュータの言語を中国語に変更する必要があります。それでは、win10 システムでコンピュータの言語を中国語に変更するにはどうすればよいでしょうか?具体的な操作方法を説明します。 。 win10 でコンピューターの言語を中国語に変更する方法 1. コンピューターの電源を入れ、左下隅にあるスタート ボタンをクリックします。 2. 左側の設定オプションをクリックします。 3. 開いたページで「時刻と言語」を選択します 4. 開いたら、左側の「言語」をクリックします 5. ここで、希望するコンピューター言語を設定できます。

口を動かすだけで原神がプレイできる! AIを使ってキャラクターを切り替えて敵を攻撃するネチズン「アヤカ、神里流フロストデストラクションを使って」 口を動かすだけで原神がプレイできる! AIを使ってキャラクターを切り替えて敵を攻撃するネチズン「アヤカ、神里流フロストデストラクションを使って」 May 13, 2023 pm 07:52 PM

過去 2 年間で世界中で人気を博した国産ゲームといえば、間違いなく原神が挙げられます。 5月に発表された今年第1四半期のモバイルゲーム収益調査報告書によると、「原神」が5億6,700万ドルの絶対的な優位性を獲得し、カードを引くモバイルゲームの中で断然1位を獲得したことも発表された。わずか 18 年でオンライン化され、数か月後、モバイル プラットフォームだけでの総収益は 30 億米ドル (約 130 億リンギット) を超えました。さて、Xumi オープン前の最後の 2.8 アイランド バージョンは長い間待ち望まれており、長いドラフト期間を経て、ようやく新しいプロットとプレイできるエリアが登場しました。でも、「肝臓皇帝」が何人いるのかは分かりませんが、島の探索が完了し、また草が生え始めました。宝箱は合計 182 個 + モラボックス 1 個 (含まれていません) 草期間が長くても心配する必要はありません。いや、長い草のあいだに

エージェントの境界の探索: 大規模な言語モデル エージェントのパフォーマンスを包括的に測定および改善するためのモジュール式ベンチマーク フレームワークである AgentQuest エージェントの境界の探索: 大規模な言語モデル エージェントのパフォーマンスを包括的に測定および改善するためのモジュール式ベンチマーク フレームワークである AgentQuest Apr 11, 2024 pm 08:52 PM

大規模モデルの継続的な最適化に基づいて、LLM エージェント - これらの強力なアルゴリズム エンティティは、複雑な複数ステップの推論タスクを解決する可能性を示しています。自然言語処理から深層学習に至るまで、LLM エージェントは徐々に研究や業界の焦点になりつつあります。LLM エージェントは、人間の言語を理解して生成するだけでなく、戦略を策定し、多様な環境でタスクを実行し、API 呼び出しやコーディングを使用して構築することもできます。ソリューション。この文脈において、AgentQuest フレームワークの導入はマイルストーンであり、LLM エージェントの評価と進歩のためのモジュール式ベンチマーク プラットフォームを提供するだけでなく、研究者にこれらのエージェントのパフォーマンスを追跡および改善するための強力なツールも提供します。より細かいレベル

vivox60proの言語表示を変更する方法 vivox60proのシステム言語設定方法 vivox60proの言語表示を変更する方法 vivox60proのシステム言語設定方法 Mar 23, 2024 am 09:06 AM

1. 電話機設定メニューの[システム管理]をクリックします。 2. [言語]オプションをクリックします。 3. 使用するシステム言語を選択します。

大規模モデルにおける B エンド フロントエンド コードの生成支援に関する考察と実践 大規模モデルにおける B エンド フロントエンド コードの生成支援に関する考察と実践 Apr 18, 2024 am 09:30 AM

1. バックグラウンド再構築作業中のコード仕様: B エンド フロントエンド開発プロセスでは、開発者は常に開発を繰り返すという問題点に直面します。多くの CRUD ページの要素モジュールは基本的に似ていますが、依然として手動で開発する必要があります。 、単純な要素の構築に時間がかかるため、ビジネス要件の開発効率が低下します。同時に、異なる開発者のコ​​ーディング スタイルに一貫性がないため、他の開発者が反復中に開始するコストが高くなります。 AI は単純な頭脳を置き換えます。大規模な AI モデルの継続的な開発により、AI は単純な理解機能を備え、言語を指示に変換できます。基本ページを構築するための一般的な手順は、日常の基本ページ構築のニーズを満たし、一般的なシナリオでのビジネス開発の効率を向上させることができます。 2. リンク リストの生成 B 面ページのリスト、フォーム、および詳細はすべて、次のカテゴリに大別できます。

See all articles