Sqlserver,Mysql基礎SQL語句

来源:https://www.cnblogs.com/rsg-zxh/archive/2023/01/05/17027506.html
-Advertisement-
Play Games

Sqlserver,Mysql基礎SQL語句 SqlServer 建表 CREATE TABLE [IF NOT EXISTS] 表名 ( 欄位名 列類型 [屬性] , 欄位名 列類型 [屬性] , ....... 欄位名 列類型 [屬性] ) ; CREATE TABLE visits ( vis ...


Sqlserver,Mysql基礎SQL語句

SqlServer

建表

CREATE TABLE  [IF NOT EXISTS] 表名 (
	欄位名 列類型 [屬性] ,
	欄位名 列類型 [屬性] ,
	.......
	欄位名 列類型 [屬性] 
) ;
CREATE TABLE visits (
    visit_id INT PRIMARY KEY IDENTITY (1, 1),--主鍵列,從1開始自增
    first_name VARCHAR (50) NOT NULL,--不允許為空,最多可存儲50個字元
    last_name VARCHAR (50) NOT NULL,
    visited_at DATETIME,--允許為空
    phone VARCHAR(20),
    store_id INT NOT NULL,
);

修改欄位預設值

##已存在預設值
exec sp_helpconstraint @objname=表名 --(查看指定表相關約束詳情)
alter table 表名 drop constraint 約束名 --(刪除預設值)
alter table 表名 add default 預設值 for --欄位名

##無預設值
alter table 表名 add default 預設值 for 欄位名

修改表名

sp_rename tablename,newtablename

修改欄位名

sp_rename 'tablename.colname',newcolname,'column'

添加欄位

alter table table_name add new_column data_type [interality_codition]

例子

##添加nvarchar類型的列,預設值為null
alter table student add studentName nvarchar(250) default null
 
##添加int類型的列,預設值為0,主鍵
alter table student add studentId int primary key default 0 

##判斷student中是否存在name欄位且刪除欄位
if exists(select * from syscolumns where id=object_id('student') and name='name') 
begin
alter table student DROP COLUMN name
end

更改欄位

##格式:alter table table_name alter column column_name data_type
ALTER TABLE student ALTER COLUMN name VARCHAR(200)

刪除欄位

##欄位存在相關約束
exec sp_helpconstraint @objname=表名 --(查看指定表相關約束詳情)
alter table 表名 drop constraint 約束名 --(刪除相關約束)
alter table 表名 drop cloumn 欄位名  --(刪除欄位)

##無相關約束
alter table 表名 drop cloumn 欄位名

添加表註釋

COMMENT ON table 表 IS '表註釋';

添加欄位註釋

COMMENT on column 表.欄位 is '欄位註釋';

數據排序

方法一 ROW_NUMBER() OVER()

--pageIndex 表示指定頁
--pageSize  表示每頁顯示的條數
SELECT * FROM
    (SELECT ROW_NUMBER() OVER(ORDER BY 排序欄位) AS RowId,* FROM 表名 ) AS r 
WHERE  RowId  BETWEEN ((pageIndex-1)*pageSize + 1) AND (pageIndex * PageSize)

方式二 offset fetch next

註意:這是比較推薦的寫法,EF生成的sql語句也是這樣的,但是必須記住rows和末尾的only 不要寫漏掉了,並且這種方式必須要接著Order by XX 使用,不然會報錯。如果沒有排序的欄位可以使用(select 1);

--pageIndex 表示指定頁
--pageSize  表示每頁顯示的條數
--排序欄位 可以用(select 1)代替
SELECT * FROM 表名 ORDER BY 排序欄位 offset ((pageIndex - 1) * pageSize) ROWS FETCH NEXT pageSize ROWS ONLY

方式三 top not in

--pageIndex 表示指定頁
--pageSize  表示每頁顯示的條數
SELECT TOP pageSize menuId, *
FROM sys_menu 
WHERE menuId NOT IN (SELECT TOP ((pageSize-1)*pageIndex) menuId FROM sys_menu)

方式四 通過以欄位排序的方式top條數進行分頁

--pageIndex 表示指定頁
--pageSize  表示每頁顯示的條數
SELECT * FROM(
    SELECT TOP pageSize * FROM(
        SELECT TOP ((pageIndex - 1) * pageSize +(pageSize*2)) * FROM sys_menu ORDER BY menuId ASC) 
            AS TEMP1 ORDER BY menuId DESC)
        AS TEMP2 ORDER BY menuId ASC

mysql

建表

CREATE TABLE [IF NOT EXISTS] 表名 (
欄位名 列類型 [屬性] [索引] [註釋],
欄位名 列類型 [屬性] [索引] [註釋],
.......
欄位名 列類型 [屬性] [索引] [註釋]
) [表類型] [字元集設置] [註釋]

註意:[IF NOT EXISTS]建議添加,添加了後如果表名存在會提示警告信息,而不是報錯。

CREATE TABLE IF NOT EXIST 'student'(
 	id INT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '學號',   --comment註釋,default預設
 	name VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
 	pwd VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
 	sex VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性別',
 	birthday DATETIME DEFAULT NULL COMMENT '出生日期',
 	address VARCHAR (100) DEFAULT NULL COMMENT '家庭地址',
 	email VARCHAR(50) DEFAULT NULL COMMENT '電子郵箱'
) COMMENT '學生表'

修改表名

ALTER TABLE teacher RENAME AS allteacher

刪除表

DROP TABLE if EXISTS teacher1 --刪除表,如果表存在。

添加表欄位

ALTER TABLE allteacher ADD age INT(11) 

修改欄位類型

##語法:ALTER TABLE 表名 MODIFY [COLUMN] 欄位名 新數據類型 新類型長度  新預設值  新註釋;-- COLUMN關鍵字可以省略不寫

alter table table1 modify column column1 decimal(10,1) DEFAULT NULL COMMENT '註釋';

alter table table1 modify column1 decimal(10,2) DEFAULT NULL COMMENT '註釋'; 

修改欄位名

##語法: ALTER TABLE 表名 CHANGE [column] 舊欄位名 新欄位名 新數據類型;	 

-- 正常,此時欄位名稱沒有改變,能修改欄位類型、類型長度、預設值、註釋
Alter table table1 change column1 column1 varchar(100) DEFAULT 1.2 COMMENT '註釋'; 

-- 正常,能修改欄位名、欄位類型、類型長度、預設值、註釋
alter  table table1 change column1 column2 decimal(10,1) DEFAULT NULL COMMENT '註釋' 

刪除表欄位

ALTER TABLE teacher1 DROP age1

修改表註釋

ALTER TABLE 表名 COMMENT '新註釋'

對數據的常用命令

##查詢數據
select distinct 列…. From 表名;--去重
select concat(列1,列2) from 表名;--拼接結果
select * from 表名 where 條件 order by 列 [asc/desc] --結果排序 升序:asc  降序:desc

##插入數據
insert into 表名(欄位1,欄位2) values(值1,值2),(值1,值2);     --插入多條數據【MYSQL】
insert into 表名(欄位) select 欄位 from 表2;         --查詢結果插入
insert into 表名 select 欄位 from 表2;               --查詢結果,全表插入

數據排序

limit

--m 去掉的條數
--n 返回條數
select * from table order by id limit m, n;

Sqlserver和MySql的區別

Sqlserver Mysql
1433 3306
自動增長 identity(1,1) auto increment
字元串拼接 + concat()
空值數量函數 isnull() ifnull()
自增長列的插入 可以不為自動增長列插入值 需要為自動增長列插入值
日期格式化 convert(varchar(8),getdate(),112) data_format(xcs_received_date,'%Y%m%d')

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

-Advertisement-
Play Games
更多相關文章
  • 1 ProXmoX-VE簡介 PVE(ProXmoX VE)是一個開源的虛擬化管理軟體,類似ESXI,用戶可以通過網頁的方式來管理伺服器,使用kvm以及lxc技術運行虛擬機,同時也提供了一些集群和HA等功能。 2 安裝 2.1準備工作 首先準備好安裝的鏡像proxmox-ve_7.3-1下載地址:h ...
  • 技術方案: 1.運行時使用.Net Framework4.6框架,界面使用WPF與Chromium。 2.上位機與下位機使用串口對接每家設備協議,上位機與UI使用WebSocket通訊。 3.資料庫使用SQLite和localStorage。 單機版V1.0 界面清新、操作簡單。 支持地磅秤、智能電 ...
  • 由於.NET 中是讓垃圾收集器Garbage Collector (簡稱GC)刪除未使用的對象。但是,由於GC只是不時地刪除未使用的對象,因此同時使用的記憶體會增加。更重要的是,對於GC來說,HALCON 的標誌性變數(圖像、區域……)似乎相當“小”,因為它們只包含對(在許多情況下相當大)標誌性對象的 ...
  • 目標:在掃雷中註入一個messagebox彈窗; 方法:打開一個進程(掃雷的進程),申請記憶體,寫入messagebox; 另外啟動一個線程,讓整個代碼跑起來 項目創建 註入代碼 .586 .model flat,stdcall option casemap:none include windows. ...
  • 最近在學習stm32的FSMC,打算整一個LCD的驅動,然後封裝的比正點原子更高層一些,方便後期直接調用 然後在學習的時候碰到了一個小問題,研究了一會之後覺得挺有意思的,所以記下來 //使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A6作為數據命令區分線 ...
  • 背景 客戶收到了SQL專家雲告警郵件,在凌晨2點到3點之間帶有資源等待的會話數暴增,請我們協助分析。 現象 登錄SQL專家雲,進入活動會話的趨勢分析頁面,下鑽到2點鐘一個小時內的數據,看到每分鐘的等待數都在100左右,2點15分時達到200。 轉到活動會話原始數據頁面,看到大量會話都在等待,等待類型 ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者:蟹黃瓜子 文章來源:GreatSQL社區投稿 1.Zookeeper概述 Zookeeper對於很多人開始可能都有所耳聞,他的使用場景也很多,可以 ...
  • 摘要: RSGroup是集群隔離方案。 本文分享自華為雲社區《華為FusionInsight MRS HBase的集群隔離——RSGroup》,作者: MissAverage。 一、HBase RSGroup理解 RSGroup是集群隔離方案。 HBase原有的資源隔離:為多個用戶共用同一個HBas ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...