sql 总结常用语法

··Sql语句

1、truncate –删除所有数据,保留表结构,不能撤销还原,速度快

2、delete –是逐行删除,不适合大量数据删除,速度极慢

3、drop –删除表,表数据和表结构一起删除,速度快


1、修改字段名:
  alter table 表名 rename column A to B
2、修改字段类型:
  alter table 表名 alter column 字段名 type not null
3、修改字段默认值
  alter table 表名 add default (0) for 字段名 with values
  如果字段有默认值,则需要先删除字段的约束,在添加新的默认值,
  select c.name from sysconstraints a
  inner join syscolumns b on a.colid=b.colid
  inner join sysobjects c on a.constid=c.id
  where a.id=object_id('表名')
  and b.name='字段名'
  根据约束名称删除约束
  alter table 表名 drop constraint 约束名
  根据表名向字段中增加新的默认值
  alter table 表名 add default (0) for 字段名 with values
4、增加字段:
  alter table 表名 add 字段名 type not null default 0
5、删除字段:
  alter table 表名 drop column 字段名;
-- 修改字段类型长度
ALTER TABLE userinfo
ALTER COLUMN name varchar(100);

-- 修改字段类型
ALTER TABLE 表名 ALTER COLUMN 字段名 float;

-- 修改字段不允许 NULL 值
ALTER TABLE 表名 ALTER COLUMN 字段名 float NOT NULL;

-- 添加主键
ALTER TABLE userinfo ADD CONSTRAINT id_name PRIMARY KEY(ID);

-- 修改字段名 (执行后会有提示:注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。)
EXEC sp_rename "userinfo.age","userage","COLUMN";

-- 添加字段名
ALTER TABLE userinfo ADD gender bit DEFAULT 0;

-- 删除表
DROP TABLE userinfo;
---开启insert增加id约束
SET IDENTITY_INSERT [dbo].[RefundType] ON 
GO
---关闭insert增加id约束
SET IDENTITY_INSERT [dbo].[RefundType] OFF
GO


--如何在SQL中查询同一个字段在哪些表中
SELECT name FROM sysobjects WHERE id IN (SELECT id FROM syscolumns WHERE name = 'XXXXX')


--查出表中字段为空和为零
SELECT *
FROM [BaiChuang].[dbo].[Company] where isnull(Cash,'') =0

--查出23点所有数据
and Datepart(hour,f.DutyShipTime)=23 

--查出该字段在那些表里
SELECT name FROM sysobjects WHERE id IN (SELECT id FROM syscolumns WHERE name = 'Note')

--模糊搜索
SELECT*
FROM [BaiChuang].[dbo].[MB_Info] where CHARINDEX('禁用',CompanyName)>0 

--电话
select DBO.GetMoblie(MENO)
from dbo.#TEST where MENO like '%[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'
/*结果:
12368597854
15286952365
12568956854
*/


---占位符
select PName ,len(PName) from ProductInfo where len(PName) = (select max(len(PName)) from ProductInfo)

select id'商品名id', PName'商品名称' ,datalength(PName)'占位符' from ProductInfo where datalength(PName)>=50


----------------------------------------------
去除字段收尾的 []
SELECT REPLACE(REPLACE(car_brand_category_id, '[', '('), ']', ')') AS car_brand_category_id
FROM customer.cc_supplier ;
-------------------------------------------------
update ProductInfo set Remark1=replace(Remark1,char(13),'') where CHARINDEX(char(13),Remark1)>0 --- 除去回车符
update ProductInfo set Remark1=replace(Remark1,char(10),'') where CHARINDEX(char(10),Remark1)>0--- 除去换行符
----查回车符
select * from ProductInfo where CHARINDEX(char(13),FactNames)>0
select * from ProductInfo where CHARINDEX(char(10),FactNames)>0

---去重
select * from Company where CNme in(select CNme from Company group by CNme having count(CNme)>=2)

SQL server 把小写字母改为大写字母的语句采用如下方法:
update 表名 set 字段名a= upper(字段名a)

将大写字母改为小写字母
update 表名 set 字段名a= Lower(字段a)

将为 null的结果替换成 0
SELECT ISNULL(SUM(ISNULL(Price, 0)), 0) 。

一、sql清空表数据的三种方式:

1、truncate –删除所有数据,保留表结构,不能撤销还原,速度快

2、delete –是逐行删除,不适合大量数据删除,速度极慢

3、drop –删除表,表数据和表结构一起删除,速度快

二、语法

truncate table 表名

delete from 表名 where 列名="value "

drop form 表名


1):已存在默认值
语法:exec sp_helpconstraint @objname=表名 (查看指定表相关约束详情)
alter table 表名 drop constraint 约束名 (删除默认值)
alter table 表名 add default 默认值 for 字段名
2:):无默认值
语法:alter table 表名 add default 默认值 for 字段名

---主键自增插入数据错误时:
错误提示:当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'ThirdPartyShip' 中的标识列插入显式值。

set identity_insert [BaichuangReport].[dbo].[ThirdPartyShip] ON--打开 

----中间就可对Id直接赋值

set identity_insert [BaichuangReport].[dbo].[ThirdPartyShip] OFF

-----not for replication的增加删除

alter table [BcTms].[dbo].[ThirdPartyShip] alter column id add not for replication --增加
alter table [BcTms].[dbo].[ThirdPartyShip] alter column Id drop not for replication --删除
-----sql的其他语法:
https://blog.csdn.net/qq_43846797/article/details/125138152?spm=1000.2115.3001.6382&utm_medium=distribute.pc_feed_v2.none-task-blog-personrec_tag-12-125138152-null-null.pc_personrec&depth_1-utm_source=distribute.pc_feed_v2.none-task-blog-personrec_tag-12-125138152-null-null.pc_personrec


sql 属性
https://blog.csdn.net/weixin_39756336/article/details/110505460


var sql = string.Format(@"SELECT TOP 100 p.[Id],RTRIM(p.PName)+'/'+RTRIM(p.PNo)+'/'+RTRIM(p.FactName)+'/'+RTRIM(p.UseCarType)+'/'+RTRIM(p.Brand) as [Desc],PNo,p.PName,FactName,UseCarType,Brand,p.PName as Name
FROM ProductInfo p
where charindex('{0}',PName)>=1 or charindex('{0}',Brand)>=1 or charindex('{0}',p.FactName)>=1 or charindex('{0}',p.PNo)>=1 ", searchkey.Trim())

如何在SQL Server中添加当前日期的小时数?
Select JoiningDate ,Dateadd (day , 30 , JoiningDate) from Emp
Select JoiningDate ,DateAdd (month , 10 , JoiningDate) from Emp 
Select JoiningDate ,DateAdd (year , 10 , JoiningDate ) from Emp
Select DateAdd(Hour, 10 , JoiningDate ) from emp 
Select dateadd (hour , 10 , getdate()), getdate() 
Select dateadd (hour , 10 , joiningDate) from Emp 
Select DateAdd (Second , 120 , JoiningDate ) , JoiningDate From EMP

如何按月份分组
select
convert(varchar(7),CreateTime,120) as Date,
sum(1) as [Count]
from
ProductInfo
group by
convert(varchar(7),CreateTime,120)

更改字段类型长度
alter table 表 
alter column 表中的字段名 类型的长度--varchar(60)
例:把城市表的城市名字段有原来的长度20改为30
alter table Testcity 
alter column cityname varchar(30)

更改字段类型
alter table 表 
alter column 字段名 更改后的类型
例:把城市表的城市名字段有原来的varchar类型改为int类型
alter table Testcity 
alter column cityname int

添加not null约束
alter table 表 alter column 字段名 int not null 
例:把cid不能输入空值
alter table Testcity alter column cid int not null 

设置主键
alter table 表 add constraint 主键名 primary key(字段名)
例:把cid设为主键
alter table Testcity add constraint PK_cid primary key(cid)

更改字段名
EXEC sp_rename '表名.字段名','更改后的字段名','COLUMN'

添加字段名
ALTER TABLE 表 ADD 字段名 字段类型 DEFAULT null

查出最近一次登录的供应商信息
select CompanyId,MAX(LoginTime)as LoginTime FROM [DtLog].[dbo].CompanyLoginLog where LoginTime>='2023-05-01' 
group by CompanyId


----重复生成数据
SELECT RefundOrderNo FROM RefundCompany where not isnull(RefundOrderNo,'')=''and [Status]>0 GROUP BY RefundOrderNo HAVING count(RefundOrderNo)>1 

---查询有换行的数据,将换行替换为空
SELECT * FROM ProductInfo WHERE [UseCarType] LIKE '%' + CHAR(10) + '%'

UPDATE ProductInfo SET [UseCarType] = REPLACE([UseCarType], CHAR(13) + CHAR(10), '') 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值