mysql 语法大全

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37522951/article/details/79377476
1、说明:创建数据库
CREATE  database name
2、说明:删除数据库
drop  dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC  'disk' 'testBack' 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP pubs testBack
4、说明:创建新表
create  tabname(col1 type1 [ null primary  ],col2 type2 [ null create tab_new tab_old (使用旧表创建新表)
B: table  as  col1,col2… tab_old definition table table add col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加 类型的长度。
7、说明:添加主键: table  add  key Alter tabname primary (col)
8、说明:创建索引: [ ] idxname tabname(col….)
删除索引: index  create viewname select drop viewname
10、说明:几个简单的基本的sql语句
选择: * table1 范围
插入: into  values delete table1 范围
更新: table1 field1=value1 范围
查找: * table1 field1 ’%value1%’ select from order field1,field2 []
总数: count  totalcount table1
求和: sum as  from  select (field1) avgvalue table1
最大: max as  from  select (field1) minvalue table1
11、说明:几个高级查询运算词
A: 运算符
UNION  ALL  UNION  UNION  ),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: 运算符
EXCEPT  ALL  EXCEPT  EXCEPT  ),不消除重复行。
C: 运算符
INTERSECT  ALL  INTERSECT  INTERSECT  ),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: a.a, a.b, a.c, b.c, b.d, b.f a OUT  b a.a = b.c
B: :
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C: /
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
12、分组: by 一张表,一旦分组完成后,查询后只能得到组相关的信息。
  count sum max min avg   在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
  分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
14.如何修改数据库的名称:
sp_renamedb ,  
二、提升
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一: * b a 1<>1(仅用于SQlServer)
法二: top  into  from  into select from into select from in where from in wherea,b,c a a (d b ) 或者: a,b,c a a (1,2,3)
5、说明:显示文章、提交人和最后回复时间
select  from  a,( max from  where  .title=a.title) b
6、说明:外连接查询(表名1:a 表名2:b)
select  from  LEFT  JOIN  ON  * (a,b,c a) T t.a > 1;
8、说明: 的用法, 限制查询数据范围时包括了边界值, between * table1 time time1 time2
select  from  where  not  数值1 数值2
9、说明: 的使用方法
select  from  where  not in  from where exists ( * table2 table1.field1=table2.field1 )
11、说明:四表联查问题:
select  from  left  join  on  right  join  on  inner  d a.a=d.d .....
12、说明:日程安排提前五分钟提醒
SQL: * 日程安排 datediff( ,f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select  10 b.* ( top  from  order  排序字段 ) a,表名 b b.主键字段 = a.主键字段 by  declare intend @sql  nvarchar(600)
   @sql=’ top end from  where  not  ( top from  where  exec  
注意:在 后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果 后还有具体的字段,这样做是非常有好处的。因为这样可以避免 的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)
14、说明:前10条记录
select  10 * form table1 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select  from  where  select  (a) tablename tb tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
( a tableA ) ( a tableB) ( a tableC)
17、说明:随机取出10条数据
select  10 * tablename by  newid()
19、说明:删除重复记录
1), from  where  not  ( max from  group  col1,col2,...)
2), distinct  into  from  delete tablename
   into  select  from  table column_b identity(1,1)
  from  where  not  (
select  (column_b)  tablename by  table drop column_b
20、说明:列出数据库里所有的表名
select  from  where  'U'  name syscolumns id=object_id()
22、说明:列示type、vender、pcs字段,以type字段排列, 可以方便地实现多重选择,类似 中的
select  sum case  when  then  else  end sum case  when  then  else  end sum case  when  then  else  end FROM  group  type
显示结果:
type vender pcs
电脑 A 1
电脑 A 1
光盘 B 2
光盘 A 2
手机 B 3
手机 C 3
23、说明:初始化表table1
TRUNCATE  table1
24、说明:选择从10到15的记录
select  5 * ( top  from  order  id ) table_别名 by  desc
三、技巧
1、1=1,1=2的使用,在SQL语句组合时用的较多
1=1” 是表示选择全部    “ 1=2”全部不选,
如:
if @strWhere != @strSQL = + @tblName + + @strWhere
end
else
begin
set  'select count(*) as Total from ['  ']'
end
我们可以直接写成
错误!未找到目录项。
set  'select count(*) as Total from ['  '] where 1=1 安定 ' sp_change_users_login ,,from 'E:\dvbbs.bak'
6、修复数据库
ALTER  [dvbbs] SINGLE_USER
GO
DBCC CHECKDB( ,repair_allow_data_loss) TABLOCK
GO
ALTER  [dvbbs] MULTI_USER
GO
7、日志清除
SET  ON
DECLARE  @MaxMinutes ,
  INT
-- 要操作的数据库名
SELECT   'tablename_log' -- 日志文件名
@MaxMinutes = 10, @NewSize = 1  @OriginalSize @OriginalSize = FROM WHERE = @LogicalFileName
SELECT  + db_name() + +
  ( (30),@OriginalSize) + +
  ( (30),(@OriginalSize*8/1024)) + FROM WHERE = @LogicalFileName
CREATE  DummyTrans
  char  not  )
@Counter    ,
  @TruncLog   (255)
SELECT  @TruncLog = + db_name() + (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) AND SELECT FROM WHERE = @LogicalFileName)
  (@OriginalSize * 8 /1024) > @NewSize
  -- Outer loop.
SELECT  WHILE   ((@Counter < @OriginalSize / 16) (@Counter < 50000))
  -- update
  DummyTrans ( ) DummyTrans
  @Counter = @Counter + 1
  EXEC END
SELECT  + db_name() + +
  ( (30), ) + +
  ( (30),( *8/1024)) + FROM WHERE = @LogicalFileName
DROP  DummyTrans
SET  OFF
8、说明:更改某个表
exec  'tablename' 'dbo'
9、存储更改全部表
CREATE  dbo.User_ChangeObjectOwnerBatch
@OldOwner NVARCHAR(128),
@NewOwner NVARCHAR(128)
AS
DECLARE  Name     NVARCHAR(128)
DECLARE  as  @OwnerName   NVARCHAR(128)
DECLARE  CURSOR  'Name'    name'Owner'    sysobjects
where  by curObject
FETCH  FROM  INTO  Name set '.' Nameexec NEXT curObject @, @Owner
END
close  curObject
GO
@i @i=1
while @i<30
begin
     into  values set Name     Zhangshan 80
  Wangwu      50
  select (score) tb_table)<60)
begin
update  set  score<60
if  ( min from  break
  continue
end
 
1.按姓氏笔画排序:
Select  From  Order  CustomerName Chinese_PRC_Stroke_ci_as //从少到多
2.数据库加密:
select  '原始密码' pwdencrypt()
select  '原始密码' '加密后密码' --相同;否则不相同 encrypt('原始密码')
select  '原始密码' pwdcompare(,) = 1@list (1000),
@sql nvarchar(1000)
select  ',' name  sysobjects a,syscolumns b a.id=b.id a. = @sql=+(@list,len(@list)-1)+(@sql)
4.查看硬盘分区:
EXEC  select from =
     select  from  '相等'
else
print hcforeach GLOBAL SELECT +RTRIM(spid) master.dbo.sysprocesses
WHERE  IN 'SQL profiler' 'SQL 事件探查器' sp_msforeach_worker Top From Top From Where in Select M ID 表) by Desc
----------------------------------
N到结尾记录
Select  N * by  Desc
案例
例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段, 写一个SQL语句,找出表的第31到第40个记录。
  top  from  where  not   ( top  from  select 10 recid A ……是从索引中查找,而后面的top from order select 30 recid A by select 30 recid A recid>-1
例2:查询表中的最后以条记录,并不知道这个表共有多少数据,以及表结构。
set  'select top 1 * from T   where pid not in (select top '  count ' pid  from  T)'
print @s      sp_executesql  @s
9:获取当前数据库中的所有用户表
select  from  where  'u'  status>=0
10:获取某一个表的所有字段
select  from  where  '表名' name syscolumns id (id sysobjects type = and = )
两种方式的效果相同
11:查看与某一个表相关的视图、存储过程、函数
select  from  where  and  like  name 存储过程名称 sysobjects xtype=* master..sysdatabases D sid inselect from where =)
或者
select  name  DB_NAME master..sysdatabases sid <> 0x01
14:查询某一个表的字段和数据类型
select  from  table_name = sp_addlinkedserver   , , , sp_addlinkedsrvlogin  , ,, , * ITSV.数据库名.dbo.表名
--导入示例
select  into  from  sp_dropserver  ,  
--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset
--查询示例
select  from  'SQLOLEDB ' 'sql服务器名 ' '用户名 ' '密码 ' * openrowset( , ; ; ,数据库名.dbo.表名)
openrowset( , ; ; ,数据库名.dbo.表名)
select  from  b
set  from 'SQLOLEDB ''sql服务器名 ''用户名 ''密码 'as inner 本地表 b
on  sp_addlinkedserver   , , , *
FROM  'SELECT *  FROM 数据库.dbo.表名 ' openquery(ITSV,  )
select  from  b
set  openquery(ITSV,  ) a
inner  本地表 b a.列A=b.列A
*
FROM    'SQLOLEDB ' 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 '  opendatasource( ).数据库.dbo.表名
select  from  substringrightleftisnullEXEC 'NULL'
6, nocount { | }
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。 NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
SET  ON  NOCOUNT 为 时,返回计数
常识
from Order ,查询时,先排序,后取
在SQL中,一个字段的最大容量是8000,而对于nvarchar(4000),由于nvarchar是Unicode码。
  
SQLServer2000同步复制技术实现步骤
一、 预备工作
1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户(SynUser)
2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:
我的电脑  
--确定
3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)
开始 (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
开始 "SQL SERVER 2000"namename 
要求:
srv1.库名..author增加记录则srv1.库名..author记录增加
srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新
--*/
sp_addlinkedserver ,,,sp_addlinkedsrvlogin ,,,,--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动
go
 
--然后创建一个作业定时调用上面的同步处理存储过程就行了
 
 
设置方法:
我的电脑  
 
--在srv1中创建如下的同步处理存储过程
create  b namenamesrv2.库名.dbo.author b,author i
where  and
(b. <> i. or   
--插入新增的数据
insert  name id,,telphone author i
where  exists(
select  from  where   
--删除已经删除的数据(如果需要的话)
delete  srv2.库名.dbo.author b
where  exists(
select  from  where  <code plain"="" style="margin: 0px !important; padding: 0px !important; white-space: pre-wrap; border-radius: 0px !important; background: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.8em !important; outline: 0px !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; min-height: auto !important;">go

猜你喜欢

转载自blog.csdn.net/qq_37522951/article/details/79377476