首页 > 数据库 >sqlserver、myslq常用sql语句

sqlserver、myslq常用sql语句

时间:2023-06-15 20:00:43浏览次数:47  
标签:SQL -- 列名 sql sqlserver 查询 myslq 表名 table


前言

常用建表、加索引、字段整理


一、SqlServer

1.建表

drop table xxl_users
create table xxl_users(
  game_user_id int primary key identity(1,1),
  [user_id] int foreign key references usr_users([user_id]) not null,--外键
  last_share_time datetime default('2022-2-23'),
  last_reset_time datetime default(getdate()),
  surplus_game_cnt int default(1),
  Memo nvarchar(200)
)
go

-- 根据已有的表创建新表:
create table 新表名 like 原表

2.新增字段、约束、普通索引

--字段
-- 追加字段
alter table 表名 add 列名 int default(0);

-- 修改字段
alter table 表名 alter column 列名 float not null

-- 删除字段
alter table 表名 drop column 列名



--约束
-- 新增唯一约束
Alter Table 表名 Add Constraint UQ_表名_列名 unique(列名1,列名2)

-- 新增默认约束
Alter Table 表名 Add Constraint DF_表名_列名 default('默认值') for 列名

-- 新增检查约束
Alter Table 表名 Add Constraint CK_表名_列名 check(列名 between 15 and 40)

-- 新增外键约束
Alter Table 表名 Add Constraint FK_表名_列名 foreign key(列名) references 外键表名(列名)

-- 删除约束
Alter Table 表名 Drop Constraint  约束名 



--索引
-- 新增普通索引(加快查询速度)
create index index_表名_列名 on 表名(列名);
-- 删除索引
drop index 索引名

二、MySql

1.建表

DROP TABLE IF EXISTS `mdl_car_show`;
CREATE TABLE `mdl_car_show`  (
  `car_show_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '显示配置代码',
  `show_name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '配置名称',
	`show_value` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '配置值',
  `memo` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注'
  PRIMARY KEY (`car_show_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT COMMENT = '车型显示配置表';

-- 根据已有的表创建新表:
create table 新表名 like 原表

2.新增字段、约束、普通索引

--字段
-- 追加字段
alter table 表名 add 字段名 varchar(200)  default ''

-- 修改字段
alter table 表名 modify 字段名 int(11)  default 1

-- 删除字段
alter table 表名 drop 字段名;



--约束
alter table 表名 add constraint 约束名称 增加的约束类型(列名)

-- 新增主键约束
alter table 表名 add constraint pk_表名_列名 primary key (列名);

-- 新增唯一约束
alter table 表名 add constraint uq_表名_列名 unique(列名)

-- 新增默认约束
alter table 表名 add constraint df_表名_列名 default '默认值' for 列名

-- 新增检查约束
alter table 表名 add constraint ck_表名_列名 check(age>20);

-- 新增外键约束
alter table 表名 add constraint fk_表名_列名 foreign key(列名) references 外键表名(列名)

-- 删除约束
alter table 表名 drop constraint 约束名



--索引
-- 新增普通索引(加快查询速度)
alter table 表名 add index index_表名_列名(列名)
-- 删除索引
drop index 索引名

语句调优基础知识

1、set statistics io on/off

使 SQL Server 显示有关由 Transact-SQL 语句生成的磁盘活动量的信息。

--清空缓存数据
dbcc dropcleanbuffers
go
--清空缓存计划
dbcc freeproccache
go
set statistics io on
go
select user_id,nike_name from usr_users where sex=1
go

执行上面代码获取以下信息:

(4 row(s) affected)
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'SalesOrderDetail_Test'. Scan count 1, logical reads 481, physical reads 1, read-ahead reads 584, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.


扫描计数(Scan Count):在查询中涉及到的表被访问的次数。在我们的例子中,其中的表只被访问了1次,由于查询中不包括连接命令,这一信息并不是十分有用,但如果查询中包含有一个或多个连接,则这一信息是十分有用的。(一个循环外部的表的Scan Count值为1,但对于一个循环内的表而言,其值为循环的次数。可以想象得到,对于一个循环内的表而言,其Scan Count值越小,它所使用的资源越少,查询的性能也就越高。因此在调节一个带连接的查询的性能时,需要关注Scan Count的值,在进行调节时,注意观察它是增加还是减少了。)

逻辑读取(Logical Reads):这是SET STATISTICS IO或SET STATISTICS TIME命令提供的最有用的 数据。我们知道,SQL Server在可以对任何数据进行操作前,必须首先把数据读取到其数据缓冲区中。此外,我们也知道SQL Server何时会从数据缓冲区中读取数据,并把数据读取到大小为8K字节的页中。那么Logical Reads的意义是什么呢?Logical Reads是指SQL Server为得到查询中的结果而必须从数据缓冲区读取的页数。在执行查询时,SQL Server不会读取比实际需求多或少的数据,因此,当在相同的数据集上执行同一个查询,得到的Logical Reads的数字总是相同的。(SQL Server执行查询时的Logical Reads值每一次这个数值是不会变化的。因此,在进行查询性能的调节时,这是一个可以用来衡量你的调节措施是否成功的一个很好的标准。如果 Logical Reads值下降,就表明查询使用的服务器资源减少,查询的性能有所提高。如果Logical Reads值增加,则表示调节措施降低了查询的性能。在其他条件不变的情况下,一个查询使用的逻辑读越少,其效率就越高,查询的速度就越快。)

物理读取(Physical Reads):物理读,在执行真正的查询操作前,SQL Server必须从磁盘上向数据缓冲区中读取它所需要的数据。在SQL Server开始执行查询前,它要作的第一件事就是检查它所需要的数据是否在数据缓冲区中,如果在,就从中读取,如果不在,SQL Server必须首先将它需要的数据从磁盘上读到数据缓冲区中。我们可以想象得到,SQL Server在执行物理读时比执行逻辑读需要更多的服务器资源。因此,在理想情况下,我们应当尽量避免物理读操作。下面的这一部分听起来让人容易感到糊涂 了。在对查询的性能进行调节时,可以忽略物理读而只专注于逻辑读。你一定会纳闷儿,刚才不是还说物理读比逻辑读需要更多的服务器资源吗?情况确实是这样, SQL Server在执行查询时所需要的物理读次数不可能通过性能调节而减少的。减少物理读的次数是DBA的一项重要工作,但它涉及到整个服务器性能的调节,而 不仅仅是查询性能的调节。在进行查询性能调节时,我们不能控制数据缓冲区的大小或服务器的忙碌程度以及完成查询所需要的数据是在数据缓冲区中还是在磁盘 上,唯一我们能够控制的数据是得到查询结果所需要执行的逻辑读的次数。

因此,在查询性能的调节中,我们可以心安理得地不理会SET STATISTICS IO命令提供的Physical Read的值。(减少物理读次数、加快SQL Server运行速度的一种方式是确保服务器的物理内存足够多。)

预计(Read-Ahead Reads):与Physical Reads一样,这个值在查询性能调节中也没有什么用。Read-Ahead Reads表示SQL Server在执行预读机制时读取的物理页。为了优化其性能,SQL Server在认为它需要数据之前预先读取一部分数据,根据SQL Server对数据需求预测的准确程度,预读的数据页可能有用,也可能没用。


2、set statistics time on/off

一、语法 1、当 SET STATISTICS TIME 为 ON 时,显示语句的时间统计。一旦执行了上述命令,在整个会话期间,时间统计一直保持启用状态,直到执行 OFF 操作。

2、为 OFF 时,不显示时间统计。

2、SET STATISTICS TIME 的设置是在执行或运行时设置,而不是在分析时设置。

二、set statistics time 的统计信息的意思

1、CPU时间 这个值的含义指的是在这一步,SQLSERVER所花的纯CPU时间是多少。也就是说,语句花了多少CPU资源

2、占用时间 : 此值指这一步一共用了多少时间。也就是说,这是语句运行的时间长短,有些动作会发生I/O操作,产生了I/O等待,或者是遇到阻塞、产生了阻塞等待。总之时间用掉了,但是没有用CPU资源。

3、分析和编译时间: 这一步,就是语句的编译时间。由于语句运行之前清空了所有执行计划,SQLSERVER必须要对他编译。这里的编译时间就不为0了。由于编译主要是CPU的运算,所以一般CPU时间和占用时间是差不多的。

4、SQLSERVER执行时间: 语句真正运行的时间。由于语句是第一次运行,SQLSERVER需要把数据从磁盘读到内存里


sqlserver、myslq常用sql语句_SQL



参考: https://www.cnblogs.com/laoyumi/archive/2009/09/15/1567323.html https://blog.csdn.net/whazhl/article/details/39119379

标签:SQL,--,列名,sql,sqlserver,查询,myslq,表名,table
From: https://blog.51cto.com/u_16091079/6494413

相关文章

  • 问题解决sql文件上传和蚁剑连接
    1.无法连接上自己的ip:发现问题是上传的木马不在127.0.0.1的文件下时,会导致解析不到木马,要将木马上传到127.0.0.1的文件下连接2.解决sql上传一句话木马问题要先在mysql的配置文件my.ini中添加导入导出数据库的地址:secure_file_priv=D:\phpstudy_pro\WWW然后重启数据库,可以进行sq......
  • k8s实战案例之基于StatefulSet控制器运行MySQL一主多从
    1、前言Pod调度运⾏时,如果应⽤不需要任何稳定的标示、有序的部署、删除和扩展,则应该使⽤⼀组⽆状态副本的控制器来部署应⽤,例如Deployment或ReplicaSet更适合⽆状态服务需求,⽽StatefulSet适合管理所有有状态的服务,⽐如MySQL、MongoDB集群等。2、StatefulSet控制器运行MySQL一......
  • python2安装mysqldb
     yuminstallmariadb-devel 或yuminstallmysql-devel 编辑_mysql.c注释2005行 ......
  • MySQL5.7 批量写入数据
    目录MySQL5.7批量写入数据MySQL5.7批量写入数据#一、创建存储过程CREATEPROCEDUREp02()BEGIN DECLARE iINT; SETi=0; WHILE i<=2000DO INSERTINTOxxx.xxx(x,x,x,x,x,x) VALUES (CONCAT('字符串',i),1,'6','6',�......
  • SQL SERVER 根据子节点查询所有父节点、根据父节点获取所有子节点
    一、根据表单类型查询其所有的上级表单类型:1、每次按照一个子节点的值进行查询:withpartentsas(select*fromJCBDFLwhereBDFLDM='14'UNIONALL(SELECTa.*fromJCBDFLasainnerjoinpartentsasbona.BDFLDM=b.SJDM))SELECTBDFLDM,BDFLMC,SJDMFROMparten......
  • 树形sql查询
    --树形sql查询WITHTREEAS(--创建一个虚拟表SELECT*FROMtableName--指定需要查询的表WHEREid=''--指定父节点条件UNIONALL--联合查询SELECTtableName.*FROMtableName,TREEWHERETREE.id=tableName.parentId)SELECT*FROMTREE;......
  • Mysql优化的思路以及工具的使用
    一,查询sql的执行效率MySQL客户端连接成功后,通过show[session|global]status命令可以提供服务器状态信息。show[session|global]status可以根据需要加上参数“session”或者“global”来显示session级(当前连接)的计结果和global级(自数据库上次启动至今)的统计结果。如果......
  • MySQL 数据库表字段字符集编码不一致导致隐式转换索引失效案例分析
       有网友咨询,丢过来一段sql语句,说是执行一次耗时10多分钟,让帮忙看看。表数据量在5万左右,数据量不大,首先确认表统计信息都是准确的,查询sql以及执行计划如下:  可以看到嵌套循环join部分全表扫描,缺失索引,应该在join条件列hoist_code、device_code建立索引,但是网友反馈......
  • CentOs7安装部署Sonar环境(JDK1.8+MySql5.7+sonarqube7.8)
    sonarqube安装前环境准备JDK1.8、MySql5.7。一、JDK安装1、下载jdk #打开下面的网址,选择jdk-8u371-linux-x64.tar.gz进行下载(8u371版本可能会有区别,但是没有影响) http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html2、......
  • mysql 报错 :The table xxx is full
    ############################################现象:用户执行的sql语句报错:Cause:java.sql.SQLException:Thetable'/home/work/mysql_3306//tmp/#sql117f0c_db7113_a4'isfull 原因:参数internal_tmp_mem_storage_engine是默认值TempTable,当临时表大小超过temptable_m......