SQL基本操作

爬呀爬Xjm發表於2018-05-20

系統資料庫

    1、master:用於記錄所有SQL server系統級別的資訊,比如說登入的資訊,系統設定資訊。如果他沒了。你的SQL server就掛了。

    2、model:模型的意思,就像模板一樣。建立資料庫都是繼承model。如果你在該資料庫下建立一張表,以後每建立新資料庫,就已經有了model的表。

    3、msdb:和master一樣記錄資訊,不同的是它記錄任務調動,事件處理,資料備份及恢復,報警和異常的資訊。

    4、tempdb:臨時資料庫,它為所有臨時表,臨時儲存過程提供儲存空間

注意:以上四個系統資料庫,別去刪,刪了有大大小小的問題。

資料型別:

    1數值型:

          整型:int  smallint  bigint  tinyint

          浮點型:float  real

          貨幣型:money

    2布林型(bit):

         True

         False

    3二進位制型

         binary

         varbinary

         image

    4文字資料型別

        char    固定長度

        vachar  可變長度

        nvarchar

        nchar  

        text    長文字資訊

        ntext   可變長度的長文字

        datetime 日期和時間

新建資料庫:

    1資料庫檔案  :主資料檔案和副資料檔案

    2日誌檔案:一個或多個

    3create database 名稱

重新命名資料庫:exec sp_renamedb new,old

刪除資料庫:drop database 名稱1,名稱2

新建資料庫:

    create database test(資料庫檔名)

    on

    (

    name=test_data(主資料檔案),

    filename = `D:ProgramFilesSQLdata est_data.mdf`,

    size=6(初始化大小),

    maxsize=12,

    filegrowth(增長率)=10%

    )

    log on

    (

    name=test_log(日誌檔案),

    filename=`D:ProgramFilesSQLdata est_log.ldf`,

    size=1,

    maxsize=8,

    filegrowth=10%

    )

建立表:

  create table 教師表

  (

  教師編號 int identity(1,1) primary key,

  教師姓名 varchar(20) not null,

  教師年齡 int,

  教師工資 money,

  獎金 money,

  總收入 money,

  合作院校 varchar

  )

  說明:

    identity:表示自增長,通常為ID賦值

    primary key:主鍵

    not null:不為空

  注意:每個欄位後面的逗號別忘了

查詢表:

    select * from 教師表

    select 獎金,總收入 from 教師表

刪除表:

    use test–切換到該表所在的資料庫下,如果已經在,就不用切換

    drop table 教室表–刪除整個表

刪除表,但不刪除表結構,只清空資料;

    Truncate table 教師表

重新命名錶:

    exec sp_rename 教師表,教師表1

新增欄位:

    alter table 教師表

    add Email varchar(60) default “

修改欄位:

    alter table 教師表

    alter column 教師薪資 int

刪除欄位:

    alter table 教師表

    drop column 家庭住址

新增資料:

    insert into 教師表(教師年齡,教師職稱,教師薪資,課程)

    values(19,`微微`,100000,`java`)

查詢資料:

    select * from 教師表 where 教師薪資<10000

 

    select * from 教師表 where 教師薪資 in(5555,6666,9999)

    select * from 教師表 where 姓名  not in(select 班主任 from 課程表)

    select 姓名,教師薪資+獎金 as 總收入 from 教師表

 

    select * from 課程表 where 合作學校 like `%馬%`

    select * from 課程表 where 合作學校 like `黑%`

 

     select top 4 * from 課程表

    select top 20 percent * from 教師表

 

    select * from 課程表1 intersec select * from 課程表2   集合交

 

    select * from 教師表,課程表1 where 教師表.姓名=課程表1.班主任

    select * from 教師表,課程表1 where 姓名=班主任     去字尾

    排序:

        select * from 教師表 order by 年齡 –預設升序,倒序desc

        select * from 教師表 order by 年齡,教師薪資

    去重:

        select distinct 姓名 from 教師表

    統計求和:

        select COUNT(*) as 行數 from 教師表

        select COUNT(姓名) from 教師表

    平均:

        select avg(教師薪資) from 教師表

    最大和最小:

        select max(教師薪資) from 教師表

更新資料:

    update 教師表 set 教師年齡=28,教師薪資=7777 where 教師編號=4

    update 教師表 set 姓名=`蓮花中學之`+姓名

刪除資料:

    delete from 教師表 where 教師編號=7

 

約束:

1、unique:唯一約束,一個表可以有多個約束,但primary 約束只有一個

 

2、Primary key:約束唯一標識資料庫中的每條記錄,主鍵必須包含唯一值,不能包含null值,有且只有一個主鍵。

 

3、Foreign key:兩個表的約束

 

4、check 約束:如果對單個列定義check約束,那麼該列值執行特定的值。

                  如果對一個表定義check約束,那麼此約束會在特定的列中對值          進行限制。

5、default:預設值

alter table userIofo

add constraint PK_userId primary key(userId),

    constraint CK_userPwd check(len(userPwd)>6),

    constraint Ck_Gender check(Gender=0 or Gender=1),

    constraint DF_Gender default(0) for gender,

    constraint CK_Email check(Email like `%@%`)

–[1]外來鍵約束時注意型別,長度必須與引用的主鍵列的型別,長度一致

–[2]外來鍵約束時注意引用表中必須要有主鍵列

–[3]exec sp_helpconstraint 表名稱