SQL 经常使用语法

记录日常用到的SQL语句写法及用法数据库

SQL server数据库设计

基础用法部分:ide

1.添加字段函数

ALTER table [TableName] add [字段名称] 字段类型  ; 
ALTER table [sale_plan] add addr_no nvarchar(50) null ; 

 2. 删除字段工具

--删除 "Person" 表中的 "Birthday" 列
ALTER TABLE Person DROP COLUMN Birthday ;

3. 更改字段类型spa

ALTER TABLE Persons
ALTER COLUMN Name nvarchar(50) 

4. 建立表设计

CREATE TABLE Persons
(
   Id_P int  IDENTITY(1,1) NOT NULL, --主键自增
   LastName varchar(255) NOT NULL,  --不为空
   FirstName varchar(255),
   Address varchar(255),
   City varchar(255)
)

5. 插入数据3d

--语法
--INSERT INTO 表名称 VALUES (值1, 值2,....)
--INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

 6. 更新字段的值带有单引号时 '  的处理方式 code

update tableA columns1 = 'M''s ABC' where id = 1 ;
-- columns1的值在数据库中显示为: M's ABC

 7. 查询出一个表的数据插入到另一张表server

select * into destTbl from srcTbl ;
insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl ;
--以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的:
--第一句(select into from)要求目标表(destTbl)不存在,由于在插入时会自动建立。
--第二句(insert into select from)要求目标表(destTbl)存在,因为目标表已经存在,因此咱们除了插入源表(srcTbl)的字段外,还能够插入常量,如例中的:5。

 

 8. 不肯定字段查询和更新

1 select * from where 1=1 ;
2 
3 update Table set columu1=column1 ... where ... ;

 

9.SQL Server 分页;

 //若搜索则重新生成rownum (当前生成的rownum不能做为where后面的条件)

SELECT T.* FORM( select ROW_NUMBER() OVER(ORDER BY A.createDate asc ) AS sortNum,A.*  from TableA where 1=1) T
where T.sortNum> 10 and T.sortNum <=11;

 

 10. SQL Server 插入长文本;

注意:SQL自己是没有限制长度的,插入数据后,使用select 查询出来,直接复制vnarchar(max)字段,是复制不全的,须要导出到*.csv文件中才能查看到完整的值;

ALTER TABLE WriteBackDataLog 
ALTER COLUMN Payload varchar(MAX); 

 以下图,copy不出完整payload字段的值,save results as 可将完整的数据导出来!

 

 

 


 11. 添加主键:

alter table Scrap_Info add id numeric(18,0) identity(1,1)

12. SQL Server Management Studio 修改表字段顺序

在 Microsoft SQL Server Management Studio 中:
    a). 工具->选项->Designers->表设计器和数据库设计器->将“阻止保存要求从新建立表的更改”的选项的勾去掉。
    b). 右键单击你要更改的数据表,点选“设计”,而后在表设计器中用鼠标拖动各列的位置,最后保存便可。

 

 

 

 

经常使用部分:

1.查询当前时间: select GETDATE() ;

2.查询非表字段写法: 

select columns1, columns2, '' as otherColumns , 123 as tempColumns from Table ;

3. distinct 用法,distinct 必须用在select 后面的第一个位置, distinct后面出现的字段也会去重(columnsA的值相同,columnsB不一样会做为结果分别查出来 );

select distinct columnsA , columnsB from Table ;

4.字段为空 ISNULL()函数的使用

--查询出姓名为空的记录
select * from Person where ISNULL(name,'') =''  ;

5. case when 

 

6.having 在 SQL 中增长 HAVING 子句缘由是,WHERE 关键字没法与合计函数一块儿使用。

 

--查找订单总金额少于 2000 的客户
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

 7.left join

  左连接,作表所有显示,无论右表有没有匹配项;  左表的一条记录,好比右表有2条知足on的匹配条件,就会出现2条记录。

select tableA.*,tableB.addr
tableA left join tableB on tableA.addrID=tableB.addrID
where tableA.id=1;

   (tableA为学生表,tableB为地址表,tableA中的addrID在tableB里有两个相同的addrID,则查询结果就会出现一个学生对应两个地址,出现两条查询结果)

 8. inner join

若是表结果以下: inner join 第二表中on的条件中有两条匹配项,查询结果就会出现两条记录;注意不能join后使用group by 来统计数量,这个统计出来的数据是错误的。

        

  以下:若是先join 再统计,显然统计错误;应该先统计出来后,再匹配过滤 select name,sum(quality) from Lw_T1 group by name ;

           

 

 9. SQL拼接字段的值 

相关文章
相关标签/搜索