溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

sql_server基礎(chǔ)學(xué)習(xí)

發(fā)布時(shí)間:2020-07-18 10:59:12 來(lái)源:網(wǎng)絡(luò) 閱讀:215 作者:一二毛錢(qián) 欄目:關(guān)系型數(shù)據(jù)庫(kù)

SQL DML 和 DDL

可以把 SQL 分為兩個(gè)部分:數(shù)據(jù)操作語(yǔ)言 (DML) 和 數(shù)據(jù)定義語(yǔ)言 (DDL)。
SQL (結(jié)構(gòu)化查詢(xún)語(yǔ)言)是用于執(zhí)行查詢(xún)的語(yǔ)法。但是 SQL 語(yǔ)言也包含用于更新、插入和刪除記錄的語(yǔ)法。
查詢(xún)和更新指令構(gòu)成了 SQL 的 DML 部分:
?SELECT?- 從數(shù)據(jù)庫(kù)表中獲取數(shù)據(jù)
?UPDATE?- 更新數(shù)據(jù)庫(kù)表中的數(shù)據(jù)
?DELETE?- 從數(shù)據(jù)庫(kù)表中刪除數(shù)據(jù)
?INSERT INTO?- 向數(shù)據(jù)庫(kù)表中插入數(shù)據(jù)
SQL 的數(shù)據(jù)定義語(yǔ)言 (DDL) 部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的鏈接,以及施加表間的約束。
SQL 中最重要的 DDL 語(yǔ)句:
?CREATE DATABASE?- 創(chuàng)建新數(shù)據(jù)庫(kù)
?ALTER DATABASE?- 修改數(shù)據(jù)庫(kù)
?CREATE TABLE?- 創(chuàng)建新表
?ALTER TABLE?- 變更(改變)數(shù)據(jù)庫(kù)表
?DROP TABLE?- 刪除表
?CREATE INDEX?- 創(chuàng)建索引(搜索鍵)
?DROP INDEX?- 刪除索引


創(chuàng)建一段數(shù)據(jù)測(cè)試

sql_server基礎(chǔ)學(xué)習(xí)

use test
create table Persons(
Id int primary key,
Name varchar(14) not null,
Sex varchar(13) not null,
Address varchar(20) not null,
City varchar(20) not null
)
insert into Persons values(1,'張三','男','廣東茂名','廣東');
insert into Persons values(2,'李四','男','浙江杭州','浙江');
insert into Persons values(3,'王五','女','北京五環(huán)','北京');
insert into Persons values(4,'小小','女','上海浦東','上海');

select * from Persons

sql_server基礎(chǔ)學(xué)習(xí)

select語(yǔ)句

語(yǔ)法:
SELECT 列名稱(chēng) FROM 表名稱(chēng)

?查看某列數(shù)據(jù)

select Name from Persons        

?可以查詢(xún)多列用“,”隔開(kāi)

select Name,Sex from Persons

select * from sysdatabases;     #查看所以庫(kù)  (*代表所有)
use tongji                      #切換tongji庫(kù)
select * from sys.tables            #查看所有表

?查看schema,user的存儲(chǔ)過(guò)程

SELECT * FROM SYS.DATABASE_PRINCIPALS
SELECT * FROM SYS.SCHEMAS
SELECT * FROM SYS.SERVER_PRINCIPALS

?查看DEPT表所有內(nèi)容

select * from DEPT 

?查看DEPT表中deptno為101的內(nèi)容

select * from DEPT where deptno='101';

?select distinct語(yǔ)句
關(guān)鍵詞 DISTINCT 用于返回唯一不同的值
語(yǔ)法:
SELECT DISTINCT 列名稱(chēng) FROM 表名稱(chēng)

sql_server基礎(chǔ)學(xué)習(xí)

select distinct Name,Sex from Persons

sql_server基礎(chǔ)學(xué)習(xí)

?SQL SELECT INTO 語(yǔ)句

SQL SELECT INTO----可用于創(chuàng)建表的備份文件

SQL SELECT INTO 語(yǔ)法
您可以把所有的列插入新表:

SELECT * INTO new_table_name [IN externaldatabase] 
FROM old_tablename

或者只把希望的列插入新表:

SELECT column_name(s) INTO new_table_name [IN externaldatabase] 
FROM old_tablename

?制作 "Persons" 表的備份復(fù)件

select  *  into Persons_backup from Persons;

子句可用于向另一個(gè)數(shù)據(jù)庫(kù)中拷貝表:

SELECT *INTO Persons IN 'Backup.mdb'
FROM Persons

如果我們希望拷貝某些域,可以在 SELECT 語(yǔ)句后列出這些域:

SELECT LastName,FirstNameINTO Persons_backup
FROM Persons

?create語(yǔ)句

?創(chuàng)建test庫(kù)
use master
create database test

?創(chuàng)建test登陸用戶(hù),密碼為123,默認(rèn)庫(kù)為tongji

create login test with password='123',default_database=tongji

?為登陸用戶(hù)創(chuàng)建數(shù)據(jù)庫(kù)用戶(hù)test1(create user),默認(rèn)庫(kù)為dbo

create user test1 for login test with default_schema=dbo

?創(chuàng)建DEPT表(要先去到庫(kù)里執(zhí)行)

create table DEPT
(
DEPTNO int primary key,
DNAME VARCHAR(14),
LOC VARCHAR(13)
)

數(shù)據(jù)類(lèi)型(data_type)規(guī)定了列可容納何種數(shù)據(jù)類(lèi)型。下面的表格包含了SQL中最常用的數(shù)據(jù)類(lèi)型:
數(shù)據(jù)類(lèi)型 描述
?integer(size)
?int(size)
?smallint(size)
?tinyint(size) 僅容納整數(shù)。在括號(hào)內(nèi)規(guī)定數(shù)字的最大位數(shù)。
?decimal(size,d)
?numeric(size,d) 容納帶有小數(shù)的數(shù)字。
"size" 規(guī)定數(shù)字的最大位數(shù)。"d" 規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。
char(size) 容納固定長(zhǎng)度的字符串(可容納字母、數(shù)字以及特殊字符)。
在括號(hào)中規(guī)定字符串的長(zhǎng)度。
varchar(size) 容納可變長(zhǎng)度的字符串(可容納字母、數(shù)字以及特殊的字符)。
在括號(hào)中規(guī)定字符串的最大長(zhǎng)度。
date(yyyymmdd) 容納日期。

?create index

您可以在表中創(chuàng)建索引,以便更加快速高效地查詢(xún)數(shù)據(jù)。
用戶(hù)無(wú)法看到索引,它們只能被用來(lái)加速搜索/查詢(xún)。
注釋?zhuān)焊乱粋€(gè)包含索引的表需要比更新一個(gè)沒(méi)有索引的表更多的時(shí)間,這是由于索引本身也需要更新。因此,理想的做法是僅僅在常常被搜索的列(以及表)上面創(chuàng)建索引。

SQL CREATE INDEX 語(yǔ)法
在表上創(chuàng)建一個(gè)簡(jiǎn)單的索引。允許使用重復(fù)的值:
CREATE INDEX index_name ON table_name (column_name)
注釋?zhuān)?quot;column_name" 規(guī)定需要索引的列。

SQL CREATE UNIQUE INDEX 語(yǔ)法
在表上創(chuàng)建一個(gè)唯一的索引。唯一的索引意味著兩個(gè)行不能擁有相同的索引值。
CREATE UNIQUE INDEX index_name ON table_name (column_name)

假如您希望索引不止一個(gè)列,您可以在括號(hào)中列出這些列的名稱(chēng),用逗號(hào)隔開(kāi):

create index sed on Persons (City,Name);

?insert語(yǔ)句

語(yǔ)法
INSERT INTO 表名稱(chēng) VALUES (值1, 值2,....)
我們也可以指定所要插入數(shù)據(jù)的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

?插入數(shù)據(jù)

insert into DEPT VALUES(101,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES(102,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES(103,'SALES','CHICAGO');
INSERT INTO DEPT VALUES(104,'OPERATIONS','BOSTON');

?--指定列中插入數(shù)據(jù)

insert  into Persons (Name,Sex) values('大大','女')

?update語(yǔ)句

語(yǔ)法:
UPDATE 表名稱(chēng) SET 列名稱(chēng) = 新值 WHERE 列名稱(chēng) = 某值

?為Name是大大的人添加Address

update Persons set Address='南京' where Name='大大'

?為Name是大大的人修改Address,City

update Persons set Address='中山',City='南京' where Name='大大'

?delete語(yǔ)句

DELETE 語(yǔ)句用于刪除表中的行。
語(yǔ)法
DELETE FROM 表名稱(chēng) WHERE 列名稱(chēng) = 值

刪除ID號(hào)為5的內(nèi)容

delete from Persons where Id=5

可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的:

DELETE FROM table_name
或者:
DELETE * FROM table_name

?drop語(yǔ)句

通過(guò)使用drop語(yǔ)句,可以輕松地刪除索引、表和數(shù)據(jù)庫(kù)。

SQL DROP TABLE 語(yǔ)句
DROP TABLE 語(yǔ)句用于刪除表(表的結(jié)構(gòu)、屬性以及索引也會(huì)被刪除):
DROP TABLE 表名稱(chēng)
SQL DROP DATABASE 語(yǔ)句
DROP DATABASE 語(yǔ)句用于刪除數(shù)據(jù)庫(kù):
DROP DATABASE 數(shù)據(jù)庫(kù)名稱(chēng)

用于 Microsoft SQLJet (以及 Microsoft Access) 的語(yǔ)法:

DROP INDEX index_name ON table_name

?alter語(yǔ)句

ALTER TABLE 語(yǔ)句用于在已有的表中添加、修改或刪除列。

SQL ALTER TABLE 語(yǔ)法
如需在表中添加列,請(qǐng)使用下列語(yǔ)法:
ALTER TABLE table_name
ADD column_name datatype
要?jiǎng)h除表中的列,請(qǐng)使用下列語(yǔ)法:
ALTER TABLE table_name
DROP COLUMN column_name
注釋?zhuān)耗承?shù)據(jù)庫(kù)系統(tǒng)不允許這種在數(shù)據(jù)庫(kù)表中刪除列的方式 (DROP COLUMN column_name)。
要改變表中列的數(shù)據(jù)類(lèi)型,請(qǐng)使用下列語(yǔ)法:
ALTER TABLE table_name
ALTER COLUMN column_name datatype

在Order表里增加一列

alter  table Orders add Id nchar(10); 

在Persons表里添加一列,增加內(nèi)容

alter table Persons add Birthday datetime;
update Persons set Birthday='1991-03-26' where Id=1

刪除Birthday列

alter table Persons drop column Birthday

?where語(yǔ)句

**語(yǔ)法:
SELECT 列名稱(chēng) FROM 表名稱(chēng) WHERE 列 運(yùn)算符 值
下面的運(yùn)算符可在 WHERE 子句中使用:
操作符 描述
= 等于
<> 不等于

大于
< 小于
= 大于等于
<= 小于等于
BETWEEN 在某個(gè)范圍內(nèi)**
LIKE 搜索某種模式
注釋?zhuān)涸谀承┌姹镜?SQL 中,操作符 <> 可以寫(xiě)為 !=。
?查詢(xún)居住在北京的人

select * from Persons where City='北京';

注意:SQL 使用單引號(hào)來(lái)環(huán)繞文本值(大部分?jǐn)?shù)據(jù)庫(kù)系統(tǒng)也接受雙引號(hào))。如果是數(shù)值,請(qǐng)不要使用引號(hào)。
?and |or運(yùn)算符
and:兩者皆成立

select * from Persons where Name='王五' and Sex='女';

or:一者成立便可

select * from Persons where Name='王五' or Sex='女';

我們也可以把 AND 和 OR 結(jié)合起來(lái)(使用圓括號(hào)來(lái)組成復(fù)雜的表達(dá)式):

select * from Persons where (Name='王五' or Sex='女') and Address='北京五環(huán)';

?order by語(yǔ)句

ORDER BY 語(yǔ)句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序。
ORDER BY 語(yǔ)句默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序。
如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用 DESC 關(guān)鍵字。

例:以字母順序顯示公司名稱(chēng)(從小到大)

select * from Orders order by Company

逆序(從大到小)

select * from Orders order by Company desc

以逆字母順序顯示公司名稱(chēng),并以數(shù)字順序顯示順序號(hào):

select * from Orders order by Company desc,OrderNo asc

?TOP 子句

TOP 子句用于規(guī)定要返回的記錄的數(shù)目。
對(duì)于擁有數(shù)千條記錄的大型表來(lái)說(shuō),TOP 子句是非常有用的。
注釋?zhuān)翰⒎撬械臄?shù)據(jù)庫(kù)系統(tǒng)都支持 TOP 子句。

SQL Server 的語(yǔ)法:
SELECT TOP number|percent column_name(s) FROM table_name
?查詢(xún)Persons表中頭兩條記錄

select top 2 * from Persons

?"Persons" 表中選取 50% 的記錄

select top 50 percent * from Persons

?like語(yǔ)句

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SQL LIKE 操作符語(yǔ)法
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern

?查詢(xún)City以“廣”開(kāi)頭, %通配符

select * from Persons where City like '廣%'

like %1---以1結(jié)尾
like 1%---以1開(kāi)頭
like %1%---包含1內(nèi)容
not like %1%---包含1內(nèi)容

?in操作符

IN 操作符允許我們?cè)?WHERE 子句中規(guī)定多個(gè)值

SQL IN 語(yǔ)法
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)

?取出City為廣東和北京的人

select * from Persons where City in('廣東','北京')
?between操作符

操作符 BETWEEN ... AND 會(huì)選取介于兩個(gè)值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。

SQL BETWEEN 語(yǔ)法
SELECT column_name(s) FROM table_name WHERE column_name
BETWEEN value1 AND value2

重要事項(xiàng):不同的數(shù)據(jù)庫(kù)對(duì) BETWEEN...AND 操作符的處理方式是有差異的。某些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 "Carter" 之間的人,但不包括 "Adams" 和 "Carter" ;某些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 "Carter" 之間并包括 "Adams" 和 "Carter" 的人;而另一些數(shù)據(jù)庫(kù)會(huì)列出介于 "Adams" 和 "Carter" 之間的人,包括 "Adams" ,但不包括 "Carter" 。
所以,請(qǐng)檢查你的數(shù)據(jù)庫(kù)是如何處理 BETWEEN....AND 操作符的!

?SQL Alias

?表的 SQL Alias 語(yǔ)法
SELECT column_name(s)
FROM table_name
AS alias_name

?列的 SQL Alias 語(yǔ)法
SELECT column_name AS alias_name
FROM table_name
?Alias 實(shí)例: 使用表名稱(chēng)別名
假設(shè)我們有兩個(gè)表分別是:"Persons" 和 "Product_Orders"。我們分別為它們指定別名 "p" 和 "po"。
現(xiàn)在,我們希望列出 "John Adams" 的所有定單。
我們可以使用下面的 SELECT 語(yǔ)句:

SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Adams' AND p.FirstName='John'

不使用別名的 SELECT 語(yǔ)句:

SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName
FROM Persons, Product_Orders
WHERE Persons.LastName='Adams' AND Persons.FirstName='John'

從上面兩條 SELECT 語(yǔ)句您可以看到,別名使查詢(xún)程序更易閱讀和書(shū)寫(xiě)。

?SQL INNER JOIN 關(guān)鍵字

在表中存在至少一個(gè)匹配時(shí),INNER JOIN 關(guān)鍵字返回行。

**INNER JOIN 關(guān)鍵字語(yǔ)法
SELECT columnname(s) FROM tablename1 INNER JOIN tablename2
ON tablename1.columnname=tablename2.columnname
注釋?zhuān)篒NNER JOIN 與 JOIN 是相同的。

?SQL LEFT JOIN 關(guān)鍵字
LEFT JOIN 關(guān)鍵字會(huì)從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒(méi)有匹配的行。

LEFT JOIN 關(guān)鍵字語(yǔ)法
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注釋?zhuān)涸谀承?shù)據(jù)庫(kù)中, LEFT JOIN 稱(chēng)為 LEFT OUTER JOIN

?SQL RIGHT JOIN 關(guān)鍵字
RIGHT JOIN 關(guān)鍵字會(huì)右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中沒(méi)有匹配的行。

RIGHT JOIN 關(guān)鍵字語(yǔ)法
SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注釋?zhuān)涸谀承?shù)據(jù)庫(kù)中, RIGHT JOIN 稱(chēng)為 RIGHT OUTER JOIN。

?SQL FULL JOIN 關(guān)鍵字
只要其中某個(gè)表存在匹配,F(xiàn)ULL JOIN 關(guān)鍵字就會(huì)返回行。

FULL JOIN 關(guān)鍵字語(yǔ)法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
注釋?zhuān)涸谀承?shù)據(jù)庫(kù)中, FULL JOIN 稱(chēng)為 FULL OUTER JOIN。

?用戶(hù)授權(quán)
use master
create database test
use test 
create user test1 for login test with default_schema=dbo
exec sp_addrolemember 'db_owner','test1'
賦權(quán)(test1用戶(hù)擁有db_owner權(quán)限)
exec sp_addrolemember 'db_owner','test1'

?賬號(hào)管理
?禁用賬號(hào)
alter login test disable
?啟用賬號(hào)
alter login test enable;
?登錄賬號(hào)改名
alter login test with name=test_t;
修改密碼:
alter login test_t with password='123'
?數(shù)據(jù)庫(kù)用戶(hù)改名
alter user test1 with name='test_1';
?更改數(shù)據(jù)庫(kù)用戶(hù)
alter user test1 with default_schema=test;
?刪除數(shù)據(jù)庫(kù)用戶(hù)
drop user test1
?刪除登陸用戶(hù)
drop login test_t

?SQL 通配符

在搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),SQL 通配符可以替代一個(gè)或多個(gè)字符。
SQL 通配符必須與 LIKE 運(yùn)算符一起使用。
在 SQL 中,可使用以下通配符:
sql_server基礎(chǔ)學(xué)習(xí)

?"Persons" 表中選取居住的城市以"廣" 或 "北" 開(kāi)頭的人

    select * from Persons where City like '[廣北]%'

?"Persons" 表中選取居住的城市不以"廣" 或 "北" 開(kāi)頭的人

    select * from Persons where City like '[^廣北]%'
?SQL 約束

約束用于限制加入表的數(shù)據(jù)的類(lèi)型。
可以在創(chuàng)建表時(shí)規(guī)定約束(通過(guò) CREATE TABLE 語(yǔ)句),或者在表創(chuàng)建之后也可以(通過(guò) ALTER TABLE 語(yǔ)句)。
我們將主要探討以下幾種約束:
?NOT NULL
?UNIQUE
?PRIMARY KEY
?FOREIGN KEY
?CHECK
?DEFAULT

?SQL NOT NULL 約束
NOT NULL 約束強(qiáng)制列不接受 NULL 值。
NOT NULL 約束強(qiáng)制字段始終包含值。這意味著,如果不向字段添加值,就無(wú)法插入新記錄或者更新記錄。
下面的 SQL 語(yǔ)句強(qiáng)制 "Id_P" 列和 "LastName" 列不接受 NULL 值:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
?SQL UNIQUE 約束
UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動(dòng)定義的 UNIQUE 約束。
請(qǐng)注意,每個(gè)表可以有多個(gè) UNIQUE 約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。

?SQL UNION 語(yǔ)法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結(jié)果集。
請(qǐng)注意,UNION 內(nèi)部的 SELECT 語(yǔ)句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類(lèi)型。同時(shí),每條 SELECT 語(yǔ)句中的列的順序必須相同。

注釋?zhuān)耗J(rèn)地,UNION 操作符選取不同的值。如果允許重復(fù)的值,請(qǐng)使用 UNION ALL。

?SQL UNION ALL 語(yǔ)法

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 結(jié)果集中的列名總是等于 UNION 中第一個(gè) SELECT 語(yǔ)句中的列名。

--use test
--go
--create table employees_China (
--E_ID int primary key,
--E_NAME VARCHAR(15)  NOT NULL
--)
--INSERT INTO employees_China VALUES(01,'Zhuang,Hua')
--INSERT INTO employees_China VALUES(02,'Wang,Wei')
--INSERT INTO employees_China VALUES(03,'Yang,Ming')
--
--
--create table employees_USA (
--E_ID int primary key,
--E_NAME VARCHAR(15)  NOT NULL
--)
--INSERT INTO employees_USA VALUES(01,'Adams,John')
--INSERT INTO employees_USA VALUES(02,'Bush,George')
--INSERT INTO employees_USA VALUES(03,'Yang,Ming')

?列出所有在中國(guó)和美國(guó)的不同的雇員名:

SELECT E_NAME FROM employees_USA UNION SELECT E_NAME FROM employees_China

注釋?zhuān)哼@個(gè)命令無(wú)法列出在中國(guó)和美國(guó)的所有雇員。在上面的例子中,我們有兩個(gè)名字相同的雇員,他們當(dāng)中只有一個(gè)人被列出來(lái)了。UNION 命令只會(huì)選取不同的值。

?SQL PRIMARY KEY 約束
PRIMARY KEY 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
主鍵必須包含唯一的值。
主鍵列不能包含 NULL 值。
每個(gè)表都應(yīng)該有一個(gè)主鍵,并且每個(gè)表只能有一個(gè)主鍵。

?SQL CREATE VIEW 語(yǔ)法
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

注釋?zhuān)阂晥D總是顯示最近的數(shù)據(jù)。每當(dāng)用戶(hù)查詢(xún)視圖時(shí),數(shù)據(jù)庫(kù)引擎通過(guò)使用 SQL 語(yǔ)句來(lái)重建數(shù)據(jù)。

?SQL 更新視圖

您可以使用下面的語(yǔ)法來(lái)更新視圖:

SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

?SQL 撤銷(xiāo)視圖
您可以通過(guò) DROP VIEW 命令來(lái)刪除視圖。

SQL DROP VIEW Syntax
DROP VIEW view_name
?SQL Server Date 函數(shù)

下面的表格列出了 SQL Server 中最重要的內(nèi)建日期函數(shù):
函數(shù) 描述
GETDATE() 返回當(dāng)前日期和時(shí)間
DATEPART() 返回日期/時(shí)間的單獨(dú)部分
DATEADD() 在日期中添加或減去指定的時(shí)間間隔
DATEDIFF() 返回兩個(gè)日期之間的時(shí)間
CONVERT() 用不同的格式顯示日期/時(shí)間

?SQL AVG函數(shù)

SQL AVG() 語(yǔ)法
SELECT AVG(column_name) FROM table_name
查詢(xún)平均值

select avg(OrderPrice) as OrderNoavg from Orders;

我們希望找到 OrderPrice 值高于 OrderPrice 平均值的客戶(hù)。

select Company from Orders where OrderPrice >(select avg(OrderPrice) from Orders)
?SQL COUNT() 函數(shù)

COUNT() 函數(shù)返回匹配指定條件的行數(shù)。
?SQL COUNT(column_name) 語(yǔ)法
COUNT(column_name) 函數(shù)返回指定列的值的數(shù)目(NULL 不計(jì)入):
SELECT COUNT(column_name) FROM table_name
?SQL COUNT() 語(yǔ)法
COUNT(
) 函數(shù)返回表中的記錄數(shù):
SELECT COUNT(*) FROM table_name
?SQL COUNT(DISTINCT column_name) 語(yǔ)法
COUNT(DISTINCT column_name) 函數(shù)返回指定列的不同值的數(shù)目:
SELECT COUNT(DISTINCT column_name) FROM table_name
注釋?zhuān)篊OUNT(DISTINCT) 適用于 ORACLE 和 Microsoft SQL Server,但是無(wú)法用于 Microsoft Access。

SQL COUNT(column_name) 實(shí)例
我們擁有下列 "Orders" 表:
O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
現(xiàn)在,我們希望計(jì)算客戶(hù) "Carter" 的訂單數(shù)。
我們使用如下 SQL 語(yǔ)句:

SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
WHERE Customer='Carter'

以上 SQL 語(yǔ)句的結(jié)果是 2,因?yàn)榭蛻?hù) Carter 共有 2 個(gè)訂單:
CustomerNilsen
2

查看表中總行數(shù)

SELECT COUNT(*) AS NUMBER FROM ORDERS

去掉重復(fù)行

SELECT COUNT(DISTINCT Company) AS NUMBER FROM ORDERS
?FIRST() 函數(shù)

FIRST() 函數(shù)返回指定的字段中第一個(gè)記錄的值。
提示:可使用 ORDER BY 語(yǔ)句對(duì)記錄進(jìn)行排序。

SQL FIRST() 語(yǔ)法
SELECT FIRST(column_name) FROM table_name
sql2005不支持

?MAX() 函數(shù)
MAX 函數(shù)返回一列中的最大值。NULL 值不包括在計(jì)算中。

SQL MAX() 語(yǔ)法

SELECT MAX(column_name) FROM table_name
注釋?zhuān)篗IN 和 MAX 也可用于文本列,以獲得按字母順序排列的最高或最低值。

查找OrderPrice列中最大值

select max(OrderPrice) as maxprice from Orders

?MIN() 函數(shù)
MIN 函數(shù)返回一列中的最小值。NULL 值不包括在計(jì)算中。

SQL MIN() 語(yǔ)法
SELECT MIN(column_name) FROM table_name
注釋?zhuān)篗IN 和 MAX 也可用于文本列,以獲得按字母順序排列的最高或最低值。

select min(OrderPrice) as maxprice from Orders
?SUM() 函數(shù)

SUM 函數(shù)返回?cái)?shù)值列的總數(shù)(總額)。

SQL SUM() 語(yǔ)法
SELECT SUM(column_name) FROM table_name

查看orderprice列總和

select sum(OrderPrice) as maxprice from Orders
?GROUP BY 語(yǔ)句

GROUP BY 語(yǔ)句用于結(jié)合合計(jì)函數(shù),根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。

SQL GROUP BY 語(yǔ)法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

我們希望查找每個(gè)客戶(hù)的總金額(總訂單)。

select Company,sum(OrderPrice)as sumprice from Orders group by Company

?HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 關(guān)鍵字無(wú)法與合計(jì)函數(shù)一起使用。

SQL HAVING 語(yǔ)法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

查找客戶(hù) "IBM" 或 "Apple" 擁有超過(guò) 1500 的訂單總金額。

select Company,sum(OrderPrice)as sumprice from Orders where Company='IBM' OR Company='Apple' group by Company having sum(OrderPrice) >1500
?UPPER() 函數(shù)

UPPER 函數(shù)把字段的值轉(zhuǎn)換為大寫(xiě)。

SQL UPPER() 語(yǔ)法
SELECT UPPER(column_name) FROM table_name
全換成大寫(xiě)

select upper(Company) as upname from Orders

?LOWER()函數(shù)
語(yǔ)法同上

全換成小寫(xiě)

select lower(Company) as upname from Orders
?LEN() 函數(shù)

LEN 函數(shù)返回文本字段中值的長(zhǎng)度。
SQL LEN() 語(yǔ)法
SELECT LEN(column_name) FROM table_name

取“Company” 的值的長(zhǎng)度

select lEN(Company) as LENname from Orders
?ROUND() 函數(shù)

ROUND 函數(shù)用于把數(shù)值字段舍入為指定的小數(shù)位數(shù)。

SQL ROUND() 語(yǔ)法
SELECT ROUND(column_name,decimals) FROM table_name
參數(shù) 描述
column_name 必需。要舍入的字段。
decimals 必需。規(guī)定要返回的小數(shù)位數(shù)

把名稱(chēng)和價(jià)格舍入為最接近的整數(shù)

select ProductName,round(UnitPrice,0) as roundprice from products
?NOW() 函數(shù)

NOW 函數(shù)返回當(dāng)前的日期和時(shí)間。
提示:如果您在使用 Sql Server 數(shù)據(jù)庫(kù),請(qǐng)使用 getdate() 函數(shù)來(lái)獲得當(dāng)前的日期時(shí)間。

SQL NOW() 語(yǔ)法
SELECT NOW() FROM table_name

select ProductName,UnitPrice, getdate() as date  from products

sql_server基礎(chǔ)學(xué)習(xí)

修改日期格式

select ProductName,UnitPrice, CONVERT( VARCHAR(10),getdate(),23) as date  from products

參考資料:
http://www.w3school.com.cn/sql/sql_view.asp

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI