sql server 增刪改(查太多了)

来源:https://www.cnblogs.com/yijieyufu/archive/2019/12/04/11985873.html
-Advertisement-
Play Games

表: 學生(*學號,姓名,性別,年齡,專業) create table student( sno char(13) primary key, sname varchar(20) not null, ssex char(2), sage smallint, sdept varchar(30) ); 課 ...


表:

學生(*學號,姓名,性別,年齡,專業)

create table student(

   sno char(13) primary key,

   sname varchar(20) not null,

   ssex char(2),

   sage smallint,

   sdept varchar(30)

);

 

 

課程(*課程號,課程名,學分)

create table course(

   cno char(4),

   cname varchar(40) not null,

   ccredit smallint not null,

   我們可以將欄位的定義和主外鍵的定義分開

   primary key (cno)

);

 

 

選課(學號,課程號,分數)

create table sc(

   sno char(13),

   cno char(4),

   grade smallint,

 

   primary key (sno,cno),--定義聯合主鍵

   foreign key (sno) references student(sno),

   constraint FK_sc_cno foreign key (cno) references course(cno)

);

 

創建一個用戶表

create table tb_user(

   userid int identity(1,1),【設置整型欄位自動增長】

   username varchar(20) not null,

   userpass varchar(16) not null,

   groupid int

);

創建用戶組表

create table tb_group(

   groupid int primary key identity(1001,1),

   groupname varchar(30) not null

);

insert(增加)

使用 insert 語句向表中插入數據。

insert into table [(column [, column...])]

values (value [, value...]);

插入的數據應與欄位的數據類型相同。

 

舉例:

方法一:不指定列,插入所有欄位

insert into student values('2010040','kangji','',22,'電腦科學學院');--SQLServer總是嘗試轉化為相同的類型

insert into student values(20100402,'張三','',22,'電腦科學學院');

方法二:指定列,插入部分欄位

insert into student (sno,sname) values('20100403','李四');

 

註意:

1)      數據的大小應在列的規定範圍內,例如:不能將一個長度為80的字元串加入到長度為40的列中。

2)      在values中列出的數據位置必須與被加入的列的排列位置相對應。

3)      字元和日期型數據應包含在單引號中。

4)      插入空值,不指定或insert into table value(null)

註意:在SQLServer 中,''=null; ' '=null; '   '=null;

 

批量插入數據

insert into u(username,userpass) select sname,sno from student where ssex=''; 

update(修改)

使用 update語句修改表中數據。

 

update 表名 set 列名=表達式[,列名=表達式 ...] [where where_definition]   

 

update語法可以用新值更新原有表行中的各列。

set子句指示要修改哪些列和要給予哪些值。

update student set sname='康吉' where sno='20100401';

 

update student set sname='康吉',sage=23 where sno='20100401';

 

where子句指定應更新哪些行。如沒有where子句,則更新所有的行。

 

修改還有 null 值的數據 is null

select * from student where ssex is null;

 

delete(刪除)

使用 delete語句刪除表中數據。

delete from 表名 [where where_definition]

 

如果不使用where子句,將刪除表中所有數據。

delete語句不能刪除某一列的值(可使用update對值置null)

使用delete語句僅刪除記錄,不刪除表本身。如要刪除表,使用【drop table表名】語句。

同insert和update一樣,從一個表中刪除記錄將引起其它表的參照完整性問題,在修改資料庫數據時,頭腦中應該始終不要忘記這個潛在的問題。

 

刪除表中全部數據

delete table 表名; 

 

刪除表中指定數據

delete from student where xh='A001';

 

級聯刪除和更新

create table class(

   id int primary key,

   name varchar(10)

);

 

create table student(

   id int primary key,

   class_id int references class(id) on delete/update cascade

);

 

alter table student add constraint FK_classid foreign key (class_id) references class(id) on update cascade on delete cascade

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一般情況下,是新安裝的虛擬機沒有安裝ssh造成的 進入虛擬機控制台,輸入 sudo apt-get openssh-server 回車 等安裝完成即可登陸。 ...
  • 版權聲明:本文為博主原創文章,轉載請註明出處。 https://www.cnblogs.com/YaoYing/ 下載燒寫軟體 "燒寫軟體" 將下載的壓縮文件解壓縮並安裝 下載樹莓派鏡像 "樹莓派系統鏡像文件" 將下載的壓縮文件解壓生成.img文件 製作啟動卡 利用讀卡器將需寫入的SD卡連接電腦,打 ...
  • 1. 按系列羅列Linux的發行版,並描述不同發行版之間的聯繫與區別 2. 安裝Centos7.6操作系統,創建一個自己名字的用戶名,並可以正常登錄,將主要步驟截圖。 3. 配置環境變數,實現執行history的時候可以看到執行命令的時間。 4. 總結Linux哲學思想。 5. 總結Linux常用命 ...
  • 用了很久的Window,心血來潮想換個系統,於是就開始踩坑Linux之路。 系統為deepin 首先基本的 設置root密碼 $:sudo passwd root [sudo] password for you: > 輸入密碼(當前用戶密碼) Enter new UNIX password: > 設 ...
  • 觸發器trigger 觸發器我們也可以認為是存儲過程,是一種特殊的存儲過程。 存儲過程:有輸入參數和輸出參數,定義之後需要調用 觸發器:沒有輸入參數和輸出參數,定義之後無需調用,在適當的時候會自動執行。 適當的時候:觸發器與表相關,當我們對這個相關的表中的數據進行DDL(數據的添加、修改、刪除)操作 ...
  • --顯示前條數據 select top(4) * from students; --pageSize:每頁顯示的條數 --pageNow:當前頁 select top(pageSize) * from students where sno not in (select top(pageSize*(p ...
  • --部門表 create table dept( deptno int primary key,--部門編號 dname nvarchar(30),--部門名 loc nvarchar(30)--地址 ); --雇員表 create table emp( empno int primary key, ...
  • 基本查詢: 實例表 1 示例表 2 --部門表 3 4 create table dept( 5 6 deptno int primary key,--部門編號 7 8 dname nvarchar(30),--部門名 9 10 loc nvarchar(30)--地址 11 12 ); 13 14 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...