SqlServer基礎語法


歷史

有很多軟件公司開發了數據庫產品,其中微軟公司的數據庫產品命名為 SQL Server,也稱 MS SQL Server。
1989年 Ashton-Tate/Microsoft SQL Server 1.0 for OS/2 正式發布。
1996年,微軟發布了 SQL Server 6.5,作為對 SQL Server 6.0 的重要更新。
1998年12月,SQL Server 7.0 正式上市。
2000年8月,SQL Server 2000 發布。

DDL(Data Definition Language)(數據庫定義語言)

  • 創建
    • 創建數據庫
      CREATE DATABASE 數據庫名;
  • 查詢
    • 查看所有的數據庫
      SELECT Name FROM Master..SysDatabases ORDER BY Name
  • 刪除
    • 刪除數據庫
      DROP DATABASE 數據庫名;
  • 使用
    • 使用數據庫
      use 數據庫名稱;

操作表

  • 創建
    • 創建表
      CREATE TABLE 表名 (
      字段名 1 字段類型 1,
      字段名 2 字段類型 2
      );
    • 數據庫類型分類
分類 數據庫中的類型 JAVA中對應類型
整數 bigint long
整數 bit boolean
整數 int(integer) int(integer)
整數 tinyint short
小數 float double
小數 decimal java.math.BigDecimal
小數 money java.math.BigDecimal
小數 smallmoney java.math.BigDecimal
日期 smalldatetime 表示時間類型(只精確到分)java.sql.Timestamp
日期 date 表示日期類型java.sql.Date
日期 datetime 同時可以表示日期和時間類型(精確到毫秒)java.sql.Timestamp
字符串 char(m) String
字符串 varchar(max) String
字符串 (text) String
字符串 varbinary(max) String
  • 查詢:
    • 查詢某個數據庫中所有的表名稱
      SELECT Name FROM Master..SysDatabases ORDER BY Name
    • 查詢表結構
SELECT (case when a.colorder=1 then d.name else null end) 表名, ( d.name) 表名2,
a.colorder 字段序號,a.name 字段名,
(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 標識, 
(case when (SELECT count(*) FROM sysobjects 
WHERE (name in (SELECT name FROM sysindexes 
WHERE (id = a.id) AND (indid in 
(SELECT indid FROM sysindexkeys 
WHERE (id = a.id) AND (colid in 
(SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name))))))) 
AND (xtype = 'PK'))>0 then '√' else '' end) 主鍵,b.name 類型,a.length 占用字節數, 
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 長度, 
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小數位數,(case when a.isnullable=1 then '√'else '' end) 允許空, 
isnull(e.text,'') 默認值,isnull(g.[value], ' ') AS [說明]
FROM syscolumns a 
left join systypes b on a.xtype=b.xusertype 
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' 
left join syscomments e on a.cdefault=e.id 
left join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.class and f.minor_id=0
--where b.name is not null
WHERE d.name='YxphoneDeal' --如果只查詢指定表,加上此條件 如果去掉則是查詢全部的
order by a.id,a.colorder
  • 修改
    • 修改表名
      EXEC sp_rename '原有表名', '新表名';
    • 添加一列
      alter table 表名 add 列名 數據類型 not null--添加列
    • 修改列名稱 類型
      exec sp_rename '[表名].[列名]','[新列名]' -- 注意,單引號不可省略。
    • 修改列屬性
      alter table table_name alter column column_name column_type
    • 刪除列
      alter table table_name drop column column_name
    • 添加主鍵
      Alter table YXHIS..TBICXXDZ Add Constraint PK_TBICXXDZ Primary Key (CICID,CICKMW) --添加主鍵約束 PK_TBMZFYHZ 創建新的主鍵約束名稱
    • 刪除主鍵
      Alter table YXHIS..TBICXXDZ Drop CONSTRAINT PK_TBICXXDZ --刪除表主鍵約束(已定義主鍵名) PK_TBMZFYHZ 表創建中查看主鍵約束名稱

DML(Data Manipulation Language)(數據操縱語言)

  • 添加數據
    insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

除了數字類型,其他類型需要使用引號單引起來(SqlServer嚴格區分單雙引號)

  • 刪除數據
    delete from 表名 [where 條件]
  • 修改數據
    update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 條件];

DQL(Data Query Language)(數據查詢語言)

  • 基礎字段
    select
    字段列表
    from
    表名列表
    where
    條件列表
    group by
    分組字段
    having
    分組之后的條件
    order by
    排序

    • 分頁
      • 第一種方式:offset fetch next方式(SQL2012以上的版本才支持:推薦使用 )
        select * from ArtistModels order by ArtistId offset 4 rows fetch next 5 rows only
        --order by ArtistId offset 頁數 rows fetch next 條數 rows only --
      • 第二種方式:top not in方式 (適應於數據庫2012以下的版本)
        select top 3 * from ArtistModels
        where ArtistId not in (select top 15 ArtistId from ArtistModels)
        ------where Id not in (select top 條數*頁數 ArtistId from ArtistModels)
  • 查詢運算符

    • 基礎運算符

< 、> 、<= 、>= 、= 、<>、 BETWEEN...AND、 IN、 LIKE、 and 或 &&、or 或 ||、not 或 !

  • 復雜運算符
符號 含義
distinct 去掉重復數據
isnull(CBZ3,'') 如果CBZ3為null,結果返回''的值
CASE WHEN ISNULL(CTJYLSH,'')<> '' THEN CTJYLSH ELSE CJYLSH END 如果CTJYLSH不為空,則為CTJYLSH,否則為CJYLSH

isnull(CBZ3,''<>'' cbz3字段不為空

多表查詢

略(和MySql一樣)

SqlServer數據庫約束

約束種類
約束名 約束關鍵字
主鍵 primary key
唯一 unique
非空 not null
外鍵 foreign key
默認值約束 Default
自增約束 AUTO_INCREMENT
檢查 CHECK
  • 檢查約束
    Check約束通過邏輯表達式來判斷數據的有效性,用來限制輸入一列或多列的值的范圍,在列中更新數據時,所要輸入的內容必須滿足Check約束的條件,否則將無法正確輸入。

SqlServer事物

和MySQL差不太多,都是默認自動提交。

不同點:默認隔離級別:MySql是可重復讀,SqlServer是讀已提交。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM