为您找到与数据库update语句用法相关的共200个结果:
计算机程序的学习比较复杂,那么数据库desc的用法的用法你知道吗?下面读文网小编就跟你们详细介绍下数据库desc的用法的用法,希望对你们有用。
使用desc查看数据库对象
desc是用来查看数据库对象的一个命令.格式为desc+对象名
SQL> desc course;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
COURSEID NOT NULL VARCHAR2(32)
COURSENAME NOT NULL VARCHAR2(64)
COURSENAME_EN VARCHAR2(256)
COURSENO NOT NULL VARCHAR2(32)
DEPARTMENTID VARCHAR2(32)
STAFFROOMID NOT NULL VARCHAR2(32)
COURSEKINDCODE NOT NULL VARCHAR2(8)
ISOTHERLANG CHAR(2)
TOTALPERIODNUM NOT NULL NUMBER(3)
TEACHPERIODNUM NUMBER
TESTPERIODNUM NUMBER
EXERPERIODNUM NUMBER
CREDITHOURNUM NUMBER
TEACHMETHODCODE CHAR(2)
REFBOOKNAME CHAR(1)
PRECOURSENAME CHAR(1)
EXAMMETHODCODE CHAR(2)
BRIEF CHAR(1)
STATUS NOT NULL VARCHAR2(10)
COMMENTS CHAR(1)
REEXAM CHAR(1)
LABEL CHAR(1)
PASSSCORE NUMBER
FULLSCORE NUMBER
TEXTBOOK CHAR(1)
SHORTNAME NOT NULL VARCHAR2(8)
SQL> desc dbms_crypto_toolkit;
PROCEDURE ABORTIDENTITY
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
IDENTITY RECORD IN/OUT
DESCRIPTOR RAW(200) IN/OUT
PROCEDURE CLOSEPERSONA
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN/OUT
PERSONA RAW(200) IN/OUT
PROCEDURE CLOSEWALLET
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
WALLET RECORD IN/OUT
WALLET RAW(200) IN/OUT
PROCEDURE CLOSEWALLET
PROCEDURE CREATEIDENTITY
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
IDENTITYTYPE BINARY_INTEGER IN
PUBLIC_IDENTITY VARCHAR2 IN
ALIAS VARCHAR2 IN
LONGER_DESCRIPTION VARCHAR2 IN
TRUST_QUALIFIER VARCHAR2 IN
IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
PROCEDURE CREATEPERSONA
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
CIPHER_TYPE BINARY_INTEGER IN
PRIVATE_INFORMATION RECORD IN
INFORMATION RAW(200) IN
PRL VARCHAR2 IN
ALIAS VARCHAR2 IN
LONGER_DESCRIPTION VARCHAR2 IN
PERSONA RECORD OUT
PERSONA RAW(200) OUT
PROCEDURE CREATEWALLET
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PASSWORD VARCHAR2 IN
WALLET RECORD IN/OUT
WALLET RAW(200) IN/OUT
WALLET_RESOURCE_LOCATOR VARCHAR2 IN DEFAULT
PROCEDURE CREATEWALLET
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PASSWORD VARCHAR2 IN
WALLET_RESOURCE_LOCATOR VARCHAR2 IN DEFAULT
PROCEDURE DECRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
ENCRYPTED_DATA RAW IN
DECRYPTED_DATA RAW OUT
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION DECRYPT RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
ENCRYPTED_DATA RAW IN
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE DECRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
ENCRYPTED_STRING VARCHAR2 IN
DECRYPTED_STRING VARCHAR2 OUT
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION DECRYPT RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
ENCRYPTED_STRING VARCHAR2 IN
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE DEENVELOPE
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
ENVELOPED_DATA RAW IN
OUTPUT_DATA RAW OUT
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SENDER_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION DEENVELOPE RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
ENVELOPED_DATA RAW IN
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SENDER_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE DEENVELOPE
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
ENVELOPED_STRING VARCHAR2 IN
OUTPUT_STRING VARCHAR2 OUT
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SENDER_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION DEENVELOPE RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
ENVELOPED_STRING VARCHAR2 IN
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SENDER_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE DESTROYWALLET
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PASSWORD VARCHAR2 IN
WALLET_RESOURCE_LOCATOR VARCHAR2 IN DEFAULT
PROCEDURE ENCRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
ENCRYPTED_DATA RAW OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION ENCRYPT RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION ENCRYPT RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE ENVELOPE
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RECIPIENT RECORD IN
DESCRIPTOR RAW(200) IN
INPUT RAW IN
ENVELOPED_DATA RAW OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION ENVELOPE RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RECIPIENT RECORD IN
DESCRIPTOR RAW(200) IN
INPUT RAW IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE ENVELOPE
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RECIPIENT RECORD IN
DESCRIPTOR RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENVELOPED_STRING VARCHAR2 OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION ENVELOPE RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RECIPIENT RECORD IN
DESCRIPTOR RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE ENVELOPE
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_RECIPIENTS BINARY_INTEGER IN
RECIPIENT_LIST RECORD IN
DESCRIPTOR_ARRAY RAW(200) IN
INPUT RAW IN
ENVELOPED_DATA RAW OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION ENVELOPE RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_RECIPIENTS BINARY_INTEGER IN
RECIPIENT_LIST RECORD IN
DESCRIPTOR_ARRAY RAW(200) IN
INPUT RAW IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE ENVELOPE
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_RECIPIENTS BINARY_INTEGER IN
RECIPIENT_LIST RECORD IN
DESCRIPTOR_ARRAY RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENVELOPED_STRING VARCHAR2 OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION ENVELOPE RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_RECIPIENTS BINARY_INTEGER IN
RECIPIENT_LIST RECORD IN
DESCRIPTOR_ARRAY RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE HASH
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
HASH RAW OUT
HASH_STATE BINARY_INTEGER IN DEFAULT
FUNCTION HASH RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
HASH_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE HASH
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
HASH RAW OUT
HASH_STATE BINARY_INTEGER IN DEFAULT
FUNCTION HASH RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
HASH_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE INITIALIZE
PROCEDURE KEYEDHASH
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
KEYED_HASH RAW OUT
HASH_STATE BINARY_INTEGER IN DEFAULT
FUNCTION KEYEDHASH RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
HASH_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE KEYEDHASH
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
KEYED_HASH RAW OUT
HASH_STATE BINARY_INTEGER IN DEFAULT
FUNCTION KEYEDHASH RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
HASH_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE OPENPERSONA
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN/OUT
PERSONA RAW(200) IN/OUT
PROCEDURE OPENWALLET
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PASSWORD VARCHAR2 IN
WALLET RECORD IN/OUT
WALLET RAW(200) IN/OUT
PERSONA_LIST TABLE OF RECORD OUT
WALLET_RESOURCE_LOCATOR VARCHAR2 IN DEFAULT
PROCEDURE OPENWALLET
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PASSWORD VARCHAR2 IN
PERSONA_LIST TABLE OF RECORD OUT
WALLET_RESOURCE_LOCATOR VARCHAR2 IN DEFAULT
PROCEDURE PKDECRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
DECRYPTED_DATA RAW OUT
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION PKDECRYPT RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE PKDECRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
DECRYPTED_STRING VARCHAR2 OUT
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION PKDECRYPT RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
DECRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE PKENCRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RECIPIENT RECORD IN
DESCRIPTOR RAW(200) IN
INPUT RAW IN
ENCRYPTED_DATA RAW OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION PKENCRYPT RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RECIPIENT RECORD IN
DESCRIPTOR RAW(200) IN
INPUT RAW IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE PKENCRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RECIPIENT RECORD IN
DESCRIPTOR RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENCRYPTED_STRING VARCHAR2 OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION PKENCRYPT RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RECIPIENT RECORD IN
DESCRIPTOR RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE PKENCRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_RECIPIENTS BINARY_INTEGER IN
RECIPIENT_LIST RECORD IN
DESCRIPTOR_ARRAY RAW(200) IN
INPUT RAW IN
ENCRYPTED_DATA RAW OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION PKENCRYPT RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_RECIPIENTS BINARY_INTEGER IN
RECIPIENT_LIST RECORD IN
DESCRIPTOR_ARRAY RAW(200) IN
INPUT RAW IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE PKENCRYPT
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_RECIPIENTS BINARY_INTEGER IN
RECIPIENT_LIST RECORD IN
DESCRIPTOR_ARRAY RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENCRYPTED_STRING VARCHAR2 OUT
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
FUNCTION PKENCRYPT RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_RECIPIENTS BINARY_INTEGER IN
RECIPIENT_LIST RECORD IN
DESCRIPTOR_ARRAY RAW(200) IN
INPUT_STRING VARCHAR2 IN
ENCRYPTION_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE RANDOMBYTES
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_BYTES_DESIRED BINARY_INTEGER IN
RANDOM_BYTES RAW OUT
FUNCTION RANDOMBYTES RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
NUMBER_OF_BYTES_DESIRED BINARY_INTEGER IN
PROCEDURE RANDOMNUMBER
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
RANDOM_NUMBER BINARY_INTEGER OUT
FUNCTION RANDOMNUMBER RETURNS BINARY_INTEGER
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
PROCEDURE REMOVEIDENTITY
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
PROCEDURE REMOVEPERSONA
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN/OUT
PERSONA RAW(200) IN/OUT
PROCEDURE SEEDRANDOM
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
SEED RAW IN
PROCEDURE SEEDRANDOM
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
SEED VARCHAR2 IN
PROCEDURE SEEDRANDOM
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
SEED BINARY_INTEGER IN
PROCEDURE SIGN
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
SIGNATURE RAW OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
FUNCTION SIGN RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE SIGN
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
SIGNATURE RAW OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
FUNCTION SIGN RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE SIGNDETACHED
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
SIGNATURE RAW OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
FUNCTION SIGNDETACHED RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT RAW IN
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE SIGNDETACHED
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
SIGNATURE RAW OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
FUNCTION SIGNDETACHED RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
INPUT_STRING VARCHAR2 IN
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE STOREPERSONA
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN/OUT
PERSONA RAW(200) IN/OUT
WALLET RECORD IN/OUT
WALLET RAW(200) IN/OUT
PROCEDURE STOREPERSONA
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN/OUT
PERSONA RAW(200) IN/OUT
PROCEDURE STORETRUSTEDIDENTITY
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
IDENTITY RECORD IN/OUT
DESCRIPTOR RAW(200) IN/OUT
PERSONA RECORD IN
PERSONA RAW(200) IN
PROCEDURE TERMINATE
FUNCTION VALIDATE RETURNS BOOLEAN
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
IDENTITY RECORD IN
DESCRIPTOR RAW(200) IN
PROCEDURE VERIFY
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
SIGNATURE RAW IN
EXTRACTED_MESSAGE RAW OUT
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SIGNING_PARTY_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
FUNCTION VERIFY RETURNS RAW
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
SIGNATURE RAW IN
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SIGNING_PARTY_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE VERIFY
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
SIGNATURE RAW IN
EXTRACTED_MESSAGE_STRING VARCHAR2 OUT
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SIGNING_PARTY_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
FUNCTION VERIFY RETURNS VARCHAR2
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
SIGNATURE RAW IN
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SIGNING_PARTY_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE VERIFYDETACHED
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
DATA RAW IN
SIGNATURE RAW IN
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SIGNING_PARTY_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
PROCEDURE VERIFYDETACHED
参数名称 类型 输入/输出默认值?
------------------------------ ----------------------- ------ --------
PERSONA RECORD IN
PERSONA RAW(200) IN
DATA_STRING VARCHAR2 IN
SIGNATURE RAW IN
VERIFIED BOOLEAN OUT
VALIDATED BOOLEAN OUT
SIGNING_PARTY_IDENTITY RECORD OUT
DESCRIPTOR RAW(200) OUT
SIGNATURE_STATE BINARY_INTEGER IN DEFAULT
浏览量:2
下载量:0
时间:
数据库group by的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库group by的用法的用法,希望对你们有用。
1、概述
“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
2、原始表
3、简单Group By
示例1
select 类别, sum(数量) as 数量之和
from A
group by 类别
返回结果如下表,实际上就是分类汇总。
4、Group By 和 Order By
示例2
select 类别, sum(数量) AS 数量之和
from A
group by 类别
order by sum(数量) desc
返回结果如下表
在Access中不可以使用“order by 数量之和 desc”,但在SQL Server中则可以。
5、Group By中Select指定的字段限制
示例3
select 类别, sum(数量) as 数量之和, 摘要
from A
group by 类别
order by 类别 desc
示例3执行后会提示下错误,如下图。这就是需要注意的一点,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。
6、Group By All
示例4
select 类别, 摘要, sum(数量) as 数量之和
from A
group by all 类别, 摘要
示例4中则可以指定“摘要”字段,其原因在于“多列分组”中包含了“摘要字段”,其执行结果如下表
“多列分组”实际上就是就是按照多列(类别+摘要)合并后的值进行分组,示例4中可以看到“a, a2001, 13”为“a, a2001, 11”和“a, a2001, 2”两条记录的合并。
SQL Server中虽然支持“group by all”,但Microsoft SQL Server 的未来版本中将删除 GROUP BY ALL,避免在新的开发工作中使用 GROUP BY ALL。Access中是不支持“Group By All”的,但Access中同样支持多列分组,上述SQL Server中的SQL在Access可以写成
select 类别, 摘要, sum(数量) AS 数量之和
from A
group by 类别, 摘要
7、Group By与聚合函数
在示例3中提到group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中,常见的聚合函数如下表:
函数
作用
支持性
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 平均值
first(列名) 第一条记录 仅Access支持
last(列名) 最后一条记录 仅Access支持
count(列名) 统计记录数 注意和count(*)的区别
示例5:求各组平均值
select 类别, avg(数量) AS 平均值 from A group by 类别;
示例6:求各组记录数目
select 类别, count(*) AS 记录数 from A group by 类别;
示例7:求各组记录数目
8、Having与Where的区别
?where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
?having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
示例8
select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18
示例9:Having和Where的联合使用方法
select 类别, SUM(数量)from A
where 数量 gt;8
group by 类别
having SUM(数量) gt; 10
9、Compute 和 Compute By
select * from A where 数量 > 8
执行结果:
示例10:Compute
select *
from A
where 数量>8
compute max(数量),min(数量),avg(数量)
执行结果如下:
compute子句能够观察“查询结果”的数据细节或统计各列数据(如例10中max、min和avg),返回结果由select列表和compute统计结果组成。
示例11:Compute By
select *
from A
where 数量>8
order by 类别
compute max(数量),min(数量),avg(数量) by 类别
执行结果如下:
示例11与示例10相比多了“order by 类别”和“... by 类别”,示例10的执行结果实际是按照分组(a、b、c)进行了显示,每组都是由改组数据列表和改组数统计结果组成,另外:
?compute子句必须与order by子句用一起使用
?compute...by与group by相比,group by 只能得到各组数据的统计结果,而不能看到各组数据
在实际开发中compute与compute by的作用并不是很大,SQL Server支持compute和compute by,而Access并不支持
浏览量:2
下载量:0
时间:
数据库having的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库having的用法的用法,希望对你们有用。
--sql中的group by 用法解析:
-- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。
--它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
--注意:group by 是先排序后分组;
--举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术
select DepartmentID as '部门名称',
COUNT(*) as '个数' from BasicDepartment group by DepartmentID
--这个就是使用了group by +字段进行了分组,其中我们就可以理解为我们按照了部门的名称ID
--DepartmentID将数据集进行了分组;然后再进行各个组的统计数据分别有多少;
--如果不用count(*) 而用类似下面的语法
select DepartmentID,DepartmentName from BasicDepartment group by DepartmentID
--将会出现错误
--消息 8120,级别 16,状态 1,第 1 行
--选择列表中的列 'BasicDepartment.DepartmentName' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
--这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,
--作为分组的依据;要么就要被包含在聚合函数中。
--出现的错误详解:咱们看看group by 的执行的过程,先执行select 的操作返回一个程序集,
--然后去执行分组的操作,这时候他将根据group by 后面的字段
--进行分组,并且将相同的字段并称一列数据,如果group by 后面没有这个字段的话就要分成好多的数据。
--但是分组就只能将相同的数据分成两列数据,而一列中又只能放入一个字段,所以那些没有进行分组的
--数据系统不知道将数据放入哪里,所以就出现此错误
--目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,
--所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的
--数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)了
--group by all语法解析:
--如果使用 ALL 关键字,那么查询结果将包括由 GROUP BY 子句产生的所有组,即使某些组没有符合搜索条件的行。
--没有 ALL 关键字,包含 GROUP BY 子句的 SELECT 语句将不显示没有符合条件的行的组。
select DepartmentID,DepartmentName as '部门名称',
COUNT(*) as '个数' from BasicDepartment group by all DepartmentID,DepartmentName
--group by 和having 解释:前提必须了解sql语言中一种特殊的函数:聚合函数,
--例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
--WHERE关键字在使用集合函数时不能使用,所以在集合函数中加上了HAVING来起到测试查询结果是否符合条件的作用。
create TABLE Table1
(
ID int identity(1,1) primary key NOT NULL,
classid int,
sex varchar(10),
age int,
)
--添加测试数据
Insert into Table1 values(1,'男',20)
Insert into Table1 values(2,'女',22)
Insert into Table1 values(3,'男',23)
Insert into Table1 values(4,'男',22)
Insert into Table1 values(1,'男',24)
Insert into Table1 values(2,'女',19)
Insert into Table1 values(4,'男',26)
Insert into Table1 values(1,'男',24)
Insert into Table1 values(1,'男',20)
Insert into Table1 values(2,'女',22)
Insert into Table1 values(3,'男',23)
Insert into Table1 values(4,'男',22)
Insert into Table1 values(1,'男',24)
Insert into Table1 values(2,'女',19
--举例子说明:查询table表查询每一个班级中年龄大于20,性别为男的人数
select COUNT(*)as '>20岁人数',classid from Table1 where sex='男' group by classid,age having age>20
--需要注意说明:当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
--执行where子句查找符合条件的数据;
--使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
--having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
--having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
--having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
浏览量:2
下载量:0
时间:
数据库in的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库in的用法的用法,希望对你们有用。
MySQL IN 语法
IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下:
WHERE column IN (value1,value2,...)
WHERE column NOT IN (value1,value2,...)
当 IN 前面加上 NOT 运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。
IN 使用实例
选取 uid 为 2、3、5 的用户数据:
SELECT * FROM user WHERE uid IN (2,3,5)
返回查询结果如下:
uid
username
password
regdate
2 小明 a193686a53e4de85ee3f2ff0576adf01 xiao@163.com 1278063917
3 Jack 0193686a35e4de85ee3f2ff0567adf490 jack@gmail.com 1278061380
5 5idev a193686a53e4de85ee3f2ff0576adf01 5idev@5idev.com 1291107029
IN 子查询
更多情况下,IN 列表项的值是不明确的,而可能是通过一个子查询得到的:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
在这个 SQL 例子里,我们实现了查出所有状态为 0 的用户(可能是被禁止)的所有文章。首先通过一个查询得到所有所有 status=0 的用户:
SELECT uid FROM user WHERE status=0
然后将查询结果作为 IN 的列表项以实现最终的查询结果,注意在子查询中返回的结果必须是一个字段列表项。
IN 运算符补充说明
IN 列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column 的类型保持一致:
SELECT * FROM user WHERE uid IN(1,2,'3','c')
一个 IN 只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND 或 OR 逻辑运算符:
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
使用 AND 或 OR 逻辑运算符后,IN 还可以和其他如 LIKE、>=、= 等运算符一起使用。
关于 IN 运算符的效率问题
如果 IN 的列表项是确定的,那么可以用多个 OR 来代替:
SELECT * FROM user WHERE uid IN (2,3,5)
https:// 等效为:
SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
一般认为,如果是对索引字段进行操作,使用 OR 效率高于 IN,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN 运算符。另外,对于子查询表数据小于主查询的时候,也是适用 IN 运算符的。
浏览量:3
下载量:0
时间:
数据库in和exists的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库in和exists的用法的用法,希望对你们有用。
SELECT DISTINCT MD001 FROM BOMMD WHERE MD001 NOT IN (SELECT MC001 FROM BOMMC)
NOT EXISTS,exists的用法跟in不一样,一般都需要和子表进行关联,而且关联时,需要用索引,这样就可以加快速度
select DISTINCT MD001 from BOMMD WHERE NOT EXISTS (SELECT MC001 FROM BOMMC where BOMMC.MC001 = BOMMD.MD001)
exists是用来判断是否存在的,当exists(查询)中的查询存在结果时则返回真,否则返回假。not exists则相反。
exists做为where 条件时,是先对where 前的主查询询进行查询,然后用主查询的结果一个一个的代入exists的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的2:select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
例子如下(即exists返回where后2个比较的where子句中相同值,not exists则返回where子句中不同值):
exists (sql 返回结果集为真)
not exists (sql 不返回结果集为真)
如下:
表A
ID NAME
1 A1
2 A2
3 A3
表B
ID AID NAME
1 1 B1
2 2 B2
3 2 B3
表A和表B是一对多的关系 A.ID --> B.AID
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID = B.AID)
执行结果为
1 A1
2 A2
原因可以按照如下分析
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 1)
-->SELECT * FROM B WHERE B.AID = 1有值返回真所以有数据
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 2)
-->SELECT * FROM B WHERE B.AID = 2有值返回真所以有数据
SELECT ID , NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID = 3)
-->SELECT * FROM B WHERE B.AID = 3无值返回真所以没有数据
NOT EXISTS 就是反过来
SELECT ID , NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID = B.AID)
执行结果为
3 A3
sql in与exists区别
IN
确定给定的值是否与子查询或列表中的值相匹配。
EXISTS
指定一个子查询,检测行的存在。
比较使用 EXISTS 和 IN 的查询
这个例子比较了两个语义类似的查询。第一个查询使用 EXISTS 而第二个查询使用 IN。注意两个查询返回相同的信息。
USE pubs
GO
SELECT DISTINCT pub_name
FROM publishers
WHERE EXISTS
(SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = 'business')
GO
-- Or, using the IN clause:
USE pubs
GO
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')
GO
下面是任一查询的结果集:
pub_name
----------------------------------------
Algodata Infosystems
New Moon Books
(2 row(s) affected)
exits 相当于存在量词:表示集合存在,也就是集合不为空只作用一个集合.例如 exist P 表示P不空时为真; not exist P表示p为空时 为真 in表示一个标量和一元关系的关系。例如:s in P表示当s与P中的某个值相等时 为真; s not in P 表示s与P中的每一个值都不相等时 为真
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
全文:
in和exists
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。
如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:
select * from A where cc in (select cc from B)
效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc)
效率高,用到了B表上cc列的索引。
相反的
2:
select * from B where cc in (select cc from A)
效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc)
效率低,用到了A表上cc列的索引。
not in 和not exists
如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');
与
select name from student where name='zhang' or name='li' or name='wang' or name='zhao'
的结果是相同的。
浏览量:3
下载量:0
时间:
数据库update的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库update的用法的用法,希望对你们有用。
SQL语句中的更新语句update是最常用的语句之一,下面将为您介绍update语句的三种使用方法,供您参考,希望对您有所帮助。
一、环境:
MySQL-5.0.41-win32
Windows XP professional
二、建立测试环境:
DROP TABLE IF EXISTS t_test;
CREATE TABLE t_test (
bs bigint(20) NOT NULL auto_increment,
username varchar(20) NOT NULL,
password varchar(20) default NULL,
remark varchar(200) default NULL,
PRIMARY KEY (bs)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=gbk;
INSERT INTO t_test VALUES (1,'lavasoft','123456',NULL);
INSERT INTO t_test VALUES (2,'hello',NULL,NULL);
INSERT INTO t_test VALUES (3,'haha',zz,tt);
三、测试
1、set一个字段
在表t_test中设置第二条记录(bs为2)的password为'***'。
update t_test t
set t.password = '***'
where t.bs = 2;
2、set多个字段
在表t_test中设置第一条记录(bs为1)的password为'*'、remark为'*'。
update t_test t
set t.password = '*', t.remark = '*'
where t.bs = 1;
3、set null值
在表t_test中设置第三条记录(bs为3)的password为null、remark为null。
update t_test t
set t.password = null, t.remark = null
where t.bs = 3;
这个是按照标准语法写的,在不同的数据库系统中,update还有更多的写法,但是标准写法都是支持的。以上三个例子为了说明情况,每次都更新一行。在实际中,可以通过where语句约束来控制更新行数。
浏览量:2
下载量:0
时间:
数据库查询distinct的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库查询distinct的用法的用法,希望对你们有用。
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。
表A:
表B:
1.作用于单列
select distinct name from A
执行后结果如下:
2.作用于多列
示例2.1
select distinct name, id from A
执行后结果如下:
实际上是根据name和id两个字段来去重的,这种方式Access和SQL Server同时支持。
示例2.2
select distinct xing, ming from B
返回如下结果:
返回的结果为两行,这说明distinct并非是对xing和ming两列“字符串拼接”后再去重的,而是分别作用于了xing和ming列。
3.COUNT统计
select count(distinct name) from A; --表中name去重后的数目, SQL Server支持,而Access不支持
count是不能统计多个字段的,下面的SQL在SQL Server和Access中都无法运行。
select count(distinct name, id) from A;
若想使用,请使用嵌套查询,如下:
select count(*) from (select distinct xing, name from B) AS M;
4.distinct必须放在开头
select id, distinct name from A; --会提示错误,因为distinct必须放在开头
5.其他
distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。例如,假如表A有“备注”列,如果想获取distinc name,以及对应的“备注”字段,想直接通过distinct是不可能实现的。但可以通过其他方法实现关于SQL Server将一列的多行内容拼接成一行的问题讨论
浏览量:2
下载量:0
时间:
数据库中count的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中count的用法的用法,希望对你们有用。
count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在MySQL中count函数用法与性能比较吧。count(*) 它返回检索行的数目, 不论其是否包含 NULL值。
SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度。
例如:SELECT COUNT(*) FROM student;
COUNT(DISTINCT 字段),返回不同的非NULL值数目;若找不到匹配的项,则COUNT(DISTINCT)返回 0 。
这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函数返回记录的精确数量,而且非常容易访问。
对于事务型的存储引擎(InnoDB, BDB), 存储一个精确行数的问题比较多,原因是可能会发生多重事物处理,而每个都可能会对行数产生影响。
例, 创建用于测试的数据表,以进行count数据统计:
CREATE TABLE `user` (
`id` int(5) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
`password` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
测试数据为:
1 name1 123456
2 name2 123456
3 name3 123456
4 name4 NULL
请注意以下查询的返回结果:
1,select count(*) from `user`
2,select count(name) from `user`
3,select count(password) from `user`
输出结果:4,4,3
原因分析:
1,count(*)是对行数目进行计数,所以结果为4。
2,count(column_name)是对列中不为空的行进行计数,所以count(name)=4,而count(password)=3。
以上二点,在使用count函数时,要注意下。
使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息:
mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clause
COUNT( )和GROUP BY以各种方式分类你的数据。下列例子显示出进行动物普查操作的不同方式。
每种动物的数量:
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
+---------+----------+
| species | COUNT(*) |
+---------+----------+
| bird | 2 |
| cat | 2 |
| dog | 3 |
| hamster | 1 |
| snake | 1 |
+---------+----------+
每种性别的动物数量:
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
+------+----------+
| sex | COUNT(*) |
+------+----------+
| NULL | 1 |
| f | 4 |
| m | 4 |
+------+----------+
(在这个输 出中,NULL表示“未知性别”。)
按种类和性别组合的动物数量:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| bird | NULL | 1 |
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+
若 使用COUNT( ),你不必检索整个表。例如, 前面的查询,当只对狗和猫进行时,应为:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE species = 'dog' OR species = 'cat'
-> GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
+---------+------+----------+
或, 如果你仅需要知道已知性别的按性别的动物数目:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE sex IS NOT NULL
-> GROUP BY species, sex;
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
+---------+------+----------+
顺便提下mysql的DISTINCT的关键字有很多你想不到的用处
1.在count 不重复的记录的时候能用到
比如SELECT COUNT( DISTINCT id ) FROM tablename;
就是计算talbebname表中id不同的记录有多少条
2,在需要返回记录不同的id的具体值的时候可以用
比如SELECT DISTINCT id FROM tablename;
返回talbebname表中不同的id的具体的值
3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
比如SELECT DISTINCT id, type FROM tablename;
实际上返回的是 id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样
4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的
5.其实还有另外一种解决方式,就是使用
SELECT id, type, count(DISTINCT id) FROM tablename
虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据)
返回的结果是 只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了
浏览量:3
下载量:0
时间:
数据库中drop的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中drop的用法的用法,希望对你们有用。
由于数据库表在计算机中占有物理空间,出于效率方面的考滤,在不需要某些数据库表时,可以删除它们.使用drop table语句可以删除数据库表及表中的任何约束,并释放它们所占的物理空间.利用drop table语句删除数据库表的语法结构如下;
drop table [database_name.[schema_name].|schema_name.]table_name][,...n]
各参数的含义如下:
◎database_name:要在其中删除表的数据库的名称.
◎schema_name:表所属架构的名称.
◎table_name:要删除表的名称.
1.删除数据库表 TestTable,实现代码如下所示:
use mydatebase
go
drop table webuser
2.还可以同时删除多个数据库表,表与表之间用逗号隔开,实现代码如下所示:
use mydatebase
go
drop table webuser,UserComment
3.删除临时表,实现代码如下所示:
use mydatebase
go
drop table #webuser,##UserComment
4.在此南昌网络公司技术人员提醒:如果要删除有依赖关联的数据库表,即主键,外键关联表,则要删除两个表之间的关联约束,然后才可以删除表.注意,也可以先删除引用该表的数据库表,实现代码如下所示: 例如:有表产品表关联着产品分类表.我们就要先删除产品表.再来删除产品分类表.
use mydatebase
go
drop table 产品表
删除成功后
use mydatebase
go
drop table 产品分类表
在此南昌网站建设公司工程师提醒:在Oracle中,利用drop table 删除有关联关系的数据库表时,会同时删除与之关联的所有数据库表.
在此顺便介绍在网页编程中Sql语句删除表的表达方式如下所示:
conn.execute("drop TABLE 表名")
浏览量:3
下载量:0
时间:
数据库中exists语句的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中exists语句的用法的用法,希望对你们有用。
SQL中EXISTS的用法
问题:查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
--方法1
Sql代码
select Student.* from Student , SC where Student.S# = SC.S# and SC.C# = '01' and exists (Select 1 from SC SC_2 where SC_2.S# = SC.S# and SC_2.C# = '02') order by Student.S#
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
例表A:TableIn
例表B:TableEx
(二). 比较使用 EXISTS 和 IN 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME in(select BNAME from TableEx)
(三). 比较使用 EXISTS 和 = ANY 的查询。注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)
select * from TableIn where ANAME=ANY(select BNAME from TableEx)
NOT EXISTS 的作用与 EXISTS 正好相反。如果子查询没有返回行,则满足了 NOT EXISTS 中的 WHERE 子句。
一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。
EXISTS与IN的使用效率的问题,通常情况下采用exists要比in效率高,因为IN不走索引,但要看实际情况具体使用:
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
浏览量:3
下载量:0
时间:
数据库中in的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中in的用法的用法,希望对你们有用。
IN:确定给定的值是否与子查询或列表中的值相匹配。
IN 关键字使您得以选择与列表中的任意一个值匹配的行。
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERECategoryID IN (1, 4, 5)
IN 关键字之后的项目必须用逗号隔开,并且括在括号中。
NOT IN:通过 NOT IN关键字引入的子查询也返回一列零值或更多值。
以下查询查找没有出版过商业书籍的出版商的名称。
SELECTpub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHEREtype = 'business')
使用 EXISTS和 NOT EXISTS引入的子查询可用于两种集合原理的操作:交集与差集。两个集合的交集包含同时属于两个原集合的所有元素。
差集包含只属于两个集合中的第一个集合的元素。
EXISTS:指定一个子查询,检测行的存在。
SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT *FROM titles WHERE pub_id = publishers.pub_id AND type =
'business')
SELECTdistinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titlesWHERE type = 'business')
两者的区别:
EXISTS:后面可以是整句的查询语句如:SELECT *FROM titles
IN:后面只能是对单列:SELECTpub_id FROM titles
NOT EXISTS:
例如,要查找不出版商业书籍的出版商的名称:
SELECTpub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id =publishers.pub_id AND type =
'business')
下面的查询查找已经不销售的书的名称:
SELECT titleFROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id =titles.title_id)
例子:
https://验证有发布产品的公司个数
select id,name from company where exists (select * from product where comid=company.id)
select id,name from company where id in(select comid from product)
https://验证没有发布产品的公司个数
select id,name from company where not exists (select * from product where comid=company.id)
select id,name from company where id not in(select comid from product)
浏览量:2
下载量:0
时间:
数据库中like的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中like的用法的用法,希望对你们有用。
语法
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
参数
match_expression
任何字符串数据类型的有效 SQL Server 表达式。
pattern
match_expression 中的搜索模式,可以包含下列有效 SQL Server 通配符。
通配符 描述 示例
% 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。
_(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。
[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。
[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。 WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。
Like的运用场合主要在模糊查询的时候,一般以查询字符串居多,这里据一些例子来说他的一般用法:
例1,查询name字段中包含有“明”字的。
select * from table1 where name like ‘%明%’
这里不要使用*来代替,一般在使用0个或者任意个字符构成的字符串的时候最好使用%
不过在首或尾使用可以相互替换,如果在头尾同时使用的话,就必须要使用%
例2,查询name字段中以“李”字开头。
select * from table1 where name like ‘李*’
或者
select * from table1 where name like ‘李%’
例3,查询name字段中含有数字的。
select * from table1 where name like ‘%[0-9]%’
例4,查询name字段中含有小写字母的。
select * from table1 where name like ‘%[a-z]%’
例5,查询name字段中不含有数字的。
select * from table1 where name like ‘%[!0-9]%’
浏览量:4
下载量:0
时间:
数据库中round的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中round的用法的用法,希望对你们有用。
Access数据库中Round用法
四舍五入的问题
select round(83.124,2) as t from jqdltb
显示为:83.12
select round(83.125,2) as t from jqdltb
显示为:83.12
select round(83.126,2) as t from jqdltb
显示为:83.13
问题来了,就是四舍五入怎么变成五舍六入了呢?
下面是用这个方法来调整达到四舍五入的方法:
使用int函数和加0.005,然后*100,再然后/100
如下所示:
select int((83.121+0.005)*100)/100 as t from jqdltb
显示为:83.12
select int((83.124+0.005)*100)/100 as t from jqdltb
显示为:83.12
select int((83.125+0.005)*100)/100 as t from jqdltb
显示为:83.13
select int((83.126+0.005)*100)/100 as t from jqdltb
显示为:83.13
select int((83.129+0.005)*100)/100 as t from jqdltb
显示为:83.13
浏览量:3
下载量:0
时间:
数据库中select的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中select的用法的用法,希望对你们有用。
1、select语句可以用回车分隔
?
1
2
3
4
$sql="select * from article where id=1"
和
$sql="select * from article
where id=1",都可以得到正确的结果,但有时分开写或许能更明了一点,特别是当sql语句比较长时
2、批量查询数据
?
1
2
可以用in来实现
$sql="select * from article where id in(1,3,5)"
3、使用concat连接查询的结果
?
1
$sql="select concat(id,"-",con) as res from article where id=1"
返回"1-article content"
4、使用locate
用法:
select locate("hello","hello baby");返回1
不存在返回0
5、使用group by
以前一直没怎么搞明group by 和 order by,其实也满简单的,group by 是把相同的结果编为一组
?
1
exam:$sql="select city ,count(*) from customer group by city";
这句话的意思就是从customer表里列出所有不重复的城市,及其数量(有点类似distinct)
group by 经常与AVG(),MIN(),MAX(),SUM(),COUNT()一起使用
6、使用having
having 允许有条件地聚合数据为组
?
1
2
$sql="select city,count(*),min(birth_day) from customer
group by city having count(*)>10";
这句话是先按city归组,然后找出city地数量大于10的城市
btw:使用group by + having 速度有点慢
同时having子句包含的表达式必须在之前出现过
7、组合子句
where、group by、having、order by(如果这四个都要使用的话,一般按这个顺序排列)
8、使用distinct
distinct是去掉重复值用的
?
1
$sql="select distinct city from customer order by id desc";
这句话的意思就是从customer表中查询所有的不重复的city
9、使用limit
如果要显示某条记录之后的所有记录
?
1
$sql="select * from article limit 100,-1";
10、多表查询
?
1
2
3
4
$sql="select user_name from user u,member m
where u.id=m.id and
m.reg_date>=2006-12-28
order by u.id desc"
浏览量:4
下载量:0
时间:
数据库中sum的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中sum的用法的用法,希望对你们有用。
根据BOL中解释COUNT用来返回组中的项数。
COUNT(*)返回组中的项数。包括 NULL 值和重复项
COUNT(ALL expression):对组中的每一行都计算 expression 并返回非空值的数量。默认值。
COUNT(DISTINCT expression):对组中的每一行都计算 expression 并返回唯一非空值的数量。
ID Value
----------- --------------------------------------------------
1 A
2 B
2 B
3 B
4 NULL
select COUNT(* ) from Table_1
-----------
5
SELECT COUNT(Value) FROM Table_1
-----------
4
SELECT COUNT(DISTINCT Value) FROM Table_1
-----------
2
SUM返回表达式中所有值的和或仅非重复值的和。SUM 只能用于数字列。空值将被忽略
ID Value
----------- -----------
1 1
2 2
3 3
4 4
5 NULL
6 5
7 5
SELECT SUM(Value) From Table_1
-----------
20
SELECT SUM(DISTINCT Value) From Table_1
-----------
15
以Northwind数据库中的Employees,Orders表为例,列出所有雇员的姓名以及其拥有的Order的个数。分别用Count()和SUM()实现。
SELECT e.EmployeeID,FirstName,LastName,Count(O.EmployeeID) AS OrderCount
FROM dbo.Employees AS E LEFT JOIN dbo.Orders AS O
ON E.EmployeeID = O.EmployeeID
Group By E.EmployeeID,FirstName,LastName
SELECT e.EmployeeID,FirstName,LastName,SUM(CASE WHEN O.EmployeeID IS NULL THEN 0 ELSE 1 END) AS OrderCount
FROM dbo.Employees AS E LEFT JOIN dbo.Orders AS O
ON E.EmployeeID = O.EmployeeID
Group By E.EmployeeID,FirstName,LastName
注意的是这里一定不能用COUNT(*),因为COUNT(*)是计算行数,对于没有定单的用户也是为1。只有在JOIN的情况下,COUNT(*)才等效于Count(O.EmployeeID
附:这两个表的定义。
USE [Northwind]
GO
/****** Object: Table [dbo].[Employees] Script Date: 01/13/2012 22:57:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Employees](
[EmployeeID] [int] IDENTITY(1,1) NOT NULL,
[LastName] [nvarchar](20) NOT NULL,
[FirstName] [nvarchar](10) NOT NULL,
[Title] [nvarchar](30) NULL,
[TitleOfCourtesy] [nvarchar](25) NULL,
[BirthDate] [datetime] NULL,
[HireDate] [datetime] NULL,
[Address] [nvarchar](60) NULL,
[City] [nvarchar](15) NULL,
[Region] [nvarchar](15) NULL,
[PostalCode] [nvarchar](10) NULL,
[Country] [nvarchar](15) NULL,
[HomePhone] [nvarchar](24) NULL,
[Extension] [nvarchar](4) NULL,
[Photo] [image] NULL,
[Notes] [ntext] NULL,
[ReportsTo] [int] NULL,
[PhotoPath] [nvarchar](255) NULL,
CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED
(
[EmployeeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD CONSTRAINT [FK_Employees_Employees] FOREIGN KEY([ReportsTo])
REFERENCES [dbo].[Employees] ([EmployeeID])
GO
ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [FK_Employees_Employees]
GO
ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD CONSTRAINT [CK_Birthdate] CHECK (([BirthDate] < getdate()))
GO
ALTER TABLE [dbo].[Employees] CHECK CONSTRAINT [CK_Birthdate]
GO
USE [Northwind]
GO
/****** Object: Table [dbo].[Orders] Script Date: 01/13/2012 23:02:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Orders](
[OrderID] [int] IDENTITY(1,1) NOT NULL,
[CustomerID] [nchar](5) NULL,
[EmployeeID] [int] NULL,
[OrderDate] [datetime] NULL,
[RequiredDate] [datetime] NULL,
[ShippedDate] [datetime] NULL,
[ShipVia] [int] NULL,
[Freight] [money] NULL,
[ShipName] [nvarchar](40) NULL,
[ShipAddress] [nvarchar](60) NULL,
[ShipCity] [nvarchar](15) NULL,
[ShipRegion] [nvarchar](15) NULL,
[ShipPostalCode] [nvarchar](10) NULL,
[ShipCountry] [nvarchar](15) NULL,
CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED
(
[OrderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Customers] FOREIGN KEY([CustomerID])
REFERENCES [dbo].[Customers] ([CustomerID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Customers]
GO
ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Employees] FOREIGN KEY([EmployeeID])
REFERENCES [dbo].[Employees] ([EmployeeID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Employees]
GO
ALTER TABLE [dbo].[Orders] WITH NOCHECK ADD CONSTRAINT [FK_Orders_Shippers] FOREIGN KEY([ShipVia])
REFERENCES [dbo].[Shippers] ([ShipperID])
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Shippers]
GO
ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [DF_Orders_Freight] DEFAULT (0) FOR [Freight]
GO
浏览量:4
下载量:0
时间:
数据库中update的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中update的用法的用法,希望对你们有用。
首先,单表的UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
其次,多表的UPDATE语句:
UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。
如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。
LIMIT子句用于给定一个限值,限制可以被更新的行的数目。
UPDATE语句支持以下修饰符:
1,如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。
2,如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。
如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。
如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。
例如,把年龄列设置为比当前值多一:
复制代码 代码如下:
mysql> UPDATE persondata SET age=age+1;
UPDATE赋值被从左到右评估。
例如,对年龄列加倍,然后再进行增加:
复制代码 代码如下:
mysql> UPDATE persondata SET age=age*2, age=age+1;
如果您把一列设置为其当前含有的值,则MySQL会注意到这一点,但不会更新。
如果您把被已定义为NOT NULL的列更新为NULL,则该列被设置到与列类型对应的默认值,并且累加警告数。
对于数字类型,默认值为0;对于字符串类型,默认值为空字符串('');对于日期和时间类型,默认值为“zero”值。
UPDATE会返回实际被改变的行的数目。Mysql_info() C API函数可以返回被匹配和被更新的行的数目,以及在UPDATE过程中产生的警告的数量。
您可以使用LIMIT row_count来限定UPDATE的范围。LIMIT子句是一个与行匹配的限定。
只要发现可以满足WHERE子句的row_count行,则该语句中止,不论这些行是否被改变。
如果一个UPDATE语句包括一个ORDER BY子句,则按照由子句指定的顺序更新行。
您也可以执行包括多个表的UPDATE操作。table_references子句列出了在联合中包含的表。
例子:
复制代码 代码如下:
SQL>UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
说明:以上代码显示出了使用逗号操作符的内部联合,但是multiple-table UPDATE语句可以使用在SELECT语句中允许的任何类型的联合,比如LEFT JOIN。
注释:不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。
在一个被更改的multiple-table UPDATE中,有些列被引用。您只需要这些列的UPDATE权限。有些列被读取了,但是没被修改。您只需要这些列的SELECT权限。
如果您使用的multiple-table UPDATE语句中包含带有外键限制的InnoDB表,则MySQL优化符处理表的顺序可能与上下层级关系的顺序不同。
在此情况下,语句无效并被 回滚。同时,更新一个单一表,并且依靠ON UPDATE功能。
该功能由InnoDB提供,用于对其它表进行相应的修改。
目前,不能在一个子查询中更新一个表,同时从同一个表中选择。
update语句的几种基本用法
A. 使用简单的 UPDATE
下列示例说明如果从 UPDATE 语句中去除 WHERE 子句,所有的行会受到什么影响。
下面这个例子说明,如果表 publishers 中的所有出版社将总部搬迁到佐治亚州的亚特兰大市,表 publishers 如何更新。
复制代码 代码如下:
UPDATE publishers
SET city = 'Atlanta', state = 'GA'
本示例将所有出版商的名字变为 NULL。
复制代码 代码如下:
UPDATE publishers
SET pub_name = NULL
也可以在更新中使用计算值。本示例将表 titles 中的所有价格加倍。
复制代码 代码如下:
UPDATE titles
SET price = price * 2
B.把 WHERE 子句和 UPDATE 语句一起使用
WHERE 子句指定要更新的行例如,在下面这个虚构的事件中,北加利福尼亚更名为 Pacifica(缩写为 PC),而奥克兰的市民投票决定将其城市的名字改为 Bay City。这个例子说明如何为奥克兰市以前的所有居民(他们的地址已经过时)更新表 authors。
复制代码 代码如下:
UPDATE authors
SET state = 'PC', city = 'Bay City'
WHERE state = 'CA' AND city = 'Oakland'
必须编写另一个语句来更改北加利福尼亚其它城市的居民所在的州名。
C.通过 UPDATE 语句使用来自另一个表的信息
本示例修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新销售记录。
复制代码 代码如下:
UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
这个例子假定,一种特定的商品在特定的日期只记录一批销售量,而且更新是最新的。如果不是这样(即如果一种特定的商品在同一天可以记录不止一批销售量),这里所示的例子将出错。例子可正确执行,但是每种商品只用一批销售量进行更新,而不管那一天实际销售了多少批。这是因为一个 UPDATE 语句从不会对同一行更新两次。
对于特定的商品在同一天可销售不止一批的情况,每种商品的所有销售量必须在 UPDATE 语句中合计在一起,如下例所示:
复制代码 代码如下:
UPDATE titles
SET ytd_sales =
(SELECT SUM(qty)
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
FROM titles, sales
D. 将 UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用
这个例子对来自表 authors 的前十个作者的 state 列进行更新。
复制代码 代码如下:
UPDATE authors
SET state = 'ZZ'
FROM (SELECT TOP 10 * FROM authors ORDER BY au_lname) AS t1
WHERE authors.au_id = t1.au_id
浏览量:3
下载量:0
时间:
在mysql数据库中 rank的用法的用法你知道吗?下面小编就跟你们详细介绍下在mysql数据库中 rank的用法的用法,希望对你们有用。
Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ranking. Note that after a tie, the next ranking number should be the next consecutive integer value. In other words, there should be no "holes" between ranks.
?
1
2
3
4
5
6
7
8
9
10
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
For example, given the above Scores table, your query should generate the following report (order by highest score):
?
1
2
3
4
5
6
7
8
9
10
+-------+------+
| Score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+
题目解答:
?
1
2
3
4
5
6
7
8
9
10
# Write your MySQL query statement below
SELECT Scores.Score, COUNT(Ranking.Score) AS RANK
FROM Scores
, (
SELECT DISTINCT Score
FROM Scores
) Ranking
WHERE Scores.Score <= Ranking.Score
GROUP BY Scores.Id, Scores.Score
ORDER BY Scores.Score DESC;
浏览量:3
下载量:0
时间: