SQL語句入門必學

sql快速入門傳送門

1、要求目標表table2已經存在數據庫,單純的插入數據

insert into table2(field1,field2)select value1,vlues2 from table1  

2、要求目標表table2不存在數據庫,通過新創建table2進行指定數據字段複製

select value1,value2 into table2 from table1     

3、len()函數返回文本字段中值的長度

具體事例

SELECT LEN(column_name) FROM table_name   可以直接進行判斷操作

4、round()函數用於指定字段數值的舍爲指定的小數位數

select round(column_name,decimal) from table   指定需要進行舍入的字段和保存位數 必填

5、now()函數用來返回當前數據庫操作的時間 getDate()函數用來獲取sql server獲取當前操作數據庫時間

6、format()函數用於轉換當前日期數據格式

format(column_name,format)  column_name 需要轉換的字段   format 需要轉成的數據格式,如 "YYYY-MM-DD"

7、create (unique)index 用於在數據表中創建唯一/不唯一的表索引

事例: create index as index_name on table(Column_name DESC) 索引多個列可以直接使用功能逗號進行隔開即可

8、數據庫視圖

創建視圖:create  or  replace view  view_name as select *  from student

刪除視圖:drop  view  view_name

查詢視圖:select * from view_name 

視圖是虛擬的數據表結構,不存儲數據,是虛擬的表,其中單視圖一般用來查詢和修改,多視圖一般只用來查詢,不做修改操作

作用:

安全高效定製

①簡化了操作,把經常使用的數據定義爲視圖。

②安全性,用戶只能查詢和修改能看到的數據。

③邏輯上的獨立性,屏蔽了真實表的結構帶來的影響。

9、group by用於結合合計函數,根據一個或者幾個列對數據函數進行分組 ,比如sum常常需要添加group by

事例:SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate    對統一名稱數據進行彙總,不會顯示多個

10、delete 對某些表數據進行刪除

DELETE FROM 表名稱 WHERE 列名稱 = 值
delete直接刪除表,只會想表數據進行刪除,不會刪除表結構、屬性和索引

11、drop 對某些表結構和數據進行刪除索引、表和數據庫

drop FROM 表名稱 
DROP INDEX  刪除表的字段索引   

DROP INDEX table_name.index_name

12、having使用主要原因是where 無法與合併函數一起使用

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500    having在group by的後面進行添加作爲過濾條件

13、insert into 用於向已經數據庫表中插入數據使用

insert into  table-name(field,field2)values(value1,value2)

14、like操作符用於在 WHERE 子句中搜索列中的指定模式

select * from  table-name where column-name like pattern

15、distinct 表中,可能會包含重複值,distinct 操作符用來篩選中返回不重複的值

select distinct column_name from table-name order by  column-name

16、truncate TRUNCATE TABLE table_name

truncate用於刪除表的數據,但仍保留表的數據結構,truncate 不能刪除行數據,要刪就要把表清空

17、update用於更新表的數據

update   table  set column-name = column-name1 where value = value1

18、Top返回指定數據的條數

sql sever的語法

SELECT TOP number|percent column_name(s)
FROM table_name    number用於指定的數據條數或者數據總數的百分數   等同於limit進行限制返回的數據條數

orcal 語法

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number   直接使用功能rownum進行指定返回的數據條數

19、like操作符用於在WHERE 子句中搜索列中的指定模式

“%” 可用於定義通配符(模式中缺少的字母)

select * form  where column-name like “N%”   前面模糊匹配  %N後面模糊匹配   %N%中間模糊

20、SQL通配符

% 替代一個或者多個字符

_僅替代一個字符

SELECT * FROM Persons
WHERE FirstName LIKE '_eorge'  選取第一個字符之後是eorge的數據
[charlist]字符列中的任何單一字符

SELECT * FROM Persons
WHERE City LIKE '[ALN]%'  挑選出居住城市以A  L N開頭的
[^charlist]或者[!charlist]表示不在字符列表的任何單一字符
SELECT * FROM Persons  where city like '[!ALN]'

21、in操作符允許我們在where之後添加多個規定值

select * from table where in('value1','value2')

22、between…and…查詢出介於兩者之間的值,但是對於不同的數據庫查詢的結果可能有差異

有的可能全包含,有的全不包含,有的左包含,有的右包含

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'   查詢字母順序顯示介於該兩者的信息
如果想不在該兩者,一般直接前面加上not即可

23、Alias直接指定別名

SELECT column_name(s) as akias-name
FROM table_name AS alias_name  通過as或者不使用as直接爲表或者列指定別名

24、join和key

通過表的外鍵連接表數據進行查詢

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

-----內連接查詢

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName   兩表直接使用內部連接  然後在進行排序輸出

25、inner join 內部連接,等同於join 常搭配join on

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName

26、left join 關鍵字會從左表 (table_name1) 那裏返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName    返回左表所有的行,右表沒有匹配的直接爲空

27、right join關鍵字會根據右表 (table_name2) 那裏返回所有的行,即使在左表 (table_name1) 中沒有匹配的行

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName   右表所有行都會進行顯示,左表沒有的數據直接不顯示

28、full join 只要其中某個表存在匹配,FULL JOIN 關鍵字就會返回行。別稱是 full outer join

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName    只要是兩表出現的都會返回
FULL JOIN 關鍵字會從左表 (Persons) 和右表 (Orders) 那裏返回所有的行

29、union用於連接表查詢的結果集

規範:UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同

UNION 命令只會選取不同的值,而union all會列出所有的相同值

30、select into 語句用於從一個表中選取數據,然後把數據插入另一個表中

IN 子句可用於向另一個數據庫中拷貝表

SELECT *
INTO Persons IN 'Backup.mdb'
FROM Persons    直接用於數據庫表的拷貝

31、create datebase用於直接創建數據庫

create table xxx 用於直接創建數據庫表,需要指定字段名稱和字段類型

CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

32、constraints增加表的約束條件 可以在創建表的時候進行添加,也可以在之後進行alter table進行修改

NOT NULL   直接在需要進行約束的字段後面添加即可
Plain Text
UNIQUE   可以直接在需要約束字段後面添加,或者最後添加unique(字段)  後面直接使用進行多字段約束  CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
musql:DROP INDEX uc_PersonID  用於撤銷響應的約束條件    其他:DROP CONSTRAINT uc_PersonID
PRIMARY KEY   直接創建添加主鍵,主鍵需要滿足唯一,不爲空
FOREIGN KEY  

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) 指定外鍵然後添加連接
)

CHECK 可以直接在需要進行檢查的字段後面添加,多個字段需要指定別名

CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
DEFAULT  指定默認值

32、create index 用於爲表創建索引,作用是不讀取整個表的情況下,索引使數據庫應用程序可以更快地查找數據

CREATE INDEX index_name
ON table_name (column_name)   直接指定需要索引的列
unique指定索引的唯一性   唯一的索引意味着兩個行不能擁有相同的索引值
刪除索引    DROP INDEX index_name ON table_name    或者  table.index

33、alter用於改變表的字段或者其他的屬性

34、Auto-increment 會在新記錄插入表中時生成一個唯一的數字

P_Id int NOT NULL AUTO_INCREMENT,   自動生成主鍵
MS SQL 使用 IDENTITY 關鍵字來執行 auto-increment 任務。
默認地,IDENTITY 的開始值是 1,每條新記錄遞增 1
如:P_Id int PRIMARY KEY IDENTITY,

35、視圖view 視圖是基於 SQL 語句的結果集的可視化的表

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No

36、date()函數 https://www.w3school.com.cn/sql/sql_dates.asp

37、NULL特殊的數據格式 必須使用 IS NULL 和 IS NOT NULL 操作符

38、數據類型 https://www.w3school.com.cn/sql/sql_datatypes.asp

39、UCASE 函數把字段的值轉換爲大寫 lcase函數把字段的值轉換成小寫

SELECT UCASE(LastName) as LastName,FirstName FROM Persons

40、MID 函數用於從文本字段中提取字符

SELECT MID(City,1,3) as SmallCity FROM Persons   提取每個字段的前三個字符
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章