首页 > 数据库 >Sqlserver,Mysql基础SQL语句

Sqlserver,Mysql基础SQL语句

时间:2023-01-05 14:58:58浏览次数:47  
标签:COMMENT SQL -- Mysql Sqlserver 表名 table alter 字段名

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;

标签:COMMENT,SQL,--,Mysql,Sqlserver,表名,table,alter,字段名
From: https://www.cnblogs.com/rsg-zxh/p/17027506.html

相关文章

  • C# WPF中使用SqLite-net数据库
    在研究安卓手机与pc电脑使用数据线进行数据传输的过程中(为啥这么二,因为甲方人员不允许使用互联网,就算是内部的局域网wifi都不可以),涉及到了WPF操作安卓常用数据库SqlLite的......
  • MySQL 8.x 数据库主从复制搭建
    前提:MySQL修改server-uuid的方法前提:如果服务器是克隆master的服务器的,server-uuid值都是一样的。会导致主从复制报错误1593,修改一下server-uuid以后重启MySQL1.查......
  • 一款.NET下的性能超高的SQLite操作库
    SQLite 已经成为小型数据库的王者,成为构建桌面程序、小型 Web 应用等必不可少的工具。给广大 .NETer 推荐一款.NET下的 SQLite 包装库 SQLite-net,非常好用,性能也......
  • pymysql之常见数据库操作
    导包并关联数据库importpymysqlconn=pymysql.Connect(host='localhost',user='root',db='stu',port=3306,password='dong')c=conn.cursor()查询某数据库各个表名sql=......
  • mysql备份与恢复
     1.备份mysqldump-uroot-p123456-Btesttest1>db_test.sql#备份test和test1数据库  2.恢复 恢复有个前提条件:Mysql安装完后必须修改过一次密码,不能......
  • Prometheus监控MySQL--保姆级
    1背景​​MySQLExporter​​是社区专门为采集​​MySQL/MariaDB​​数据库监控指标而设计开发,通过​​Exporter​​上报核心的数据库指标,用于异常报警和监控大盘展示,......
  • MySQL日常维护指南
    一、常用命令1、查看数据库默认编码showvariableslike'character%';  showvariableslike‘collation%’;2、启动停止数据库/etc/init.d/mysqlstart(stop) ......
  • Centos Linux 离线安装 MySQL 5.7
    1、下载  https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz2、创建mysql属组、用户、安装目录#创建新数组mysql......
  • Untiy如何连接SQLServer2008
    目前使用的是unity5.4的版本和SQLserver2008.首先为了测试在数据库里新建了一个名为11的数据库,里面建了一个表,名为student随便填入一些内容,如下:然后做unity这边的工作。首先......
  • SQLSERVER 的主键索引真的是物理有序吗?
    一:背景1.讲故事最近在看SQLSERVER2008查询性能优化,书中说当一个表创建了聚集索引,那么表中的行会按照主键索引的顺序物理排列,这里有一个关键词叫:物理排列,如果不了解......