日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL语句备忘

發布時間:2023/12/15 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL语句备忘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
view plaincopy to clipboardprint?
  • --------------------------數據庫操作--------------------------
  • --建數據庫
  • create database yongfa365_com
  • on
  • ( name = yongfa365_comt,
  • filename = 'd:\yongfa365_com.mdf',
  • size = 4,
  • maxsize = 10,
  • filegrowth = 1
  • )
  • --刪數據庫
  • drop database yongfa365_com
  • --備份數據庫
  • backup database yongfa365_com to disk='d:\yongfa365_com.bak'
  • --批量收縮所有數據庫 適用SQL Server 2000/2005
  • DECLARE cur CURSOR FOR SELECT name FROM Master..SysDatabases WHERE name NOT IN ('master','model','msdb','Northwind','pubs','tempdb')
  • DECLARE @tb SYSNAME
  • OPEN cur
  • FETCH NEXT FROM cur INTO @tb
  • WHILE @@fetch_status = 0
  • BEGIN
  • DUMP TRANSACTION @tb WITH NO_LOG
  • BACKUP LOG @tb WITH NO_LOG
  • DBCC shrinkdatabase(@tb)
  • FETCH NEXT FROM cur INTO @tb
  • END
  • CLOSE cur
  • DEALLOCATE cur
  • --批量收縮所有數據庫 適用所有SQL Server
  • DECLARE cur CURSOR FOR SELECT name FROM Master..SysDatabases WHERE name NOT IN ('master','model','msdb','Northwind','pubs','tempdb')
  • DECLARE @tb SYSNAME
  • OPEN cur
  • FETCH NEXT FROM cur INTO @tb
  • WHILE @@fetch_status = 0
  • BEGIN
  • EXEC('ALTER DATABASE '+@tb+' SET RECOVERY SIMPLE;')
  • DBCC shrinkdatabase (@tb);
  • EXEC('ALTER DATABASE '+@tb+' SET RECOVERY FULL;')
  • FETCH NEXT FROM cur INTO @tb
  • END
  • CLOSE cur
  • DEALLOCATE cur
  • --刪除數據庫日志文件(有時能刪幾十G)
  • DBCC ERRORLOG
  • GO 6
  • --------------------------數據庫操作--------------------------
  • ----------------------------表操作----------------------------
  • --刪除表
  • drop table movies
  • --SQL Server通用建表結構
  • Create Table [test] (
  • [Id] int primary key identity(1,1),--ID,主鍵,自動號
  • [txtTitle] nvarchar(255),--標題
  • [txtContent] nvarchar(MAX),--內容
  • [Adder] nvarchar(20),--添加人
  • [AddTime] datetime Default (getdate()),--提交時間
  • [ModiTime] datetime Default (getdate()),--修改時間
  • [Hits] int Default (0),--點擊數
  • [Flags] int Default (0) ,--標識
  • [SortID] int Default (0)--排序號
  • )
  • --SQLite建表
  • Create Table [test] (
  • [Id] integer Primary key not null,
  • [txtTitle] text null,--標題
  • [txtContent] text null,--內容
  • [Adder] text null,--添加人
  • [AddTime] text DEFAULT (datetime('now','localtime')) not null,--提交時間
  • [ModiTime] text DEFAULT (datetime('now','localtime')) not null,--修改時間
  • [Hits] integer Default (0) not null,--點擊數
  • [Flags] integer Default (0) not null ,--標識
  • [SortID] integer Default (0) not null--排序號
  • )
  • --ACCESS使用SQL語句建表
  • CREATE TABLE 表名 (
  • [Id] AutoIncrement NOT NULL ,
  • [AddTime] Date NULL ,
  • [Hits] Integer NULL ,
  • [Title] Text (255) NULL ,
  • [Remark] Memo NULL ,
  • [RMB] Currency NULL ,
  • [Flags] bit NULL ,
  • PRIMARY KEY (ID)
  • )
  • --重命名表
  • sp_rename '表名', '新表名', 'object'
  • ----------------------------表操作----------------------------
  • ---------------------------字段操作---------------------------
  • --添加字段
  • alter table [表名] add [字段名] [varchar] (50) not null default('默認')
  • --刪除字段
  • alter table [表名] drop column [字段名]
  • --修改字段
  • alter table [表名] alter column [字段名] varchar(50)
  • --添加約束
  • alter table [表名] add constraint [約束名] check ([約束字段] <= '2009-1-1')
  • --刪除約束
  • alter table [表名] drop constraint [約束名]
  • --添加默認值
  • alter table [表名] add constraint [默認值名] default 'http://www.yongfa365.com/' for [字段名]
  • --刪除默認值
  • alter table [表名] drop constraint [默認值名]
  • --讓SQL Server 自動編號ID從1開始
  • dbcc checkident('表名',reseed,0)
  • ---------------------------字段操作---------------------------
  • ----------------------表及字段描述信息------------------------
  • --為表添加描述信息
  • EXEC sp_addextendedproperty N'MS_Description' , N'人員信息表' , N'SCHEMA' , N'dbo' , N'TABLE' , N'表名' , NULL , NULL
  • --為字段XingMing添加描述信息
  • EXEC sp_addextendedproperty N'MS_Description' , N'姓名' , N'SCHEMA' , N'dbo' , N'TABLE' , N'表名' , N'COLUMN' , N'XingMing'
  • --更新表中列XingMing的描述屬性:
  • EXEC sp_updateextendedproperty N'MS_Description' , N'真實姓名' , N'SCHEMA' , N'dbo' , 'TABLE' , '表名' , 'COLUMN' , N'XingMing'
  • --刪除表中列XingMing的描述屬性:
  • EXEC sp_dropextendedproperty N'MS_Description' , N'SCHEMA' , N'dbo' , 'TABLE' , '表名' , 'COLUMN' , N'XingMing'
  • ----------------------表及字段描述信息------------------------
  • ---------------------------數據操作---------------------------
  • --插入數據
  • insert into [表名] (字段1,字段2) values (100,'http://www.yongfa365.com/')
  • --刪除數據
  • delete from [表名] where [字段名]>100
  • --刪除重復記錄(效率低,適合少量數據操作,極不適合ACCESS使用)
  • delete from [表名] where id not in (select max(id) from [表名] group by txtTitle,txtContent)
  • --NOT IN 效率太低,20000條數據都讓access死掉了。可行的方法:建個臨時表,在需要判斷是否重復的字段上加主鍵,用insert into InfoTemp select * from Info將原表的數據導入臨時表, 數據庫可以自動篩去重復數據,delete * from Info 清空原表,再用insert into Info select * from InfoTemp 將臨時表中數據導回原表
  • --更新數據
  • update [表名] set [字段1] = 200,[字段2] = 'http://www.yongfa365.com/' where [字段三] = 'haiwa'
  • --多表,用一個表更新另一個表(SQL Server版)
  • update 表一
  • set 表一.a = 表二.b
  • from 表一,表二
  • where 表一.id = 表二.id
  • update 表一
  • set a = 表二.b
  • from 表二
  • where id = 表二.id
  • --多表,用一個表更新另一個表(ACCESS版)
  • update 表一
  • inner join 表二
  • on 表一.id = 表二.id
  • set 表一.a = 表二.b
  • --查詢結果存儲到新表
  • select * into [新表表名] from [表名]
  • --從table 表中取出從第 m 條到第 n 條的記錄:(not in 版本)
  • select top n-m+1 * from [表名] where id not in (select top m-1 id from [表名])
  • --例:取出第31到第40條記錄
  • select top 10 * from [表名] where id not in (select top 30 id from [表名])
  • --從table 表中取出從第 m 條到第 n 條的記錄:(ROW_NUMBER 版本)
  • SELECT *
  • FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY id DESC ) AS idx ,
  • *
  • FROM dbo.Articles
  • ) a
  • WHERE a.idx BETWEEN m AND n
  • --隨機取10條數據,newid()是SQL數據庫里的一個函數,跟數據庫里的ID沒關
  • select top 10 * from [表名] order by newid()
  • --隨機取10條數據,如果是ACCESS數據庫用order by rnd(數字字段)
  • select top 10 * from [表名] order by rnd(id)
  • --連接查詢left join
  • select * from Article left join Category on Article.CategoryID=Category.ID
  • --查詢結果插入到另一個表的相關字段里(可以插入一個表的字段,也可以是一個數字常量)
  • insert into desttbl(fld1, fld2) select fld1, 5 from srctbl
  • --把當前表里的數據再復制一份到這個表里
  • insert into [表名] select * from [表名]
  • --SQL 2008支持這種插入方法,使用,隔開各行
  • DECLARE @Student TABLE (NO INT,Name NVARCHAR(4),Sex NVARCHAR(2),Age INT,Dept VARCHAR(2))
  • INSERT INTO @Student VALUES
  • ( 95001,N'李勇',N'男',20,'CS'),
  • ( 95002,N'劉晨',N'女',19,'IS'),
  • ( 95003,N'王敏',N'女',18,'IS'),
  • ( 95004,N'張立',N'男',19,'MA'),
  • ( 96001,N'徐一',N'男',20,'IS'),
  • ( 96002,N'張三',N'女',21,'CS'),
  • ( 96003,N'李四',N'男',18,'IS')
  • SELECT * FROM @Student
  • --向數據庫中添加5000條數據
  • declare @i int
  • set @i=1
  • while @i<=5000
  • begin
  • insert into users(userid,username) values(@i,'username' convert(varchar(255),@i))
  • set @i=@i+1
  • end
  • go
  • --統計SQL語句執行時間
  • declare @dt datetime
  • set @dt=getdate()
  • --要執行的SQL語句
  • select [語句執行花費時間(毫秒)]=datediff(ms,@dt,getdate())
  • --Case When語句
  • SELECT UserName,sex=
  • CASE
  • WHEN sex='男' THEN '男人'
  • WHEN sex='女' THEN '女人'
  • ELSE '哈哈'
  • END
  • ,Age
  • FROM Users
  • --having使用方法
  • --一個表中的UserName有很多重復,
  • --只顯示重復項:
  • select UserName,COUNT(*) from Users group by UserName having count(*)>1
  • --不顯示重復項:
  • select UserName,COUNT(*) from Users group by UserName having count(*)=1
  • ---------------------------數據操作---------------------------
  • 總結

    以上是生活随笔為你收集整理的SQL语句备忘的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。