SQL server基礎知識 一、基礎知識 (1)、存儲結構:資料庫->表->數據 (2)、管理資料庫 增加:create database 資料庫名稱 刪除:drop database 資料庫名稱 查詢:select name from master..sysdatabases 修改:alter ...
SQL server基礎知識
一、基礎知識
(1)、存儲結構:資料庫->表->數據
(2)、管理資料庫
增加:create database 資料庫名稱
刪除:drop database 資料庫名稱
查詢:select name from master..sysdatabases
修改:alter database 資料庫名稱(在 sql server 中修改與資料庫關聯的文件和文件組。在資料庫中添加或刪除文件和文件組、更改資料庫或其文件和文件組的屬性)
(3)、管理表
選擇資料庫:use 資料庫
增加:create table 表名(欄位1 欄位類型,欄位2 欄位類型,......);
刪除:drop table 表名
修改:
添加欄位:alter table 表名 add 欄位名 欄位類型
刪除欄位:alter table 表名 drop column 欄位名
修改欄位類型:alter table 表名 alter column 欄位名 欄位類型
修改欄位名稱:exec sp_rename '表.原欄位名稱','新欄位名稱','column'
修改表的名稱:exec sp_rename '原表名稱','新表名稱'
查詢:select name from sysobjects where xtype = 'u'
(4)、管理數據
增加數據:insert into 表(欄位1,欄位2,...) values (值1,值2,...)
刪除數據:delete from 表名 where 條件
修改數據:update 表名 set 欄位1=值1,欄位2=值2,... where 條件
查詢數據:
所有欄位:select * from 表
指定欄位:select 欄位1,欄位2,... from 表
指定別名:select 欄位1 as 別名1,欄位2 as 別名1,... from 表
去重:select distinct 欄位 from 表
條件查詢:
邏輯條件:and(與)or(或)
select * from 表 where ... and/or ...
比較條件:>,<,>=,<=,=,!=,<>(不等於),between and
判空條件:
判斷null:is null/is not null
判斷空字元串:='',!='',<>''
模糊條件:like
'%':替換任意個字元
'_':替換一個字元
select * from 表 where 欄位 like '%查詢字元%'
分頁查詢:
@p_pagesize int,//頁面數量
@p_currentPage int//當前頁
declare @string varchar(3000)
if(@p_currentPage=1)//第一頁
begin
set @string = 'Select top '+ cast(@p_pagesize as char(20)) + '* from 表名 where 條件
end
else//不是第一頁
begin
set @string = 'Select top '+cast(@p_pagesize as varchar(20))+'* from 表名where 條件and 表.欄位 not in (select top '+ cast(((@p_currentPage-1)*@p_pagesize) as varchar(20))+'欄位 from 表名where 條件
end
exec(@string);
排序查詢:order by asc/desc
asc:正序;順序
desc:反序;倒序
分組查詢:group by 欄位
分組後篩選:having
二、數據約束
數據約束:對用戶表操作進行約束
(1)預設值:
作用:當用戶對使用預設值的欄位不插入值的時候,就會使用預設值
註意:
(a)對於預設值欄位插入null是可以的
(b)對於預設值欄位可以插入非null
創建:
(a)建表:
create table temp_table
(id int,
name varchar(10),
address varchar(50) default '吉林長春')
(b)語句:
alert table 表名 add constraint 預設名字(任意) default('預設值') for 欄位
(2)非空:
作用:限制欄位,必須賦值
註意:
(a)非空欄位必須賦值
(b)非空欄位不能賦null
創建:
(a)建表:
create table temp_table
(id int not null,
name varchar(10),
address varchar(50) default '吉林長春')
(b)語句:
alert table 表 alert column 欄位名稱 欄位類型 not null
(3)唯一:
唯一鍵分為主鍵(主鍵索引)和唯一索引(unique索引)
作用:對該欄位的值不能重覆
註意:
(a)唯一欄位可以插入null
(b)唯一欄位只能插入一個null
創建:
(a)建表:
create table student
(id int unique,
name varchar(10))
(b)語句
create unique clustered index 約束名 on 表名(欄位名)
(4)主鍵:
作用:非空,唯一
註意:
(a)通常情況下,每張表都會設置一個主鍵欄位。用於標記表中的每條記錄的唯一性。
(b)建議不要選擇表的包含業務含義的欄位作為主鍵,建議給每張表獨立設計一個非業務含義的id欄位。
創建:
(a)建表:
create table student
(id int primary key,--主鍵
name varchar(10))
(b)語句:
第一:先設置欄位為null: alter table 表名 alter column 欄位名 欄位類型 not null
第二:設置主鍵:alter table 表名 alter constrant 主鍵名(任意) promary key(主鍵欄位)
(5)自增長
作用:自動遞增
註意:一張表中不能有兩個或者多個標識列
創建:
(a)建表:
create table student
(id int identity(1,1) primary key,--主鍵,自增長,從1開始,每次增加1
name varchar(10))
(b)語句:
alter table 表名 add 列名 int identity(1,1) NOT NULL--增加一列自增
(6)主鍵:
作用:約束兩張表的數據
出現兩種表的情況:解決數據冗餘高問題, 獨立出一張表。
註意:
(a)被約束的表稱為副表,約束別人的表稱為主表,外鍵設置在副表上的!!!
(b)主表的參考欄位通用為主鍵!
(c)添加數據: 先添加主表,再添加副表
(d)修改數據: 先修改副表,再修改主表
(e)刪除數據: 先刪除副表,再刪除主表
創建:
(a)建表:
-- 部門表(主表)
CREATE TABLE dept(
id INT PRIMARY KEY,
deptName VARCHAR(20)
)
-- 修改員工表
CREATE TABLE employee(
id INT PRIMARY KEY,
empName VARCHAR(20),
deptId INT,-- 把部門名稱改為部門ID,
-- 聲明一個外鍵約束
CONSTRAINT 外鍵名稱 FOREIGN KEY(外鍵) REFERENCES 主鍵表(主鍵id)
)
(b)語句:
alter table 表 add foreign key(表外鍵) references主鍵表(主鍵id)
三、多錶鏈接查詢
(1)外鏈接
外連接分為:左鏈接、右鏈接、完全外鏈接
(a)左鏈接:left join 或 left outer join
用法:最少兩張表,A表和B表
Select A.欄位 from A left join B on A.id = B.id
左外連接包含left join左表所有行,如果左表中某行在右表沒有匹配,則結果中對應行右表的部分全部為空(NULL).
(b)右鏈接 right join 或right outer join
用法:最少兩張表,A表和B表
Select A.欄位 from A right join B on A.id = B.id
右外連接包含right join右表所有行,如果左表中某行在右表沒有匹配,則結果中對應左表的部分全部為空(NULL)。
(c)完全外連接 full join 或 full outer join
用法:最少兩張表,A表和B表
Select A.欄位 from A full join B on A.id = B.id
完全外連接包含full join左右兩表中所有的行
如果右表中某行在左表中沒有匹配,則結果中對應行右表的部分全部為空(NULL)
如果左表中某行在右表中沒有匹配,則結果中對應行左表的部分全部為空(NULL)。
(2)內連接
內連接 join 或 inner join
用法:最少兩張表,A表和B表
Select A.欄位 from A full join B on A.id = B.id
inner join 是比較運算符,只返回符合條件的行。
此時相當於:select * from A,B where A.ID=B.ID