首页 > 数据库 >SQL语句大全

SQL语句大全

时间:2022-11-21 13:06:19浏览次数:35  
标签:语句 table1 tablename 说明 SQL table where select 大全


 



针对mysql:



 



​1、说明:创建数据库​



​CREATE​​​   ​​​DATABASE​​​   ​​​database​​​ ​​​-​​​ ​​​name​



​2、说明:删除数据库​



​drop​​​   ​​​database​​​   ​​​dbname​



​3、说明:备份sql server​



​--- 创建 备份数据的 device​



​USE master​



​EXEC​​​   ​​​sp_addumpdevice ​​​ ​​​'disk'​​​ ​​​, ​​​ ​​​'testBack'​​​ ​​​, ​​​ ​​​'c:\mssql7backup\MyNwind_1.dat'​



​--- 开始 备份​



​BACKUP ​​​ ​​​DATABASE​​​   ​​​pubs ​​​ ​​​TO​​​   ​​​testBack​



​4、说明:创建新表​



​create​​​   ​​​table​​​   ​​​tabname(col1 type1 [​​​ ​​​not​​​   ​​​null​​​ ​​​] [​​​ ​​​primary​​​   ​​​key​​​ ​​​],col2 type2 [​​​ ​​​not​​​   ​​​null​​​ ​​​],..)​



​根据已有的表创建新表:​



​A:​​​ ​​​create​​​   ​​​table​​​   ​​​tab_new ​​​ ​​​like​​​   ​​​tab_old (使用旧表创建新表)​



​B:​​​ ​​​create​​​   ​​​table​​​   ​​​tab_new ​​​ ​​​as​​​   ​​​select​​​   ​​​col1,col2… ​​​ ​​​from​​​   ​​​tab_old definition ​​​ ​​​only​



​5、说明:删除新表​



​drop​​​   ​​​table​​​   ​​​tabname​



​6、说明:增加一个列​



​Alter​​​   ​​​table​​​   ​​​tabname ​​​ ​​​add​​​   ​​​column​​​   ​​​col type​



​注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加​​​ ​​​varchar​​​ ​​​类型的长度。​



​7、说明:添加主键: ​​​ ​​​Alter​​​   ​​​table​​​   ​​​tabname ​​​ ​​​add​​​   ​​​primary​​​   ​​​key​​​ ​​​(col)​



​说明:删除主键: ​​​ ​​​Alter​​​   ​​​table​​​   ​​​tabname ​​​ ​​​drop​​​   ​​​primary​​​   ​​​key​​​ ​​​(col)​



​8、说明:创建索引:​​​ ​​​create​​​   ​​​[​​​ ​​​unique​​​ ​​​] ​​​ ​​​index​​​   ​​​idxname ​​​ ​​​on​​​   ​​​tabname(col….)​



​删除索引:​​​ ​​​drop​​​   ​​​index​​​   ​​​idxname​



​注:索引是不可更改的,想更改必须删除重新建。​



​9、说明:创建视图:​​​ ​​​create​​​   ​​​view​​​   ​​​viewname ​​​ ​​​as​​​   ​​​select​​​   ​​​statement​



​删除视图:​​​ ​​​drop​​​   ​​​view​​​   ​​​viewname​



​10、说明:几个简单的基本的sql语句​



​选择:​​​ ​​​select​​​   ​​​* ​​​ ​​​from​​​   ​​​table1 ​​​ ​​​where​​​   ​​​范围​



​插入:​​​ ​​​insert​​​   ​​​into​​​   ​​​table1(field1,field2) ​​​ ​​​values​​​ ​​​(value1,value2)​



​删除:​​​ ​​​delete​​​   ​​​from​​​   ​​​table1 ​​​ ​​​where​​​   ​​​范围​



​更新:​​​ ​​​update​​​   ​​​table1 ​​​ ​​​set​​​   ​​​field1=value1 ​​​ ​​​where​​​   ​​​范围​



​查找:​​​ ​​​select​​​   ​​​* ​​​ ​​​from​​​   ​​​table1 ​​​ ​​​where​​​   ​​​field1 ​​​ ​​​like​​​   ​​​’%value1%’ ​​​ ​​​---like的语法很精妙,查资料!​



​排序:​​​ ​​​select​​​   ​​​* ​​​ ​​​from​​​   ​​​table1 ​​​ ​​​order​​​   ​​​by​​​   ​​​field1,field2 [​​​ ​​​desc​​​ ​​​]​



​总数:​​​ ​​​select​​​   ​​​count​​​   ​​​as​​​   ​​​totalcount ​​​ ​​​from​​​   ​​​table1​



​求和:​​​ ​​​select​​​   ​​​sum​​​ ​​​(field1) ​​​ ​​​as​​​   ​​​sumvalue ​​​ ​​​from​​​   ​​​table1​



​平均:​​​ ​​​select​​​   ​​​avg​​​ ​​​(field1) ​​​ ​​​as​​​   ​​​avgvalue ​​​ ​​​from​​​   ​​​table1​



​最大:​​​ ​​​select​​​   ​​​max​​​ ​​​(field1) ​​​ ​​​as​​​   ​​​maxvalue ​​​ ​​​from​​​   ​​​table1​



​最小:​​​ ​​​select​​​   ​​​min​​​ ​​​(field1) ​​​ ​​​as​​​   ​​​minvalue ​​​ ​​​from​​​   ​​​table1​



​1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)​



​法一:​​​ ​​​select​​​   ​​​* ​​​ ​​​into​​​   ​​​b ​​​ ​​​from​​​   ​​​a ​​​ ​​​where​​​   ​​​1<>1(仅用于SQlServer)​



​法二:​​​ ​​​select​​​   ​​​top​​​   ​​​0 * ​​​ ​​​into​​​   ​​​b ​​​ ​​​from​​​   ​​​a​



​2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)​



​insert​​​   ​​​into​​​   ​​​b(a, b, c) ​​​ ​​​select​​​   ​​​d,e,f ​​​ ​​​from​​​   ​​​b;​



​3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)​



​insert​​​   ​​​into​​​   ​​​b(a, b, c) ​​​ ​​​select​​​   ​​​d,e,f ​​​ ​​​from​​​   ​​​b ​​​ ​​​in​​​   ​​​‘具体数据库’ ​​​ ​​​where​​​   ​​​条件​



​例子:..​​​ ​​​from​​​   ​​​b ​​​ ​​​in​​​   ​​​'"&Server.MapPath(".")&"\data.mdb" &"'​​​   ​​​where​​​ ​​​..​



​4、说明:子查询(表名1:a 表名2:b)​



​select​​​   ​​​a,b,c ​​​ ​​​from​​​   ​​​a ​​​ ​​​where​​​   ​​​a ​​​ ​​​IN​​​   ​​​(​​​ ​​​select​​​   ​​​d ​​​ ​​​from​​​   ​​​b ) 或者: ​​​ ​​​select​​​   ​​​a,b,c ​​​ ​​​from​​​   ​​​a ​​​ ​​​where​​​   ​​​a ​​​ ​​​IN​​​   ​​​(1,2,3)​



​5、说明:显示文章、提交人和最后回复时间​



​select​​​   ​​​a.title,a.username,b.adddate ​​​ ​​​from​​​   ​​​table​​​   ​​​a,(​​​ ​​​select​​​   ​​​max​​​ ​​​(adddate) adddate ​​​ ​​​from​​​   ​​​table​​​   ​​​where​​​   ​​​table​​​ ​​​.title=a.title) b​



​6、说明:外连接查询(表名1:a 表名2:b)​



​select​​​   ​​​a.a, a.b, a.c, b.c, b.d, b.f ​​​ ​​​from​​​   ​​​a ​​​ ​​​LEFT​​​   ​​​OUT​​​   ​​​JOIN​​​   ​​​b ​​​ ​​​ON​​​   ​​​a.a = b.c​



​7、说明:在线视图查询(表名1:a )​



​select​​​   ​​​* ​​​ ​​​from​​​   ​​​(​​​ ​​​SELECT​​​   ​​​a,b,c ​​​ ​​​FROM​​​   ​​​a) T ​​​ ​​​where​​​   ​​​t.a > 1;​



​8、说明:​​​ ​​​between​​​ ​​​的用法,​​​ ​​​between​​​ ​​​限制查询数据范围时包括了边界值,​​​ ​​​not​​​   ​​​between​​​ ​​​不包括​



​select​​​   ​​​* ​​​ ​​​from​​​   ​​​table1 ​​​ ​​​where​​​   ​​​time​​​   ​​​between​​​   ​​​time1 ​​​ ​​​and​​​   ​​​time2​



​select​​​   ​​​a,b,c, ​​​ ​​​from​​​   ​​​table1 ​​​ ​​​where​​​   ​​​a ​​​ ​​​not​​​   ​​​between​​​   ​​​数值1 ​​​ ​​​and​​​   ​​​数值2​



​9、说明:​​​ ​​​in​​​   ​​​的使用方法​



​select​​​   ​​​* ​​​ ​​​from​​​   ​​​table1 ​​​ ​​​where​​​   ​​​a [​​​ ​​​not​​​ ​​​] ​​​ ​​​in​​​   ​​​(‘值1’,’值2’,’值4’,’值6’)​



​10、说明:两张关联表,删除主表中已经在副表中没有的信息​



​delete​​​   ​​​from​​​   ​​​table1 ​​​ ​​​where​​​   ​​​not​​​   ​​​exists ( ​​​ ​​​select​​​   ​​​* ​​​ ​​​from​​​   ​​​table2 ​​​ ​​​where​​​   ​​​table1.field1=table2.field1 )​



​11、说明:四表联查问题:​



​select​​​   ​​​* ​​​ ​​​from​​​   ​​​a ​​​ ​​​left​​​   ​​​inner​​​   ​​​join​​​   ​​​b ​​​ ​​​on​​​   ​​​a.a=b.b ​​​ ​​​right​​​   ​​​inner​​​   ​​​join​​​   ​​​c ​​​ ​​​on​​​   ​​​a.a=c.c ​​​ ​​​inner​​​   ​​​join​​​   ​​​d ​​​ ​​​on​​​   ​​​a.a=d.d ​​​ ​​​where​​​   ​​​.....​



​12、说明:日程安排提前五分钟提醒​



​SQL: ​​​ ​​​select​​​   ​​​* ​​​ ​​​from​​​   ​​​日程安排 ​​​ ​​​where​​​   ​​​datediff(​​​ ​​​'minute'​​​ ​​​,f开始时间,getdate())>5​



​13、说明:一条sql 语句搞定数据库分页​



​select​​​   ​​​top​​​   ​​​10 b.* ​​​ ​​​from​​​   ​​​(​​​ ​​​select​​​   ​​​top​​​   ​​​20 主键字段,排序字段 ​​​ ​​​from​​​   ​​​表名 ​​​ ​​​order​​​   ​​​by​​​   ​​​排序字段 ​​​ ​​​desc​​​ ​​​) a,表名 b ​​​ ​​​where​​​   ​​​b.主键字段 = a.主键字段 ​​​ ​​​order​​​   ​​​by​​​   ​​​a.排序字段​



​具体实现:​



​关于数据库分页:​



​declare​​​   ​​​@start ​​​ ​​​int​​​ ​​​,@​​​ ​​​end​​​   ​​​int​



​@sql  nvarchar(600)​



​set​​​   ​​​@sql=’​​​ ​​​select​​​   ​​​top​​​ ​​​’+str(@​​​ ​​​end​​​ ​​​-@start+1)+’+​​​ ​​​from​​​   ​​​T ​​​ ​​​where​​​   ​​​rid ​​​ ​​​not​​​   ​​​in​​​ ​​​(​​​ ​​​select​​​   ​​​top​​​ ​​​’+str(@str-1)+’Rid ​​​ ​​​from​​​   ​​​T ​​​ ​​​where​​​   ​​​Rid>-1)’​



​exec​​​   ​​​sp_executesql @sql​



 



​注意:在​​​ ​​​top​​​ ​​​后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果​​​ ​​​top​​​ ​​​后还有具体的字段,这样做是非常有好处的。因为这样可以避免 ​​​ ​​​top​​​ ​​​的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)​



​14、说明:前10条记录​



​select​​​   ​​​top​​​   ​​​10 * form table1 ​​​ ​​​where​​​   ​​​范围​



​15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)​



​select​​​   ​​​a,b,c ​​​ ​​​from​​​   ​​​tablename ta ​​​ ​​​where​​​   ​​​a=(​​​ ​​​select​​​   ​​​max​​​ ​​​(a) ​​​ ​​​from​​​   ​​​tablename tb ​​​ ​​​where​​​   ​​​tb.b=ta.b)​



​16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表​



​(​​​ ​​​select​​​   ​​​a ​​​ ​​​from​​​   ​​​tableA ) ​​​ ​​​except​​​   ​​​(​​​ ​​​select​​​   ​​​a ​​​ ​​​from​​​   ​​​tableB) ​​​ ​​​except​​​   ​​​(​​​ ​​​select​​​   ​​​a ​​​ ​​​from​​​   ​​​tableC)​



​17、说明:随机取出10条数据​



​select​​​   ​​​top​​​   ​​​10 * ​​​ ​​​from​​​   ​​​tablename ​​​ ​​​order​​​   ​​​by​​​   ​​​newid()​



​18、说明:随机选择记录​



​select​​​   ​​​newid()​



​19、说明:删除重复记录​



​1),​​​ ​​​delete​​​   ​​​from​​​   ​​​tablename ​​​ ​​​where​​​   ​​​id ​​​ ​​​not​​​   ​​​in​​​   ​​​(​​​ ​​​select​​​   ​​​max​​​ ​​​(id) ​​​ ​​​from​​​   ​​​tablename ​​​ ​​​group​​​   ​​​by​​​   ​​​col1,col2,...)​



​2),​​​ ​​​select​​​   ​​​distinct​​​   ​​​* ​​​ ​​​into​​​   ​​​temp​​​   ​​​from​​​   ​​​tablename​



​delete​​​   ​​​from​​​   ​​​tablename​



​insert​​​   ​​​into​​​   ​​​tablename ​​​ ​​​select​​​   ​​​* ​​​ ​​​from​​​   ​​​temp​



​评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作​



​3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段​



​alter​​​   ​​​table​​​   ​​​tablename​



​--添加一个自增列​



​add​​​    ​​​column_b ​​​ ​​​int​​​   ​​​identity(1,1)​



​delete​​​   ​​​from​​​   ​​​tablename ​​​ ​​​where​​​   ​​​column_b ​​​ ​​​not​​​   ​​​in​​​ ​​​(​



​select​​​   ​​​max​​​ ​​​(column_b)  ​​​ ​​​from​​​   ​​​tablename ​​​ ​​​group​​​   ​​​by​​​   ​​​column1,column2,...)​



​alter​​​   ​​​table​​​   ​​​tablename ​​​ ​​​drop​​​   ​​​column​​​   ​​​column_b​



​20、说明:列出数据库里所有的表名​



​select​​​   ​​​name​​​   ​​​from​​​   ​​​sysobjects ​​​ ​​​where​​​   ​​​type=​​​ ​​​'U'​​​   ​​​// U代表用户​



​21、说明:列出表里的所有的列名​



​select​​​   ​​​name​​​   ​​​from​​​   ​​​syscolumns ​​​ ​​​where​​​   ​​​id=object_id(​​​ ​​​'TableName'​​​ ​​​)​



​22、说明:列示type、vender、pcs字段,以type字段排列,​​​ ​​​case​​​ ​​​可以方便地实现多重选择,类似​​​ ​​​select​​​   ​​​中的​​​ ​​​case​​​ ​​​。​



​select​​​   ​​​type,​​​ ​​​sum​​​ ​​​(​​​ ​​​case​​​   ​​​vender ​​​ ​​​when​​​   ​​​'A'​​​   ​​​then​​​   ​​​pcs ​​​ ​​​else​​​   ​​​0 ​​​ ​​​end​​​ ​​​),​​​ ​​​sum​​​ ​​​(​​​ ​​​case​​​   ​​​vender ​​​ ​​​when​​​   ​​​'C'​​​   ​​​then​​​   ​​​pcs ​​​ ​​​else​​​   ​​​0 ​​​ ​​​end​​​ ​​​),​​​ ​​​sum​​​ ​​​(​​​ ​​​case​​​   ​​​vender ​​​ ​​​when​​​   ​​​'B'​​​   ​​​then​​​   ​​​pcs ​​​ ​​​else​​​   ​​​0 ​​​ ​​​end​​​ ​​​) ​​​ ​​​FROM​​​   ​​​tablename ​​​ ​​​group​​​   ​​​by​​​   ​​​type​



 



​说明:几个高级查询运算词​



​A: ​​​ ​​​UNION​​​   ​​​运算符​



​UNION​​​   ​​​运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ​​​ ​​​ALL​​​   ​​​随 ​​​ ​​​UNION​​​   ​​​一起使用时(即 ​​​ ​​​UNION​​​   ​​​ALL​​​ ​​​),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。​



​B: ​​​ ​​​EXCEPT​​​   ​​​运算符​



​EXCEPT​​​   ​​​运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ​​​ ​​​ALL​​​   ​​​随 ​​​ ​​​EXCEPT​​​   ​​​一起使用时 (​​​ ​​​EXCEPT​​​   ​​​ALL​​​ ​​​),不消除重复行。​



​C: ​​​ ​​​INTERSECT​​​   ​​​运算符​



​INTERSECT​​​   ​​​运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ​​​ ​​​ALL​​​   ​​​随 ​​​ ​​​INTERSECT​​​   ​​​一起使用时 (​​​ ​​​INTERSECT​​​   ​​​ALL​​​ ​​​),不消除重复行。​



​注:使用运算词的几个查询结果行必须是一致的。​



​12、说明:使用外连接​



​A、​​​ ​​​left​​​   ​​​(​​​ ​​​outer​​​ ​​​) ​​​ ​​​join​​​ ​​​:​



​左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。​



​SQL: ​​​ ​​​select​​​   ​​​a.a, a.b, a.c, b.c, b.d, b.f ​​​ ​​​from​​​   ​​​a ​​​ ​​​LEFT​​​   ​​​OUT​​​   ​​​JOIN​​​   ​​​b ​​​ ​​​ON​​​   ​​​a.a = b.c​



​B:​​​ ​​​right​​​   ​​​(​​​ ​​​outer​​​ ​​​) ​​​ ​​​join​​​ ​​​:​



​右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。​



​C:​​​ ​​​full​​​ ​​​/​​​ ​​​cross​​​   ​​​(​​​ ​​​outer​​​ ​​​) ​​​ ​​​join​​​ ​​​:​



​全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。​



​12、分组:​​​ ​​​Group​​​   ​​​by​​​ ​​​:​



​一张表,一旦分组完成后,查询后只能得到组相关的信息。​



​组相关的信息:(统计信息) ​​​ ​​​count​​​ ​​​,​​​ ​​​sum​​​ ​​​,​​​ ​​​max​​​ ​​​,​​​ ​​​min​​​ ​​​,​​​ ​​​avg​​​    ​​​分组的标准)​



​在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据​



​在selecte统计函数中的字段,不能和普通的字段放在一起;​



​13、对数据库进行操作:​



​分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名​



​14.如何修改数据库的名称:​



​sp_renamedb ​​​ ​​​'old_name'​​​ ​​​, ​​​ ​​​'new_name'​

标签:语句,table1,tablename,说明,SQL,table,where,select,大全
From: https://blog.51cto.com/u_15458282/5873536

相关文章

  • mysql中performance_schema(三) 实践篇
     背景前一篇文章我们分析了performance_schema中每个表的用途,以及主要字段的含义,比较侧重于理论的介绍。这篇文章我主要从DBA的角度出发,详细介绍如何通过performance_schem......
  • mysql中CPU或内存利用率过高问题
    CPU利用率过高原因在MySQL使用过程中,出现CPU利用率过高甚至超过100%时,与数据库存在低效SQL或大量行锁冲突有非常大的关系,一般都是由于大量低效的SQL导致,出现行锁冲......
  • mysql中一条sql语句是如何执行的
    架构mysql是一种单进程多线程的架构,mysqlserver层的核心组件:连接器、查询缓存、分析器、优化器、执行器 一条sql语句是如何执行的 客户端发送一条查询给服务器服务器先检......
  • mysql中长事务详解
    什么是长事务运行时间比较长,长时间未提交的事务,也可以称之为大事务。这类事务往往会造成大量的阻塞和锁超时,容易造成主从延迟,要尽量避免使用长事务。下面我将演示下如何开启......
  • mysql中行锁、两阶段锁协议、死锁以及死锁检测
    行锁MySQL的行锁都是在引擎层实现的,但是MyISAM不支持行锁,意味着并发控制只能使用表锁,同一张表任何时刻只能被一个更新在执行,影响到业务并发度。InnoDB是支持行锁的,这也是......
  • SQL多表连接查询(详细实例)
    SQL多表连接查询(详细实例)本文主要列举两张和三张表来讲述多表连接查询。新建两张表:表1:student 截图如下:表2:course 截图如下:(此时这样建表只是为了演示连接SQL语句,当然实......
  • MySQL45讲笔记
    MySQL45https://funnylog.gitee.io/mysql45/原系列目录:01讲基础架构:一条SQL查询语句是如何执行的主要介绍MySQL分为Server层和存储引擎层两部分:Server层包括连接......
  • sql dvwa注入笔记
    union注入1、判断是否可以注入:单引号测试and测试由上判断可以得知存在SQL注入2、猜解字段长度orderby2orderby3可以猜到字段长度为23、爆数据库名、数据库版本......
  • SQL Server 还原数据库
    1、备份要还原的数据库   选择要备份的数据库,右键单击,任务——备份。2、备份完成后,将数据库还原3、新建一个空的数据库,比如Gsy_TestNew,将备份的数据库还原到这个......
  • 5分钟搞定 SQL Server 到 MySQL 数据迁移和同步
    简述SQLServer是一个值得信赖的老牌数据库系统,自从1988年由Microsoft、Sybase和Ashton-Tate三家公司共同推出之后就一直不断迭代更新。而如今我们提到SQLServer......