您的位置:新葡亰496net > 网络数据库 > 采访佳句,数据库小结1

采访佳句,数据库小结1

发布时间:2019-06-19 12:53编辑:网络数据库浏览(178)

     一、基础

    SQL 语句大全,sql语句大全

    始建数据库

    创建此前剖断该数据库是不是存在

    if exists (select * from sysdatabases where name='databaseName') 

    drop database databaseName

    go

    Create DATABASE databasename

    删除数据库

    drop database databasename

    备份sql server

    创设备份数据的 device

    USE master

    EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'

    --- 开端备份

    BACKUP DATABASE pubs TO testBack

    成立新表

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

    依据已部分表创设新表:

    A:go 

    use 原数据库名

    go 

    select * into 指标数据库名.dbo.目标表名 from 原表名(使用旧表创建新表)

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

    创设体系

    create sequence SIMON_SEQUENCE 

    minvalue 1 -- 最小值 

    maxvalue 999999999999999999999999999 -- 最大值

    start with 1 -- 开始值

    increment by 1 -- 每回加几
    cache 20;

    删除新表

    drop table tabname

    扩大多少个列

    Alter table tabname add colname coltype

    删除贰个列

    Alter table tabname drop column colname

    增多主键

    Alter table tabname add primary key(col)

    表达:删除主键:Alter table tabname drop primary key(col)

    创设索引

    create [unique] index idxname on tabname(col…。)

    删除索引

    采访佳句,数据库小结1。 drop index idxname on tabname

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

    创设视图

    create view viewname as select statement

    删除视图

    drop view viewname

     

    简单易行基本的sql语句

    (1) 数据记录筛选:

    sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

    sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"

    sql="select top 10 * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

    sql="select top 10 * from 数据表 order by 字段名 [desc]"

    sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"

    sql="select * from 数据表 where 字段名 between 值1 and 值2"

    (2) 更新数据记录:

    sql="update 数据表 set 字段名=字段值 where 条件表明式"

    sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

    (3) 删除数据记录:

    sql="delete from 数据表 where 条件表明式" 

    sql="delete from 数据表" (将数据表全数记录删除)

    (4) 加多数据记录:

    sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"

    sql="insert into 目的数据表 select * from 源数据表" (把源数据表的记录增添到目的数据表)

    (5) 数据记录总括函数:

    AVG(字段名)          得出三个表格栏平均值

    COUNT(*;字段名)   对数码行数的总结或对某一栏有值的数额行数总计

    MAX(字段名)         猎取多少个表格栏最大的值

    MIN(字段名)          获得三个表格栏最小的值

    SUM(字段名)         把数据栏的值相加

    引用以上函数的法子:

    sql="select sum(字段名) as 别称 from 数据表 where 条件表达式"

    set rs=conn.excute(sql)

    用 rs("别称") 获取总结的值,别的函数运用同上。

    查询去除重复值:select distinct * from table1

     

    多少个高等查询运算词

    A: UNION 运算符

    UNION 运算符通过整合其余五个结果表(比方TABLE1 和TABLE2)并消去表中其它重复行而派生出一个结实表。当 ALL 随UNION 一齐行使时(即UNION ALL),不清除重复行。二种状态下,派生表的每一行不是源于TABLE1 便是出自TABLE2。

    B: EXCEPT 运算符

    EXCEPT 运算符通过包含全数在TABLE1 中但不在TABLE第22中学的行并消除全部重复行而派生出三个结实表。当ALL 随EXCEPT 一同行使时(EXCEPT ALL),不免除重复行。
    C:INTERSECT 运算符

    INTE大切诺基SECT 运算符通过只囊括TABLE1 和TABLE2中都某些行并消除全体重复行而派生出三个结出表。当ALL 随INTEQashqaiSECT 一齐行使时(INTE陆风X8SECT ALL),不拔除重复行。

    注:使用运算词的多少个查询结果行必须是大同小异的。

     

    使用外接连

    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 outer join

    全外连接:不唯有囊括符号连接表的相配行,还包涵四个一连表中的全部记录。

     

    SQL  高级词

    1、TOP 子句用于规定要回到的笔录的数量

    选用头两条记下:

    SELECT TOP 2 * FROM Persons

    选取 50% 的记录:

    SELECT TOP 50 PERCENT * FROM Persons

    2、LIKE 操作符用于在 WHERE 子句中搜索列中的钦点形式。

    提示:"%" 可用以定义通配符(形式中缺少的字母)。NOT LIKE

    3、SQL 通配符

    在寻找数据库中的数据时,SQL 通配符能够替代二个或七个字符。

    SQL 通配符必须与 LIKE 运算符一同使用。

    在 SQL 中,可利用以下通配符:

    通配符

    描述

    %

    替代一个或多个字符

    _

    仅替代一个字符

    [charlist]

    字符列中的任何单一字符

    [^charlist]或者[!charlist]

    不在字符列中的任何单一字符

     

     

     

     

     

     

      

     

    SELECT * FROM Persons WHERE City LIKE 'Ne%'

    SELECT * FROM Persons WHERE City LIKE '%lond%'

    SELECT * FROM Persons WHERE FirstName LIKE '_eorge'

    SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'

    选择居住的城市以 "A" 或 "L" 或 "N" 开首的人:

    SELECT * FROM Persons WHERE City LIKE '[ALN]%'

    选拔居住的城市不以 "A" 或 "L" 或 "N" 开端的人:

    SELECT * FROM Persons WHERE City LIKE '[!ALN]%'

    4、IN 操作符允许大家在 WHERE 子句中规定多个值。

    采取姓氏为 亚当斯 和 Carter 的人:

    SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')

    5、BETWEEN ... AND 会选用介于三个值时期的数据范围。那几个值能够是数值、文本只怕日期。

    SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'

    使用方面包车型客车事例显示范围之外的人,请使用 NOT 操作符:

    SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'

    6、Alias 为列名称和表名称内定别名(Alias)。

    SELECT column_name(s) FROM table_name AS alias_name

    7、join 用于依照四个或多少个表中的列之间的关联,从那一个表中查询数据。

    哪个人订购了出品,并且他们订购了怎么样产品?

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P

    • JOIN/INNE中华V JOIN : 尽管表中有起码叁个相称,则重临行
    • LEFT JOIN: 就算右表中绝非相配,也从左表重返全部的行
    • RAV4IGHT JOIN: 尽管左表中从未相称,也从右表重回全部的行
    • FULL JOIN: 只要个中一个表中存在特别,就重回行

    8、UNION 操作符用于合并多个或八个 SELECT 语句的结果集。

    请注意,UNION 内部的 SELECT 语句必须具备一样数量的列。列也必须具有相似的数据类型。同不常候,每条 SELECT 语句中的列的逐条必须一致。

    批注:默许地,UNION 操作符采纳分歧的值。假诺同意再度的值,请使用 UNION ALL。

    9、SELECT INTO 语句从二个表中选拔数据,然后把数量插入另六个表中

    通过从 "Persons" 表中领取居住在 "Beijing" 的人的音讯,创建了三个含有多少个列的名称为 "Persons_backup" 的表:

    SELECT LastName,Firstname INTO Persons_backup FROM PersonsWHERE City='Beijing'

    10、SQL 约束 (Constraints)

    • NOT NULL
    • UNIQUE
    • PRIMARY KEY
    • FOREIGN KEY
    • CHECK
    • DEFAULT 

     MySQL Date 函数

    上边的表格列出了 MySQL 中最首要的内建日期函数:

    函数

    描述

    NOW()

    返回当前的日期和时间

    CURDATE()

    返回当前的日期

    CURTIME()

    返回当前的时间

    DATE()

    提取日期或日期/时间表达式的日期部分

    EXTRACT()

    返回日期/时间按的单独部分

    DATE_ADD()

    给日期添加指定的时间间隔

    DATE_SUB()

    从日期减去指定的时间间隔

    DATEDIFF()

    返回两个日期之间的天数

    DATE_FORMAT()

    用不同的格式显示日期/时间

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    MySQL 数据类型

    在 MySQL 中,有三种重视的类别:文本、数字和日期/时间项目。

    Text 类型:

    数据类型

    描述

    CHAR(size)

    保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。

    VARCHAR(size)

    保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。
    注释:如果值的长度大于 255,则被转换为 TEXT 类型。

    TINYTEXT

    存放最大长度为 255 个字符的字符串。

    TEXT

    存放最大长度为 65,535 个字符的字符串。

    BLOB

    用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。

    MEDIUMTEXT

    存放最大长度为 16,777,215 个字符的字符串。

    MEDIUMBLOB

    用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。

    LONGTEXT

    存放最大长度为 4,294,967,295 个字符的字符串。

    LONGBLOB

    用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。

    ENUM(x,y,z,etc.)

    允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。
    注释:这些值是按照你输入的顺序存储的。
    可以按照此格式输入可能的值:ENUM('X','Y','Z')

    SET

    与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     Number 类型:

    数据类型

    描述

    TINYINT(size)

    -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。

    SMALLINT(size)

    -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。

    MEDIUMINT(size)

    -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。

    INT(size)

    -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。

    BIGINT(size)

    -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。

    FLOAT(size,d)

    带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

    DOUBLE(size,d)

    带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。

    DECIMAL(size,d)

    作为字符串存储的 DOUBLE 类型,允许固定的小数点。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    * 那些整数类型具有额外的选项 UNSIGNED。平日,整数可以是负数或正数。假如加多 UNSIGNED 属性,那么范围将从 0 早先,而不是某些负数。

    Date 类型:

    数据类型

    描述

    DATE()

    日期。格式:YYYY-MM-DD
    注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'

    DATETIME()

    *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS
    注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

    TIMESTAMP()

    *时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS
    注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

    TIME()

    时间。格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59'

    YEAR()

    2 位或 4 位格式的年。
    注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    * 尽管 DATETIME 和 TIMESTAMP 重返一样的格式,它们的做事方法很不一样。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把笔者设置为当下的日子和岁月。

    TIMESTAMP 也接受分歧的格式,例如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。

    SQL  函数

    AVG 函数重返数值列的平均值。NULL 值不包罗在测算中。

    COUNT(column_name) 函数重临钦赐列的值的数据(NULL 不计入)。

    FI瑞虎ST() 函数再次回到钦定的字段中第二个记录的值。

    LAST() 函数重临钦命的字段中最后多个记录的值。

    OLacrosseDE中华V BY 语句对记录进行排序。

    MAX 函数重临一列中的最大值。NULL 值不包含在测算中。

    MIN 函数重回一列中的最小值。NULL 值不包蕴在总括中。

    SUM 函数再次回到数值列的总数(总额)。

    GROUP BY 语句用于结合合计函数,依照三个或三个列对结果集举行分组。

    HAVING 子句原因是,WHERE 关键字不能与和煦函数一齐行使。

    UCASE 函数把字段的值调换为大写。

    LCASE 函数把字段的值转换为小写。

    MID 函数用于从文本字段中领取字符

    SELECT MID(column_name,start[,length]) FROM table_name

    参数

    描述

    column_name

    必需。要提取字符的字段。

    start

    必需。规定开始位置(起始值是 1)。

    length

    可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

     

     

     

     

     

     

     

    SQL MID() 实例大家具备上面那几个 "Persons" 表:

    Id

    LastName

    FirstName

    Address

    City

    1

    Adams

    John

    Oxford Street

    London

    2

    Bush

    George

    Fifth Avenue

    New York

    3

    Carter

    Thomas

    Changan Street

    Beijing

     

     

     

     

     

     

     

    当今,大家希望从 "City" 列中领取前 3 个字符。

    大家利用如下 SQL 语句:

    SELECT MID(City,1,3) as SmallCity FROM Persons结果集类似这样:

    SmallCity

    Lon

    New

    Bei

     

     

     

     

     

     

     

    LEN 函数再次来到文本字段中值的长短。

    ROUND 函数用于把数值字段舍入为钦命的小数位数。

    SELECT ROUND(column_name,decimals) FROM table_name 

    NOW 函数再次来到当前的日子和岁月。

    FORMAT 函数用于对字段的显得进行格式化。

     

    删除主表未有的音信

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

    四表联合检查难点

    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 .....

    随机抽取10条数据

    select top 10 * from tablename order by newid()

    随机采取记录

    select newid()

    语句大全,sql语句大全 成立数据库 成立在此之前判别该数据库是或不是存在 if exists (select * fromsysdatabaseswhere name='databaseName') drop database databaseN...

    SQL语句先前写的时候,很轻便把一部分异样的用法忘记,作者故意整理了一下SQL语句操作,方便本身写SQL时便于一点,想贴上来,一齐看看,同期愿意大家能共同多多提意见,也给笔者留部分更加好的清词丽句,整理一份《精妙SQL速查手册》,不吝赐教!

    • SQL SELECT 语句
    ylbtech-SQL Server-Doc-Help:SQL Server-SQL语句大全经典

    1、创设数据库

    一、基础

    SELECT 语句用于从表中精选数据。

     SQL Server 流程调整中的 While 语句。

    CREATE DATABASE database-name

    1、表达:创设数据库
    CREATE DATABASE database-name
    2、表达:删除数据库
    drop database dbname
    3、说明:备份sql server
    --- 成立 备份数据的 device
    USE master
    EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_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
    注:列增添后将无法去除。DB第22中学列加上后数据类型也不能改换,唯一能更换的是充实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 田野同志1 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
    11、表达:多少个高端查询运算词
    A: UNION 运算符
    UNION 运算符通过整合别的多个结果表(譬喻 TABLE1 和 TABLE2)并消去表中其余重复行而派生出贰个结实表。当 ALL 随 UNION 一同行使时(即 UNION ALL),不免除重复行。三种意况下,派生表的每一行不是源于 TABLE1 正是出自 TABLE2。
    B: EXCEPT 运算符
    EXCEPT 运算符通过包蕴持有在 TABLE1 中但不在 TABLE第22中学的行并化解全部重复行而派生出三个结实表。当 ALL 随 EXCEPT 一同行使时 (EXCEPT ALL),不解决重复行。
    C: INTERSECT 运算符
    INTETucsonSECT 运算符通过只包蕴 TABLE1 和 TABLE第22中学都部分行并消除全数重复行而派生出二个结出表。当 ALL 随 INTECR-VSECT 一同使用时 (INTE奔驰G级SECT 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 outer join:
    全外连接:不仅仅包罗符号连接表的相称行,还包蕴四个一连表中的全数记录。

    结果被贮存在多个结实表中(称为结果集)。

    1,SQL语句大全经典返回顶部

    2、删除数据库

    二、提升

    SQL SELECT 语法

    1、表达:创立数据库
    CREATE DATABASE database-name

    2**、表明:删除数据库
    drop database dbname 3、说明:备份sql server
    --- 创造备份数据的 device
    USE master
    EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'
    --- 开始 备份
    BACKUP DATABASE pubs TO testBack 4、表达:创建新表
    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)**

     drop database dbname

    1、表达:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
    法一:select * into b from a where 1<>1
    法二:select top 0 * into b from a

    SELECT 列名称 FROM 表名称

    凭仗已有的表创建新表:
    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 :列扩展后将无法去除。DB第22中学列加上后数据类型也无法改造,唯一能改换的是增加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 田野(field)1 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 11、表明:多少个高端查询运算词
    A: UNION 运算符
    UNION 运算符通过结合别的三个结果表(举例 TABLE1 和 TABLE2)并消去表中任何重复行而派生出四个结出表。当 ALL 随 UNION 一齐使用时(即 UNION ALL),不免除重复行。三种意况下,派生表的每一行不是来源于 TABLE1 正是来源于 TABLE2。
    B: EXCEPT 运算符
    EXCEPT运算符通过包蕴全体在 TABLE1 中但不在 TABLE第22中学的行并化解全数重复行而派生出贰个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C: INTERSECT 运算符
    INTERSECT运算符通过只包括TABLE1 和 TABLE2 中都一些行并化解全体重复行而派生出八个结果表。当ALL随 INTE奥迪Q5SECT 一同使用时 (INTE君越SECT 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计算函数中的字段,不能够和常常的字段放在一齐;**

    3、备份sql server

    2、表明:拷贝表(拷贝数据,源表名:a 指标表名:b) (Access可用)
    insert into b(a, b, c) select d,e,f from b;

    以及:

    13、对数据库实行操作:
       分离数据库
    sp_detach_db;附加数据库sp_attach_db后接表明,附加需求总体的路线名
    14.**怎么修改数据库的名目:**
    sp_renamedb 'old_name', 'new_name'

     --- 创制 备份数据的 device

    3、表明:跨数据库之间表的正片(具体数额运用相对路线) (Access可用)
    insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
    例子:..from b in '"&Server.MapPath(".")&"data.mdb" &"' where..

    SELECT * FROM 表名称

     

    USE master

    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)

    讲明:SQL 语句对大小写不灵活。SELECT 等效于 select。

    二、提升

    EXEC sp_addumpdevice 'disk',’testBack', :mssql7backupMyNwind_1.dat' --- 开始 备份

    5、表明:显示小说、提交人和终极回复时间
    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

    SQL SELECT 实例

    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;

    BACKUP DATABASE pubs TO testBack

    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

    如需获得名字为"LastName" 和 "FirstName" 的列的剧情(从名叫 "Persons" 的数量库表),请使用类似那样的 SELECT 语句:

    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、创设新表

    7、表明:在线视图查询(表名1:a )
    select * from (SELECT a,b,c FROM a) T where t.a > 1;

    SELECT LastName,FirstName FROM Persons

    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)

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

    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

    "Persons" 表:

    5、表明:呈现小说、提交人和终极回复时间 select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

    例子:

    9、表明:in 的行使方法
    select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

    Id

    LastName

    FirstName

    Address

    City

    1

    Adams

    John

    Oxford Street

    London

    2

    Bush

    George

    Fifth Avenue

    New York

    3

    Carter

    Thomas

    Changan Street

    Beijing

    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

    CREATE TABLE tableA(

    10、表达:两张关联表,删除主表中曾经在副表中从不的音信
    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

    结果:

    7、表达:在线视图查询(表名1:a ) select * from (SELECT a,b,c FROM a) T where t.a > 1;

        [id] [int] NOT NULL PRIMARY KEY,

    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 .....

    LastName

    FirstName

    Adams

    John

    Bush

    George

    Carter

    Thomas

    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

        [Name][nvarchar](50) NOT NULL,

    12、表达:日程安顿提早五分钟提示
    SQL: select * from 日程安顿 where datediff('minute',f开端时间,getdate())>5

    SQL SELECT * 实例

    9、表达:in 的选择办法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

        [Age] [int] NOT NULL,)

    13、表明:一条sql 语句解决数据库分页
    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

    现行反革命我们愿意从 "Persons" 表中挑选全部的列。

    10、表达:两张关联表,删除主表中早就在副表中一向不的消息 delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

    听闻已有的表创制新表:

    14、说明:前10条记录
    select top 10 * form table1 where 范围

    请使用标识 * 代替列的称号,就像这么:

    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 .....

    A:create table tab_new like tab_old (使用旧表创制新表SQL server2009不可能)

    15、表明:选取在每一组b值一样的数量中对应的a最大的笔录的全部新闻(类似那样的用法能够用来论坛每月排名的榜单,每月销路广产品深入分析,按学科成绩排行,等等.)
    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

    SELECT * FROM Persons

    12、表达:日程陈设提早五分钟提示 SQL: select * from 日程安排 where datediff('minute',f起头时间,getdate())>5

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

    16、说明:蕴含富有在 TableA 中但不在 TableB和TableC 中的行并解决全数重复行而派生出叁个结实表
    (select a from tableA ) except (select a from tableB) except (select a from tableC)

    提示:星号(*)是采用所有列的火速格局。

    13**、说明:一条sql 话语化解数据库分页** select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
    实际落到实处:
    有关数据库分页:

    C: select *into  tableAnew from tableA(复制表结商谈表数据。旧表创立新表无主键。SQL server二零零六卡宴2能够用 亲测)

    17、表达:随机抽出10条数据
    select top 10 * from tablename order by newid()

    结果:

      declare @start int,@end int

    D:select * into table3 from tableA where 1=2;(复制表数据,主键复制可是去)

    18、表明:随机选取记录
    select newid()

    Id

    LastName

    FirstName

    Address

    City

    1

    Adams

    John

    Oxford Street

    London

    2

    Bush

    George

    Fifth Avenue

    New York

    3

    Carter

    Thomas

    Changan Street

    Beijing

      @sql  nvarchar(600)

    E: insert into table3 select * from tableA where id=1;(假使表存在,导入数据)

    19、表明:删除重复记录
    Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

    • SQL SELECT DISTINCT 语句

      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)’

    F: select * into table5 from tableA where 1<>1;(旧表创建新表,只有表结构)

    20、表达:列出数据Curry装有的表名
    select name from sysobjects where type='U'

    在表中,或者会包罗重复值。那并平常,可是,一时你只怕希望仅仅列出分裂(distinct)的值。

      exec sp_executesql @sql

    5、删除新表

    21、表达:列出表里的拥有的
    select name from syscolumns where id=object_id('TableName')

    最首要词 DISTINCT 用于重临唯一分歧的值。

    注意:在top后不能一贯跟八个变量,所以在实质上选取中唯有这么的拓展超常规的拍卖。Rid为二个标记列,假如top后还大概有具体的字段,那样做是老大有好处的。因为那样能够制止 top的字段假诺是逻辑索引的,查询的结果后实际表中的不均等(逻辑索引中的数占领一点都不小也许和数据表中的不一样样,而查询时若是处在索引则第一查询索引)

    drop table tabname

    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
    来得结果:
    type vender pcs
    电脑 A 1
    电脑 A 1
    光盘 B 2
    光盘 A 2
    手机 B 3
    手机 C 3

    语法:

    14、说明:前10条记录 select top 10 * form table1 where 范围

    6、增添三个列

    23、表达:开头化表table1

    SELECT DISTINCT 列名称 FROM 表名称

    15、表明:选用在每一组b值一样的数目中对应的a最大的记录的装有音讯(类似那样的用法能够用来论坛每月排行的榜单,每月抢手产品深入分析,按学科成绩排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

    Alter table tabname add column col type

    TRUNCATE TABLE table1

    使用 DISTINCT 关键词

    16、表明:包罗具有在 TableA中但不在 TableB和TableC中的行并化解全部重复行而派生出三个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC)

    注:列扩展后将不可能去除。DB第22中学列加上后数据类型也不可能更动,唯一能改变的是充实varchar类型的长短。

    24、说明:选择从10到15的记录
    select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

    如果要从 "Company" 列中挑选全部的值,大家供给动用 SELECT 语句:

    17、表达:随机抽出10条数据 select top 10 * from tablename order by newid()

    7、增多主键:

    三、技巧

    SELECT Company FROM Orders

    18、表明:随机接纳记录 select newid()

     Alter table tabname add primary key(col)

    1、1=1,1=2的运用,在SQL语句组合时用的较多

    "Orders"表:

    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),比方:在三个表面表中程导弹入数据,由于有些原因首先次只导入了一局地,但很难决断具体地方,那样只有在下二遍全部导入,那样也就产生好多再次的字段,怎么样删除重复字段

    证实:删除主键:

    “where 1=1” 是意味选择一切   “where 1=2”全体不选,
    如:
    if @strWhere !=''
    begin
    set @strSQL = 'select count(*) as Total from [' @tblName '] where ' @strWhere end
    else
    begin
    set @strSQL = 'select count(*) as Total from [' @tblName ']'
    end

    Company

    OrderNumber

    IBM

    3532

    W3School

    2356

    Apple

    4698

    W3School

    6953

    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

     Alter table tabname drop primary key(col)

    作者们能够直接写成
    set @strSQL = 'select count(*) as Total from [' @tblName '] where 1=1 安定 ' @strWhere
    2、减弱数据库
    --重建索引
    DBCC REINDEX
    DBCC INDEXDEFRAG
    --裁减数据和日志
    DBCC SHRINKDB
    DBCC SHRINKFILE

    结果:

    20、表达:列出数据Curry有着的表名 select name from sysobjects where type='U' // U代表用户

    8、创立索引:

    3、压缩数据库
    dbcc shrinkdatabase(dbname)

    Company

    IBM

    W3School

    Apple

    W3School

    21、表明:列出表里的富有的列名 select name from syscolumns where id=object_id('TableName')

    create [unique] index idxname on tabname(col….) 删除索引:drop index idxname

    4、转移数据库给新用户以已存在用户权限
    exec sp_change_users_login 'update_one','newname','oldname'
    go

    请小心,在结果聚集,W3School 被列出了四遍。

    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
    呈现结果:
    type vender pcs
    电脑 A 1
    电脑 A 1
    光盘 B 2
    光盘 A 2
    手机 B 3
    手机 C 3

    注:索引是不足改变的,想更动必须删除重新建。

    5、检查备份集
    RESTORE VERIFYONLY from disk='E:dvbbs.bak'

    如需从 Company" 列中仅选取唯一差别的值,大家必要选取 SELECT DISTINCT 语句:

    23、表达:初步化表table1

    9、创设视图:

    6、修复数据库
    ALTER DATABASE [dvbbs] SET SINGLE_USER
    GO
    DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
    GO
    ALTER DATABASE [dvbbs] SET MULTI_USER
    GO

    SELECT DISTINCT Company FROM Orders

    TRUNCATE TABLE table1

    create view viewname as select statement

    7、日志清除
    SET NOCOUNT ON
    DECLARE @LogicalFileName sysname,
            @MaxMinutes INT,
            @NewSize INT

    结果:

    24、说明:选择从10到15的记录 select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

     删除视图:drop view viewname

    USE     tablename             -- 要操作的数量库名
    SELECT  @LogicalFileName = 'tablename_log',  -- 日志文件名
    @MaxMinutes = 10,               -- Limit on time allowed to wrap log.
            @NewSize = 1                  -- 你想设定的日志文件的大大小小(M)

    Company

    IBM

    W3School

    Apple

    三、技巧

    10、选用,插入,删除,更新,查找,排序,总的数量,求和,平均,最大,最小基本的sql语句

    -- Setup / initialize
    DECLARE @OriginalSize int
    SELECT @OriginalSize = size
      FROM sysfiles
      WHERE name = @LogicalFileName
    SELECT 'Original Size of ' db_name() ' LOG is '
            CONVERT(VARCHAR(30),@OriginalSize) ' 8K pages or '
            CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) 'MB'
      FROM sysfiles
      WHERE name = @LogicalFileName
    CREATE TABLE DummyTrans
      (DummyColumn char (8000) not null)

    • WHERE 子句

    1、1=1,1=2的选拔,在SQL语句组合时用的较多

    选择:select * from table1 where 范围

    DECLARE @Counter   INT,
            @StartTime DATETIME,
            @TruncLog  VARCHAR(255)
    SELECT  @StartTime = GETDATE(),
            @TruncLog = 'BACKUP LOG ' db_name() ' WITH TRUNCATE_ONLY'

    如需有条件地从表中选用数据,可将 WHERE 子句加多到 SELECT 语句。

    “where 1=1” 是象征选择一切    “where 1=2”全体不选,
    如:
    if @strWhere !=''
    begin
    set @strSQL = 'select count(*) as Total from [' @tblName '] where ' @strWhere
    end
    else
    begin
    set @strSQL = 'select count(*) as Total from [' @tblName ']'
    end

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

    DBCC SHRINKFILE (@LogicalFileName, @NewSize)
    EXEC (@TruncLog)
    -- Wrap the log if necessary.
    WHILE     @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
          AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) 
          AND (@OriginalSize * 8 /1024) > @NewSize 
      BEGIN -- Outer loop.
        SELECT @Counter = 0
        WHILE  ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
          BEGIN -- update
            INSERT DummyTrans VALUES ('Fill Log') 
            DELETE DummyTrans
            SELECT @Counter = @Counter 1
          END  
        EXEC (@TruncLog) 
      END  
    SELECT 'Final Size of ' db_name() ' LOG is '
            CONVERT(VARCHAR(30),size) ' 8K pages or '
            CONVERT(VARCHAR(30),(size*8/1024)) 'MB'
      FROM sysfiles
      WHERE name = @LogicalFileName
    DROP TABLE DummyTrans
    SET NOCOUNT OFF

    语法

    我们得以一向写成

    删除:delete from table1 where 范围

    8、说明:更换有个别表
    exec sp_changeobjectowner 'tablename','dbo'

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

    谬误!未找到目录项。
    set @strSQL = 'select count(*) as Total from [' @tblName '] where 1=1 安定 ' @strWhere 2、减弱数据库
    --重建索引
    DBCC REINDEX
    DBCC INDEXDEFRAG
    --减弱数据和日志
    DBCC SHRINKDB
    DBCC SHRINKFILE

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

    9、存款和储蓄更动全部表

    上面包车型客车演算符可在 WHERE 子句中选择:

    3、压缩数据库 dbcc shrinkdatabase(dbname)

    查找:select * from table1 where 田野同志1 like ’%value1%’ ---like的语法非常的小巧,查资料

    CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
     @OldOwner as NVARCHAR(128),
     @NewOwner as NVARCHAR(128)
    AS

    操作符

    描述

    =

    等于

    <>

    不等于

    >

    大于

    <

    小于

    >=

    大于等于

    <=

    小于等于

    BETWEEN

    在某个范围内

    LIKE

    搜索某种模式

    4、转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname'
    go

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

    DECLARE @Name   as NVARCHAR(128)
    DECLARE @Owner  as NVARCHAR(128)
    DECLARE @OwnerName  as NVARCHAR(128)

    注解:在好几版本的 SQL 中,操作符 <> 可以写为 !=。

    5、检查备份集 RESTORE VERIFYONLY from disk='E:dvbbs.bak'

    总数:select count as totalcount from table,

    DECLARE curObject CURSOR FOR
     select 'Name'   = name,
      'Owner'   = user_name(uid)
     from sysobjects
     where user_name(uid)=@OldOwner
     order by name

    使用 WHERE 子句

    6、修复数据库 ALTER DATABASE [dvbbs] SET SINGLE_USER
    GO
    DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
    GO
    ALTER DATABASE [dvbbs] SET MULTI_USER
    GO

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

    OPEN  curObject
    FETCH NEXT FROM curObject INTO @Name, @Owner
    WHILE(@@FETCH_STATUS=0)
    BEGIN    
     if @Owner=@OldOwner
     begin
      set @OwnerName = @OldOwner '.' rtrim(@Name)
      exec sp_changeobjectowner @OwnerName, @NewOwner
     end
    -- select @name,@NewOwner,@OldOwner

    只要只盼望选拔居住在都市 "Beijing" 中的人,我们供给向 SELECT 语句增添 WHERE 子句:

    7、日志清除 SET NOCOUNT ON
    DECLARE @LogicalFileName sysname,
     @MaxMinutes INT,
     @NewSize INT

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

     FETCH NEXT FROM curObject INTO @Name, @Owner
    END

    SELECT * FROM Persons WHERE City='Beijing'

    USE tablename -- 要操作的数据库名
    SELECT  @LogicalFileName = 'tablename_log', -- 日志文件名
    @MaxMinutes = 10, -- Limit on time allowed to wrap log.
     @NewSize = 1  -- 你想设定的日志文件的高低(M)

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

    close curObject
    deallocate curObject
    GO

    "Persons" 表

    Setup / initialize
    DECLARE @OriginalSize int
    SELECT @OriginalSize = size
     FROM sysfiles
     WHERE name = @LogicalFileName
    SELECT 'Original Size of ' db_name() ' LOG is '
     CONVERT(VARCHAR(30),@OriginalSize) ' 8K pages or '
     CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) 'MB'
     FROM sysfiles
     WHERE name = @LogicalFileName
    CREATE TABLE DummyTrans
     (DummyColumn char (8000) not null)

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

    10、SQL SETiguanVECRUISER中从来循环写入数据
    declare @i int
    set @i=1
    while @i<30
    begin
       insert into test (userid) values(@i)
       set @i=@i 1
    end

    LastName

    FirstName

    Address

    City

    Year

    Adams

    John

    Oxford Street

    London

    1970

    Bush

    George

    Fifth Avenue

    New York

    1975

    Carter

    Thomas

    Changan Street

    Beijing

    1980

    Gates

    Bill

    Xuanwumen 10

    Beijing

    1985

    DECLARE @Counter    INT,
     @StartTime DATETIME,
     @TruncLog   VARCHAR(255)
    SELECT @StartTime = GETDATE(),
     @TruncLog = 'BACKUP LOG ' db_name() ' WITH TRUNCATE_ONLY'

    11、多少个高端查询运算词

    结果:

    DBCC SHRINKFILE (@LogicalFileName, @NewSize)
    EXEC (@TruncLog)
    -- Wrap the log if necessary.
    WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
     AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)  
     AND (@OriginalSize * 8 /1024) > @NewSize  
     BEGIN -- Outer loop.
    SELECT @Counter = 0
     WHILE   ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
     BEGIN -- update
     INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans
     SELECT @Counter = @Counter 1
     END
     EXEC (@TruncLog)  
     END
    SELECT 'Final Size of ' db_name() ' LOG is '
     CONVERT(VARCHAR(30),size) ' 8K pages or '
     CONVERT(VARCHAR(30),(size*8/1024)) 'MB'
     FROM sysfiles
     WHERE name = @LogicalFileName
    DROP TABLE DummyTrans
    SET NOCOUNT OFF

    A: UNION 运算符

    LastName

    FirstName

    Address

    City

    Year

    Carter

    Thomas

    Changan Street

    Beijing

    1980

    Gates

    Bill

    Xuanwumen 10

    Beijing

    1985

    8、表明:更动有些表 exec sp_changeobjectowner 'tablename','dbo'

    UNION 运算符通过结合其余三个结实表(举例 TABLE1 和 TABLE2)并消去表中其余重复行而派生出三个结出表。当 ALL 随 UNION 一齐行使时(即 UNION ALL),不拔除重复行。三种情景下,派生表的每一行不是出自 TABLE1 正是发源 TABLE2。

    引号的使用

    9、存款和储蓄改换全数表

    B: EXCEPT 运算符

    请留意,咱们在例子中的条件值周边选拔的是单引号。

    CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
    @OldOwner as NVARCHAR(128),
    @NewOwner as NVARCHAR(128)
    AS

    EXCEPT 运算符通过包罗全体在 TABLE1 中但不在 TABLE2中的行并消除全体重复行而派生出两个结果表。当 ALL 随 EXCEPT 一齐利用时 (EXCEPT ALL),不排除重复行。

    SQL 使用单引号来围绕文本值(大部分数据库系统也承受双引号)。假设是数值,请不要使用引号。

    DECLARE @Name    as NVARCHAR(128)
    DECLARE @Owner   as NVARCHAR(128)
    DECLARE @OwnerName   as NVARCHAR(128)

    C: INTERSECT 运算符

    文本值:

    DECLARE curObject CURSOR FOR
    select 'Name'    = name,
       'Owner'    = user_name(uid)
    from sysobjects
    where user_name(uid)=@OldOwner
    order by name

    NTE途锐SECT 运算符通过只囊括 TABLE1 和 TABLE第22中学都有的行并消除全部重复行而派生出三个结果表。当 ALL 随 INTE奥迪Q5SECT 一同使用时 (INTE凯雷德SECT ALL),不排除重复行。 注:使用运算词的多少个查询结果行必须是均等的

    那是没有错的:

    OPEN   curObject
    FETCH NEXT FROM curObject INTO @Name, @Owner
    WHILE(@@FETCH_STATUS=0)
    BEGIN     
    if @Owner=@OldOwner
    begin
       set @OwnerName = @OldOwner '.' rtrim(@Name)
       exec sp_changeobjectowner @OwnerName, @NewOwner
    end
    -- select @name,@NewOwner,@OldOwner

    12、使用外接连

    SELECT * FROM Persons WHERE FirstName='Bush'

    FETCH NEXT FROM curObject INTO @Name, @Owner
    END

    A、left (outer) join:

     

    close curObject
    deallocate curObject
    GO

    左外连接(左连接):结果集几包罗连接表的相称行,也囊括左连接表的有着行。 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

    那是张冠李戴的:

    10、SQL SEXC60VE卡宴中平昔循环写入数据 declare @i int
    set @i=1
    while @i<30
    begin
        insert into test (userid) values(@i)
        set @i=@i 1
    end
    案例**
    **有如下表,供给就裱中保有沒有及格的成績,在历次增長0.1的基礎上,使他們剛好及格:

         在行使left join时,on和where条件的分别如下:1、 on条件是在改变一时表时使用的基准,它不管on中的条件是还是不是为真,都会重返左侧表中的记录。能够领略为,左表记录保留,右表不知足条件的填充为null 2、where条件是在不经常表生成好后,再对有的时候表实行过

    SELECT * FROM Persons WHERE FirstName=Bush

        Name     score

    滤的尺码。那时早已远非left join的含义(必须回到左侧表的记录)了,条件不为真的就整个过滤掉。

    数值:

        Zhangshan   80

     

    那是准确的:

        Lishi       59

    B:right (outer) join:

    SELECT * FROM Persons WHERE Year>1965

        Wangwu      50

    右外连接(右连接):结果集既包罗连接表的相称连接行,也包括右连接表的持有

     

        Songquan    69

    行。

    那是不当的:

    while((select min(score) from tb_table)<60)

    C:full/cross (outer) join:

    SELECT * FROM Persons WHERE Year>'1965'

    begin

    全外连接:不止包蕴符号连接表的相配行,还蕴涵多个接二连三表中的全数记录。

    • ORDER BY 语句

    update tb_table set score =score*1.01

    13、分组:Group by:

    OCRUISERDEGL450 BY 语句用于根据钦定的列对结果集举办排序。

    where score<60

    一张表,一旦分组 完毕后,查询后只好赢得组相关的新闻。

    O途观DEENVISION BY 语句暗中同意根据升序对记录实行排序。

    if  (select min(score) from tb_table)>60

    组相关的消息:(总计音讯) count,sum,max,min,avg 分组的行业内部)

    假令你希望依据降序对记录举办排序,能够选择DESC 关键字。

      break

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

    土生土长的表 (用在例子中的):

     else

    在selecte总计函数中的字段,不可能和普通字段放在一同;

    Orders 表:

        continue

    14、对数据库实行操作:

    Company

    OrderNumber

    IBM

    3532

    W3School

    2356

    Apple

    4698

    W3School

    6953

    end

      分离数据库:EXEC sp_detach_db DatabaseName

    实例 1

     

    外加数据库:sp_attach_db后接注解,

    以字母顺序突显公司名称:

    作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    内需完整的路线名

    SELECT Company, OrderNumber FROM Orders ORDER BY Company

    15.怎样修改数据库的名称:

    sp_renamedb 'old_name', 'new_name’

    结果:

    16、左匹配、模糊、右匹配、全匹配

    左匹配:左侧伊始是字段条件的例如1左匹配,正是1方始的字段

    右相配:左侧发轫是基准的

    Company

    OrderNumber

    Apple

    4698

    IBM

    3532

    W3School

    6953

    W3School

    2356

    17、SQL模糊查询条件的两种相配方式

    实例 2

    ①、%:表示任性0个或五个字符。可匹配大肆类型和尺寸的字符,有个别情形下纵然华语,请使用七个百分号(%%)表示:

    例如 SELECT * FROM [user] WHERE u_name LIKE '%三%'
    将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐僧”等等有“三”的笔录全寻找来。

    再比方说需求搜索u_name中既有“三”又有“猫”的记录,请使用and条件
    SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

    再例如 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
    固然能寻找出“三脚猫”,但不能够招来出符合条件的“张猫三”。备注:%三:表示左相配。三%:表示右相称。%三%:表示模糊查询

    ②、_ : 表示任性单个字符。相配单个任性字符,它常用来界定表明式的字符长度语句:

    例如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
    只找出“唐三藏”,这样u_name为三个字且中间贰个字是“三”的;

    再例如 SELECT * FROM [user] WHERE u_name LIKE '三__'
    只搜索“三脚猫”那样name为四个字且首个字是“三”的;

    ③、[ ] :表示括号内所列字符中的三个(类似正则表明式)。钦点二个字符、字符串或限制,供给所相称对象为它们中的任三个。

    例如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
    将找寻“张三”、“李三”、“王三”(而不是“张李王三”);

    再例如 [ ] 内有一层层字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
    SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
    将找出“老1”、“老2”、……、“老9”;

    若果要找“-”字符请将其放在第二个人:'张三[-1-9]';

    Oracle 10g以上的本子用法为:

    select * from flow_user where regexp_like(username, '[张王李]飞')

    ④、[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 同样,但它须要所相配对象为钦命字符以外的任一个字符。

    例如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
    将找寻不姓“张”、“李”、“王”的“赵三”、“孙三”等;
    再例如 SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]'
    将排除“老1”到“老4”,寻找“老5”、“老6”、……、“老9”。

    注:oracle like 不帮助正则,你能够动用补助like的正则regexp_like

    以字母逐一展现集团名称(Company),并以数字顺序显示顺序号(OrderNumber):

    ⑤、查询内容涵盖通配符时

    * 表示查找的是持有音信,比方select * from tbl_user 

    鉴于通配符的原因,导致我们查询特殊字符“%”、“_”、“[”的话语无法平常完成,而把极度字符用“[ ]”括起便可平常查询。据此大家写出以下函数:
    function sqlencode(str)
    str=replace(str,"[","[[]") '此句一定要在最前
    str=replace(str,"_","[_]")
    str=replace(str,"%","[%]")

    sqlencode=str
    end function

    注:
    在查询前将待查字符串先经该函数处理就能够,并且在网页上接连数据库用到那类的询问语句时侯要专注:
    例如 Select * FROM user Where name LIKE '老[^1-4]'

    SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

    18、select isnull(max(字段1 1),1) from table

     从table中询问“字段1 1”的最大值,倘诺“字段1 1”的最大值为null,则值取1,不然取“字段1 1”的最大值。

    结果:

    Company

    OrderNumber

    Apple

    4698

    IBM

    3532

    W3School

    2356

    W3School

    6953

    实例 3

    以逆字母顺序展现集团名称:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

    结果:

    Company

    OrderNumber

    W3School

    6953

    W3School

    2356

    IBM

    3532

    Apple

    4698

    实例 4

    以逆字母逐一展现集团名称,并以数字顺序展现顺序号:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

    结果:

    Company

    OrderNumber

    W3School

    2356

    W3School

    6953

    IBM

    3532

    Apple

    4698

    注意:在以上的结果中有五个十一分的同盟社名称 (W3School)。只有那一次,在第一列中有同样的值时,第二列是以升序排列的。如若第一列中有个别值为 nulls 时,境况也是这样的

    - LIKE 操作符

    LIKE 操作符用于在 WHERE 子句中寻觅列中的钦点形式。

    SQL LIKE 操作符语法

    SELECT column_name(s)

    FROM table_name

    WHERE column_name LIKE pattern

    原来的表 (用在例子中的):

    Persons 表:

    Id

    LastName

    FirstName

    Address

    City

    1

    Adams

    John

    Oxford Street

    London

    2

    Bush

    George

    Fifth Avenue

    New York

    3

    Carter

    Thomas

    Changan Street

    Beijing

    LIKE 操作符实例

    例子 1

    当今,我们意在从地点的 "Persons" 表中接纳居住在以 "N" 开首的城郭里的人:

    大家得以行使上边包车型地铁SELECT 语句:

    SELECT * FROM Persons

    WHERE City LIKE 'N%'

    唤醒:"%" 可用来定义通配符(情势中紧缺的假名)。

    结果集:

    Id

    LastName

    FirstName

    Address

    City

    2

    Bush

    George

    Fifth Avenue

    New York

    例子 2

    接下去,我们愿意从 "Persons" 表中选择居住在以 "g" 结尾的都市里的人:

    大家能够应用下面包车型大巴SELECT 语句:

    SELECT * FROM Persons

    WHERE City LIKE '%g'

    结果集:

    Id

    LastName

    FirstName

    Address

    City

    3

    Carter

    Thomas

    Changan Street

    Beijing

    例子 3

    接下去,大家希望从 "Persons" 表中精选居住在含蓄 "lon" 的都会里的人:

    咱俩能够使用上面的SELECT 语句:

    SELECT * FROM Persons

    WHERE City LIKE '%lon%'

    结果集:

    Id

    LastName

    FirstName

    Address

    City

    1

    Adams

    John

    Oxford Street

    London

    例子 4

    透过利用 NOT 关键字,大家得以从 "Persons" 表中选择居住在不包含 "lon" 的都市里的人:

    我们能够使用上边的SELECT 语句:

    SELECT * FROM Persons

    WHERE City NOT LIKE '%lon%'

    结果集:

    Id

    LastName

    FirstName

    Address

    City

    2

    Bush

    George

    Fifth Avenue

    New York

    3

    Carter

    Thomas

    Changan Street

    Beijing

     

    • INSERT INTO 语句

    INSERT INTO 语句用于向表格中插入新的行。

    语法

    INSERT INTO 表名称 VALUES (值1, 值2,....)

    小编们也能够内定所要插入数据的列:

    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

    插入新的行

    "Persons" 表:

    LastName

    FirstName

    Address

    City

    Carter

    Thomas

    Changan Street

    Beijing

    SQL 语句:

    INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

    结果:

    LastName

    FirstName

    Address

    City

    Carter

    Thomas

    Changan Street

    Beijing

    Gates

    Bill

    Xuanwumen 10

    Beijing

    在钦点的列中插入数据

    "Persons" 表:

    LastName

    FirstName

    Address

    City

    Carter

    Thomas

    Changan Street

    Beijing

    Gates

    Bill

    Xuanwumen 10

    Beijing

    SQL 语句:

    INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

    结果:

    LastName

    FirstName

    Address

    City

    Carter

    Thomas

    Changan Street

    Beijing

    Gates

    Bill

    Xuanwumen 10

    Beijing

    Wilson

      

    Champs-Elysees

      

    • Update 语句

    Update 语句用于修改表中的数据。

    语法:

    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

    Person:

    LastName

    FirstName

    Address

    City

    Gates

    Bill

    Xuanwumen 10

    Beijing

    Wilson

      

    Champs-Elysees

      

    履新某一行中的贰个列

    大家为 lastname 是 "威尔逊" 的人增进 firstname:

    UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'

    结果:

    LastName

    FirstName

    Address

    City

    Gates

    Bill

    Xuanwumen 10

    Beijing

    Wilson

    Fred

    Champs-Elysees

      

    立异某一行中的若干列

    我们会修改地址(address),并加上城市称号(city):

    UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'

    WHERE LastName = 'Wilson'

    结果:

    LastName

    FirstName

    Address

    City

    Gates

    Bill

    Xuanwumen 10

    Beijing

    Wilson

    Fred

    Zhongshan 23

    Nanjing

    • DELETE 语句

    DELETE 语句用于删除表中的行。

    语法

    DELETE FROM 表名称 WHERE 列名称 = 值

    Person:

    LastName

    FirstName

    Address

    City

    Gates

    Bill

    Xuanwumen 10

    Beijing

    Wilson

    Fred

    Zhongshan 23

    Nanjing

    删除某行

    "Fred 威尔逊" 会被剔除:

    DELETE FROM Person WHERE LastName = 'Wilson'

    结果:

    LastName

    FirstName

    Address

    City

    Gates

    Bill

    Xuanwumen 10

    Beijing

    除去全部行

    能够在不删除表的境况下删除全数的行。那象征表的组织、属性和目录都以全部的:

    DELETE FROM table_name

    或者:

    DELETE * FROM table_name

    用SQL语句加多删减修改字段
    1.增添字段
    alter table docdsp add dspcode
    char(200)
    2.剔除字段
    ALTER TABLE table_NAME DROP COLUMN
    column_NAME
    3.修改字段类型
    ALTER TABLE table_name ALTER COLUMN
    column_name new_data_type
    4.sp_rename 改名

    变动当前数据库中用户创制对象(如表、列或用户定义数据类型)的称呼。
    语法
    sp_rename [ @objname = ]
    'object_name' ,
    [ @newname = ] 'new_name'
    [ , [ @objtype =
    ] 'object_type' ]
    如:EXEC sp_rename
    'newname','PartStock'
    5.sp_help 展现表的部分核激情况
    sp_help 'object_name'
    如:EXEC sp_help 'PartStock'
    6.剖断某一表PartStock中字段PartVelocity是不是留存
    if
    exists (select * from syscolumns where
    id=object_id('PartStock') and name='PartVelocity')
    print
    'PartVelocity exists'
    else print 'PartVelocity not
    exists'
    另法:
    推断表的存在性:
    select count(*) from sysobjects where type='U'
    and name='你的表名'
    判别字段的存在性:
    select count(*) from syscolumns
    where
    id = (select id from sysobjects where type='U' and name='你的表名')

    and name = '你要咬定的字段名'

    二个小例子
    --要是要拍卖的表名字为:
    tb
    --判别要增添列的表中是或不是有主键
    if exists(select 1 from sysobjects where
    parent_obj=object_id('tb') and xtype='PK')
    begin
    print
    '表中曾经有主键,列只好做为普通列增加'
    --增加int类型的列,默许值为0
    alter table tb add 列名 int default
    0
    end
    else
    begin
    print '表中无主键,增多主键列'
    --增添int类型的列,默许值为0
    alter
    table tb add 列名 int primary key default 0
    end
    7.随机读取若干条记下
    Access语法:SELECT top 10 * From 表名 ORDER BY
    Rnd(id)
    Sql server:select top n * from 表名 order by newid()

    mysql select * From 表名 Order By rand() Limit n
    8.证实:日程布署提早五分钟提示
    SQL:
    select * from 日程安插 where datediff(minute,f开端时间,getdate())>5
    9.前10条记录
    select top 10 * form table1 where 范围
    10.囊括全部在 TableA 中但不在 TableB和TableC 中的行并消除全数重复行而派生出一个结果表
    (select a
    from tableA ) except (select a from tableB) except (select a from tableC)
    11.验证:随机抽出10条数据
    select top 10 * from tablename order by newid()
    12.列出数据Curry有所的表名
    select name from sysobjects where type=U
    13.列出表里的装有的字段名
    select name from syscolumns where
    id=object_id(TableName)
    14.认证:列示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
    15.表达:先导化表table1
    TRUNCATE
    TABLE table1
    16.申明:多少个高等查询运算词
      A: UNION 运算符
      UNION 运算符通过整合别的五个结实表(举例
    TABLE1 和 TABLE2)并消去表中其余重复行而派生出二个结实表。当 ALL 随 UNION 一齐利用时(即 UNION
    ALL),不免除重复行。三种景况下,派生表的每一行不是源于 TABLE1 正是源于 TABLE2。
      B: EXCEPT 运算符
      EXCEPT 运算符通过包蕴全部在 TABLE1 中但不在 TABLE2
    中的行并解决全部重复行而派生出四个结实表。当 ALL 随 EXCEPT 一同行使时 (EXCEPT ALL),不免除重复行。
      C: INTERSECT 运算符
      INTE库罗德SECT 运算符通过只囊括 TABLE1 和 TABLE2
    中都有个别行并消除全数重复行而派生出多少个结果表。当 ALL 随 INTELANDSECT 一同利用时 (INTELANDSECT
    ALL),不化解重复行。
      注:使用运算词的多少个查询结果行必须是一律的。

    17.证实:在线视图查询(表名1:a )
    select * from (SELECT a,b,c FROM a) T where
    t.a > 1;
    18.认证: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
    19.验证:in 的应用办法
    select * from table1 where a [not] in
    ('值1','值2','值4','值6')
    20.申明:两张关联表,删除主表中曾经在副表中尚无的新闻
    delete from table1 where not exists (
    select * from table2 where table1.field1=table2.field1
    )
    21. 认证:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
      法一:select * into b from a
    where 1<>1
      法二:select top 0 * into b from a
    22.表达:拷贝表(拷贝数据,源表名:a 目的表名:b) (Access可用)
    insert into b(a, b, c)
    select d,e,f from b;
    23.证实:跨数据库之间表的正片(具体数额采纳相对路线) (Access可用)
    insert into b(a, b, c)
    select d,e,f from b in '具体数据库' where 条件
      例子:..from b in
    "&Server.MapPath(".")&"/data.mdb" &" where..
    24.创制数据库

    CREATE DATABASE database-name
    25.表达:删除数据库
    drop database dbname
    26.说明:备份sql server
      --- 创建
    备份数据的 device
    USE master
    EXEC sp_addumpdevice disk, testBack,
    c:/mssql7backup/MyNwind_1.dat
      --- 起头备份
    BACKUP DATABASE pubs TO testBack
    27.表达:创立新表
    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
    28.说明:
      删除新表:drop table tabname
    29.说明:
      增添几个列:Alter table tabname add column col
    type
      注:列扩大后将不能够去除。DB第22中学列加上后数据类型也不能够退换,唯一能更换的是增添varchar类型的长度。
    30.说明:
      加多主键:Alter table tabname add primary key(col)
      说明:
      删除主键:Alter table tabname drop primary key(col)
    31.说明:
      创立索引:create [unique] index idxname on tabname(col….)
      删除索引:drop index idxname
      注:索引是不足退换的,想改造必须删除重新建。
    32.说明:
      创设视图:create view viewname as select statement
      删除视图:drop view
    viewname
    33.认证:多少个轻易的中央的sql语句
      选择:select * from table1 where 范围
      插入:insert into
    table1(field1,field2) values(value1,value2)
    新葡亰496net,  删除:delete from table1 where
    范围
      更新:update table1 set field1=value1 where 条件
      查找:select * from table1
    where 田野1 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

    本文由新葡亰496net发布于网络数据库,转载请注明出处:采访佳句,数据库小结1

    关键词:

上一篇:数据库二进制包安装,图文详解

下一篇:没有了