【数据库】Sqlserver中和MySQL基本语法的区别

本文探讨了SQL Server与MySQL在语法和功能上的主要区别,包括数据库查看、数据类型、枚举、表修改、主键处理、正则表达式、分组聚合以及分页查询等方面。介绍了SQL Server中如何实现类似MySQL的某些操作,如使用`sys.databases`和`sys.tables`视图代替`show`命令,以及利用`check`约束模拟枚举类型等。
  • sqlserver中没有show语句
show databases;
show create database python04; 
  • 使用以下语句来实现查看所有数据库和表结构
select * from sys.databases;
use python_test;
go
select * from sys.tables;
  • 没有unsigned类型
  • auto_increment为identity,指定identity值要修改identity_insert为on,并且插入值要和字段一一对应,同样的当状态为on时,需要为identity指定值。
set identity_insert students on;
insert into students(id,name,age,high,gender,cls_id)values('3','老李', 18, 188.88,'man', 0);
set identity_insert students off;
  • 没有enum枚举类型,gender varchar(10) check(gender in('man', 'woman', '保密')) default '保密',用check来实现
  • sqlserver没有modify和change,用的是excute sp_rename和alter column
-- 修改表-修改字段:不重命名版
-- alter table 表名 modify 列名 类型及约束;
alter table students modify birthday date;
    
-- 修改表-修改字段:重命名版
-- alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth date default "2000-01-01";
execute sp_rename 'students.birthday','birth';    
alter table students alter column  birthday  date not null;
  • 删除列要指定要说明column
alter table students drop  birth;
alter table students drop column birth;
  • 主键列是自动增长,DEFAULT 和 NULL 不允许作为显式标识值。
  • 不支持rlike
  • 两个字段相除保留小数,先将分子转换成浮点数或者小数
select round(convert(float,sum(age))/count(*), 2) from students;
select round(convert(float,sum(age))/count(*), 3) from students;
select round(cast(sum(age)as decimal(5,2))/count(*), 2) from students;
  • 不支持group_concat函数,对分组内容进行拼接实现,参照这篇博客https://blog.csdn.net/Cxy_357/article/details/82190771
select gender,group_concat(name) from students where gender=1 group by gender;
select gender, 
        [name] = stuff((
                select ',' + [name] 
                from students t 
                where t.gender = students.gender 
                for xml path('')) , 1 , 1 , '') 
from students group by gender;
  • sql server里没有mysql中的limit语法,类似的功能是使用top来实现
select * from students where gender='男' limit 2;
select top 3* from students where gender='男';

select * from students where is_delete=0 limit (n-1)*m,m
select * from students limit 6,2; -- -----> limit (第N页-1)*每个的个数, 每页的个数;
     	
select top m * from 表 where 主键 not in(select top ((n-1)*m) 主键 from 表)
select top 2 * from students where id  not in(select top(3*2) id from students);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值