当前位置: 代码迷 >> SQL >> sqlserver 下令一览表
  详细解决方案

sqlserver 下令一览表

热度:137   发布时间:2016-05-05 15:13:59.0
sqlserver 命令一览表

sqlserver 命令一览表??

?

1.创建数据库:

? ? create database Student

? ? on

? ? (

? ???name=Student_Data,

? ???filename='f:\data\student_Data.mdf',

? ???size=10,

? ???maxsize=20,

? ???filegrowth=5

? ? )

? ? log on

? ? (

? ???name=Student_Log,

? ???filename='f:\data\student_Log.ldf',

? ???size=10,

? ???maxsize=20,

? ???filegrowth=5

? ? )

2.修改数据库:

? ?1>添加数据文件:

? ?? ?? ?alter database student

? ?? ?? ?add file

? ?? ?? ?(

? ?? ?? ?name=Student_Data2,

? ?? ?? ?filename='f:\data\student_Data2.ndf',

? ?? ?? ?size=10,

? ?? ?? ?maxsize=20,

? ?? ?? ?filegrowth=5

? ?? ?? ?)

? ?2>修改数据文件:

? ?? ?? ?alter database student

? ?? ?? ?modify file

? ?? ?? ?(

? ?? ?? ?name=Student_Data,

? ?? ?? ?size=15

? ?? ?? ?)

3.删除数据库:

? ?? ?? ?drop database student

4.设置数据库选项:

? ?? ?? ?sp_dboption student,'single user',true

5.修改数据库名:

? ?? ?? ?sp_renamedb 'student','students'

6.查看服务器上的数据库:

? ?? ?? ?sp_databases

7.查看数据库上的文件:

? ?? ?? ?sp_helpdb

? ?? ?? ?sp_helpdb students

8.压缩数据库:

? ?? ?? ? sp_dboption student,'single user',true

? ?? ?? ? go

? ?? ?? ? DBCC shrinkdatabase(students,50)

9.断开与连接数据库:

? ?? ?1>断开:? ? sp_detach_db 'students'

? ?? ?2>连接:? ? sp_attach_db 'students','f:\students_data.mdf'

10.备份和恢复数据库

? ?? ?1>备份:? ? backup database students to disk='h:\students_back'

? ?? ?2>恢复:? ? restore database students from disk='h:\students_back'

二.表

1.创建表:(先建主键表,再建外键表)

? ?? ? ? ? ? ? create table xsxxb

? ? ? ? ? ? (? ? ? ?

? ? ? ? ? ???xh char(10) primary key,

? ? ? ? ? ???xm char(8),

? ? ? ? ? ???xb char(2),

? ???? ? ? ???csrq datetime,

? ? ? ? ? ???dh char(20)

? ? ? ? ? ? )

? ? ? ? go

? ? ? ? create table kmxxb

? ? ? ? (

? ? ? ???kmbh char(10),

? ? ? ???kmmc char(20),

??? ? ? ? primary key(kmbh)

? ? ? ? )

? ? ? ? go

? ? ? ? create table xscjb

? ? ? ? (

? ? ? ? xh char(10),

??? ? ? ? kmbh char(10),

??? ? ? ? fs int,

??? ? ? ? foreign key(xh)references xsxxb,

? ?? ???foreign key(kmbh)references kmxxb

? ? ? ? )

2.修改表:

? ?1>增加字段

? ?? ?? ?alter table xsxxb

? ?? ?? ?add bz char(50) null

? ?2>删除字段

? ?? ?? ?alter table xsxxb

? ?? ?? ?drop column bz

3.删除表:(先删外键表,再删主键表)

? ?? ?drop table xscjb

? ?? ?drop table xsxxb

? ?? ?drop table kmxxb

4.复制一个表:

? ?select * into xsxxb2 from xsxxb

5.创建临时表2009年4月9日 - 白云 - 白云#,##)

? ?? ? create table #xsxxb

? ? ? ? ? ? (? ? ? ?

? ? ? ? ? ???xh char(10) primary key,

? ? ? ? ? ???xm char(8),

? ? ? ? ? ???xb char(2),

? ???? ? ? ???csrq datetime,

? ? ? ? ? ???dh char(20)

? ? ? ? ? ? )

?

? ?? ? select * from #xsxxb

6.创建用户定义数据类型:

? ?? ???use students

? ?? ???go

? ?? ???sp_addtype sts,'varchar(20)','not null','dbo'

?

? ?? ???sp_addtype sts,datatime,'null','dbo'

7.删除用户定义数据类型:

? ?? ???sp_droptype sts

三.操作表中的数据

? ?1>使用 INSERT 语句向表中插入数据:

? ?? ?? ?? ?insert into xsxxb values('008','','','')

? ?2>使用 UPDATE 语句修改表中的数据:

? ?? ?? ?? ?update xsxxb set xm='不' where xh='001'

? ?3>使用 DELETE 语句删除表中的数据:

? ?? ?? ?? ?delete from xsxxb where xh='001'

? ?? ?? ?? ?delete from xsxxb where xh in('002','004')

? ?? ?? ?? ?delete from xsxxb

四.系统内置函数的使用

1.聚合函数:

? ?1>AVG(表达式)? ???返回表达式中所有值的平均值。仅用于数字列并自动忽略 null 值。

? ?2>COUNT(表达式)? ?返回表达式中非 null 值的数量。可用于数字和字符列。

? ?3>COUNT(*)? ?? ?? ? 返回表中的行数(包括有 null 值的行)。

? ?4>MAX(表达式)? ???返回表达式中的最大值,忽略 null 值。可用于数字、字符和日期时间列。

? ?5>MIN(表达式)? ???返回表达式中最小值,忽略 null 值。可用于数字、字符和日期时间列。

? ?6>SUM(表达式)? ???返回表达式中所有值的总和,忽略 null 值。仅用于数字列。

2.转型函数:

? ?CONVERT(datatype[(length)], expression [,style])

? ?? ? select convert(char(20),getdate(),101)

3.日期函数:

? ?1>GETDATE()? ?? ?? ?当前的系统日期。

? ?2>DATEADD(datepart, number, date)? ?返回带有指定数字 (number) 的日期 (date),

? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???该数字添加到指定的日期部分 (date part)??。

? ?? ? select dateadd(yy,2,getdate())??(yy,mm,dd,ww,hh,mi,ss)

? ?3>DATEDIFF(datepart, date1, date2)? ?返回两个日期中指定的日期部分之间的不同.

? ?? ? select datediff(yy,getdate(),'2008/09/09')

? ?4>DATENAME(datepart, date)? ?? ?? ? 返回日期中日期部分的字符串形式。

? ?5>DATEPART(datepart, date)? ?? ?? ???返回日期中指定的日期部分的整数形式。

4.数学函数:

5.字符串函数:

? ???rtrim()

? ???ltrim()

? ???ltrim(rtrim())

? ???space(2)

? ???substring(列名,开始位置,长度)

? ???right(列名,长度)

? ???left(列名,长度)

? ???stuff(列名,开始位置,长度,字符串)

五.表的连接

1.内部连接:

? ?? ???select xsxxb.xh,xm,xscjb.fs from xsxxb inner join xscjb

? ?? ?? ?on xsxxb.xh=xscjb.xh

2.多表连接:

? ?? ???select xsxxb.xh,xm,kmmc,fs from xsxxb inner join xscjb

? ?? ???on xsxxb.xh=xscjb.xh

? ?? ???join??kmxxb

? ?? ???on xscjb.kmbh=kmxxb.kmbh

3.左外部连接:

? ?? ? select xsxxb.xh,xm,fs from xsxxb left outer join xscjb

? ?? ? on xsxxb.xh=xscjb.xh

4.右外部连接:

? ?? ? (与左外部连接相反)

5.完全外部连接:

? ?? ? select xsxxb.xh,xm,fs from xsxxb full join xscjb

? ?? ? on xsxxb.xh=xscjb.xh

6.交叉连接:

? ?? ?select xm,fs from xsxxb cross join xscjb

7.自连接:

? ?? ? select A.xh,A.fs,B.xh from xscjb A join xscjb B

? ?? ? on A.kmbh=B.kmbh

? ?? ? where A.xh>B.xh

8.联合运算符(union):

? ?? ? select xh,xm from xsxxb

? ?? ? union? ?

? ?? ? select xh,xm from xsxxb2

六.数据汇总

1.排序:? ?(Asc升,desc降)

? ?? ? select * from xscjb order by fs Asc

2.分组2009年4月9日 - 白云 - 白云group by all 包含不符合指定的where条件的组,但将它们设为null)

?

? ?? ???select xh,sum(fs) as tol from xscjb

? ?? ???where xh='004'

? ?? ???group by all xh

3.指定分组后,组的条件(having):

? ?? ?? ? select xh,sum(fs) as tol from xscjb

? ?? ?? ? group by xh

? ?? ?? ? having sum(fs)>80

4.compute汇总:

? ?? ?? ? select xh,fs from xscjb

? ?? ?? ? order by xh

? ?? ?? ? compute sum(fs)

5.compute by汇总:? ?

? ?? ?? ? select xh,fs from xscjb

? ?? ?? ? order by xh

? ?? ?? ? compute sum(fs) by xh

? ?? ?? ? compute sum(fs)

6.rollup和cube函数:

? ?rollup()??对group by子句中的列按不同的等级进行分组.

?

? ?? ?? ???select xh,sum(fs) as tol from xscjb

? ?? ?? ?? ?group by xh with rollup

? ?cube()? ? 是rollup的扩展.

七.数据的查询

1.SELECT 语句的数据检索形式

? ? 1>显示所有列和行:

? ?? ?? ?SELECT * FROM authors

? ? 2>显示所有行和特定的列:

? ?? ?? ?SELECT pub_name, city FROM publishers

? ? 3>显示限定范围的行:

? ?? ?? ?SELECT stor_id, qty, title_id FROM sales

? ?? ?? ?? ? WHERE qty BETWEEN 20 AND 50

? ? 4>显示与值列表相匹配的行:

? ?? ?? ?SELECT * FROM publishers

? ?? ?? ?? ? WHERE state IN ('CA', 'TX', 'NY')

? ? 5>根据未知值显示行:

? ?? ?? ?SELECT price, title FROM titles

? ?? ?? ?? ? WHERE price IS NULL

? ? 6>显示/隐藏重复的值:

? ?? ?? ?SELECT DISTINCT city FROM authors

? ? 7>显示根据多个搜索条件查询的结果:

? ?? ?? ?SELECT title FROM titles

? ?? ?? ?? ? WHERE pub_id = 0736 AND type = 'business'

2.SELECT 语句中使用的关键字:

? ? BETWEEN 测试值是否在两值之间

? ? EXISTS 测试值是否存在

? ? IN 测试在一定范围内的值

? ? LIKE 测试类似这个值的值

? ? IS NULL 测试是否为 null 值

3.查询通配符的使用:

? ???(%,_,[],^)

? ?1> select * from xsxxb where xm like '张%'

? ?2> select??* from xsxxb where xm like '_花%'

? ?3> select * from xsxxb where xm like '_[花娇]%'

? ?4> select * from xsxxb where xm like '_[^花娇]%'

4.简单子查询:

? ?1>使用返回单个值的子查询:

? ?? ?? ?select xm,xb,csrq,dh from xsxxb

? ?? ?? ? where xh=(select xh from xscjb where fs=70)

5.相关子查询:

? ?1>使用返回多行单列的子查询:

? ?? ?? ?select xm,xb,csrq,dh from xsxxb

? ?? ?? ? where xh in(select xh from xscjb where fs>70)

? ?2>使用exists关键字验证存在性的子查询:

? ?? ?? ???select xm,xb,csrq,dh from xsxxb

? ?? ?? ?? ? where exists (select xh from xscjb where kmbh='3' and fs>70

? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?and xh=xsxxb.xh )

? ?3>使用not exists关键字验证存在性的子查询:

? ?? ?? ?? ?select xm,xb,csrq,dh from xsxxb

? ?? ?? ?? ? where not exists (select xh from xscjb where kmbh='3' and fs>70

? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?and xh=xsxxb.xh )

八.流程控制语句

? ?1>声明和使用变量:

? ?? ?declare @i int

? ?? ?set @i=3

? ?? ?select @i=(select fs from xscjb where xh='001')

? ?2>begin...end 语句块:

? ?? ?begin

? ?? ? print'dfdfdfd'

? ?? ?end

? ?3>条件语句:

? ?? ?if (select fs from xscjb where xh='002') >70

? ?? ???begin

? ?? ?? ?print'dfdfedfd'

? ?? ???end

? ?? ?else if (select fs from xscjb where xh='002') <60

? ?? ???begin

? ?? ?? ?print'888888'

? ?? ???end

? ?? ?else

? ?? ???begin

? ?? ?? ?print'99999999'

? ?? ???end

? ?4>分支语句:

? ?? ???select gg=case fs? ?'gg是别名

? ?? ?? ? when 60 then 'df'

? ?? ?? ? when 70 then 'xdf'

? ?? ?? ? when 80 then 'yb'

? ?? ?? ? when 90 then 'xgf'

? ?? ?? ?else 'mf'

? ?? ?? ?end

? ?? ???from xscjb

? ?5>循环语句:

? ?? ?declare @i int

? ?? ?declare @sum int

? ?? ?? ? set @i=0

? ?? ?? ? set @sum=0

? ?? ? while @i<10

? ?? ???begin

? ?? ???set @[email protected][email protected]

? ?? ???set @[email protected]+1

? ?? ???end

? ?? ? print @sum

? ?6>标签:

? ?? ? select * from xsxxb

? ?? ? goto A

? ?? ? select * from kmxxb

? ?? ? A:

? ?? ???select * from xscjb

九.视图的使用

1.创建视图:

? ?1>创建基于表中指定列的视图:

? ?? ?? ?? ?create view GetFs

? ?? ?? ?? ?as

? ?? ?? ?? ?select xh,fs from xscjb

? ?2>创建基于表中指定行的视图:

? ?? ?? ?? ?create view GetFs2

? ?? ?? ?? ?as

? ?? ?? ?? ?select xh,fs from xscjb where fs=80

? ?3>创建基于表中汇总信息的视图:

? ?? ?? ?? ?create view GetFs3

? ?? ?? ?? ?as

? ?? ?? ?? ?select xh,sum(fs) as tol from xscjb

? ?? ?? ?? ?group by xh

? ?4>创建基于多个表的视图:

? ?? ?? ?? ?create view GetFs4

? ?? ?? ?? ?as

? ?? ?? ?? ?select xsxxb.xh,xm,kmxxb.kmmc,xscjb.fs from xsxxb,kmxxb,xscjb

? ?? ?? ?? ?where xsxxb.xh=xscjb.xh and xscjb.kmbh=kmxxb.kmbh

? ?5>创建基于视图的视图:

? ?? ?? ?? ?create view GetFs5

? ?? ?? ?? ?as

? ?? ?? ?? ?select * from GetFs4

? ?? ?? ?? ? where fs>75

2.更改视图:

? ?? ?? ???(把create换为alter)

3.删除视图:

? ?1>删除视图中的数据:

? ?? ?? ?delete GetFs2

? ?2>删除视图:

? ?? ?? ?drop view GetFs2

4.通过视图修改数据:

? ???create view GetFs6

? ???as

? ???select xh,xm from xsxxb

? ?1>插入数据:

? ?? ? insert into GetFs6 values('005','黄三')

? ?2>更新数据:

? ?? ? update GetFs6 set xh='006' where xh='005'

? ?3>删除数据

? ?? ? delete GetFs6 where xh='006'

十.存储过程与触发器

1.创建存储过程与执行存储过程:

? ?1>创建一个不带参数的存储过程:

? ?? ???create proc Display_orders

? ?? ???as

? ?? ???select * from orders

? ?2>创建一个带输入参数的存储过程:

? ?? ???create proc Display_orders

? ?? [email protected] char(20)

? ?? ???as

? ?? ???select * from orders where [email protected]

? ?3>创建一个带输入,输出参数的存储过程:

? ?? ???create proc Display_Name

? ?? [email protected] char(20) output

? ?? ???as

? ?? ???select @Name=(select xm from xsxxb,kmxxb,xscjb where xsxxb.xh=xscjb.xh and

? ?? ?? ?? ?? ?? ?? ???fs=(select max(fs) from xscjb where kmbh=(select kmbh from kmxxb

? ?? ?? ?? ?? ?? ?? ?? ?? ???where [email protected]))

? ?? ?? ?? ?? ?? ?? ? and kmxxb.kmbh=(select kmbh from kmxxb where [email protected]))

? ?? ?? ?? ?? ?? ?from xsxxb,kmxxb,xscjb

? ?? ???print @Name

2.更改存储过程:

? ?? ? (把create换为alter)

3.删除存储过程:

? ?? ?drop proc Display_Name

4.创建触发器:

? ?1>创建INSERT 触发器:

? ?? ???create trigger checkFs

? ?? ???on??xscjb

? ?? ???for insert

? ?? ???as

? ?? ?? ?if(select fs from inserted)<50

? ?? ?? ?begin

? ?? ?? ?print'bu neng cha!'

? ?? ?? ?rollback tran

? ?? ?? ?end

? ?2>创建UPDATE 触发器:

? ?? ???create trigger NoUPdateXm

? ?? ???on xsxxb

? ?? ???for update

? ?? ???as

? ?? ???if update(xm)

? ?? ?? ?begin

? ?? ?? ?print'bu neng geng xing xm!'

? ?? ?? ?rollback tran

? ?? ?? ?end

? ?3>创建DELETE 触发器:

? ?? ???create trigger NoDelete002

? ?? ???on xsxxb

? ?? ???for delete

? ?? ???as

? ?? ???if (select xh from deleted)='002'

? ?? ?? ?begin

? ?? ?? ?print'bu neng shang chu xh wei 002!'

? ?? ?? ?rollback tran

? ?? ?? ?end

5.更改触发器:

? ?? ?? ? (把create换为alter)

6.删除触发器:

? ?? ???drop trigger NoDelete002

7.禁用和启用触发器:

? ? 1> 禁用:

? ?? ???alter table xsxxb

? ?? ???disable trigger NoDelete002

? ?2> 启用:

? ?? ???alter table xsxxb

? ?? ???enable trigger NoDelete002

?

十一.用户自定义函数

1.创建用户自定义函数:

? ?1>创建数量型用户自定义函数:(返回一个简单的数值,如:int,char等)

? ?? ?create function NumAdd

? ?? ?(@num1 int,@num2 int)

? ?? ?returns int

? ?? ?as

? ?? ?begin

? ?? ?return(@[email protected])

? ?? ?end

? ?调用:select dbo.NumAdd(4.6)

? ?2>创建表值型用户自定义函数:(返回一个Table型数据)

? ?? ?use northwind

? ?? ?go

? ?? ?create function DisplayXsxx

? ?? ?(@xh char(20))

? ?? ?returns table

? ?? ?as

? ?? ?return(select * from xsxxb where [email protected])

? ?调用:select * from DisplayXsxx('002')

2.更改用户自定义函数:

? ???(把create换为alter)

3.删除用户自定义函数:

? ?? ?drop function DisplayXsxx

十二.游标

1.创建游标:

declare Fs_level cursor

static

for select xm,sum(fs) from xsxxb,xscjb where xsxxb.xh=xscjb.xh group by xm

declare

? [email protected] int,

? [email protected] varchar(20)

2.打开游标:

open Fs_level

3.提取游标:

? ?fetch next from Fs_level into @Name,@fs

? ?while(@@Fetch_status=0)

? ?? ? begin

? ?? ?? ???if @fs<150

? ?? ?? ?? ?? ?print'总分太低!'

? ?? ?? ???else

? ?? ?? ?? ???print'高分!'

? ?? ?? ???fetch next from Fs_level into @Name,@fs

? ?? ? end

4.关闭游标:

close??Fs_level

5.销毁游标:

deallocate Fs_level

十三.数据完整性

1.缺省

??1>创建缺省:

? ?? ?create default dd

? ?? ?as 'MN'

??2>绑定缺省:

? ?? ?sp_bindefault dd,'xsxxb.xh'

??3>取消缺省:

? ?? ?sp_unbindefault 'xsxxb.xh'

??4>删除缺省:

? ?? ?drop default dd

2.规则

??1>创建规则:

? ?? ?create rule rr

? ?? ?as @scode in('MN','ND','SD')

??2>绑定规则:

? ?? ?sp_binderule rr, 'xsxxb.xh'

??3>取消规则:

? ?? ?sp_unbindrule 'xsxxb.xh'

??4>删除规则:

? ?? ?drop rule rr

3.约束

??1>主键约束:

? ?? ?primary key

??2>外键约束:

? ?? ?foreign key(列名) references 表名

??3>唯一约束:

? ?? ?unique

??4>检查约束:

? ?? ?check(xb='男' or xb='女')

十四.数据库的安全性

1.帐户

? ?1>创建一个帐户:

? ? sp_addlogin 'zj','0822','pubs'

? ?2>查询帐户的相关信息:

? ? select convert(varbinary(32),password) from syslogins where name='zj'

? ?3>更改,删除帐户:

? ???sp_password '0822','888','zj'

2.数据库用户

? ?1>添加数据库用户

? ???use northwind

? ???go

? ???sp_grantdbaccess zj

? ?2>删除数据库用户

? ???use northwind

? ???go

? ???sp_revokedbaccess [zj]

3.角色

? ?1>浏览服务器角色的内容:

? ?? ?sp_helpsrvrole

? ?2>角色分配给帐户:

? ?? ? sp_addsrvrolemember zj,'sysadmin'

4.权限

? ?1>授予权限:

? ?? ? use northwind

? ?? ? go

? ?? ? grant insert,update on xsxxb to zj

? ?2>撤消权限:

? ?? ? revoke create table,create view from zj

? ?3>拒绝访问:

? ?? ? use northwind

? ?? ? go

? ?? ? deny select,insert,update ,delete on xsxxb to zj

十五.事务与锁

1.事务

??1>一个标准事务:

? ? begin tran

? ?? ?select * from xsxxb

? ? commit tran

? ?或

? ? begin tran insert xscjb

? ?? ?insert into xscjb values('002','2',70)

? ? commit tran

??2>返回几个事务在运行:

? ???begin tran

? ?? ???select * from xsxxb

? ?? ???select * from kmxxb

? ?? ???select @@trancount??--执行第一次时返回值为1,每执行一次事务数量就加1。

? ???commit tran

? ?? ???select @@trancount??--返回值为0。

??3>复杂可回滚事务:

? ?? ?declare @i int

? ? set @i=0

? ? print ltrim(str(@i))

??begin tran

? ?? ?print ltrim(str(@i))

? ?? ?select @i=(select count(*) from xsxxb)

? ?if @i>4

? ?? ? begin

? ?? ?? ? rollback tran

? ?? ?? ? return? ?? ?--停止过程中当前批的执行,并在下一批的开始处恢复执行。

? ?? ? end

? ?else

? ?? ? print ltrim(str(@i))

? ?? ? select * from xsxxb

? ?? ? select @@trancount

? ?? ?begin tran? ?? ?--嵌套事务

? ?? ?? ? select * from xscjb

? ?? ?? ? select @@trancount

? ?? ?commit tran

??commit tran

??4>嵌套事务:

? ???declare @i int

? ? set @i=0

? ? print ltrim(str(@i))

??begin tran

? ?? ?print ltrim(str(@i))

? ?? ?select @i=(select count(*) from xsxxb)

? ?if @i>4??--改为3试一试

? ?? ? begin

? ?? ?? ? rollback tran

? ?? ?? ? return? ?? ?--停止过程中当前批的执行,并在下一批的开始处恢复执行。

? ?? ? end

? ?else

? ?? ? print ltrim(str(@i))

? ?? ? select * from xsxxb

? ?? ? select @@trancount

? ?? ?begin tran? ?? ?--嵌套事务

? ?? ?? ? select * from xscjb

? ?? ?? ? select @@trancount

? ?? ?commit tran

??commit tran

??5>与表相联系的事务:

? ? declare @i int

? ?? ? set @i=0

? ?? ?? ?begin tran

? ?? ?? ???update xscjb set fs=85 where fs=70

? ?? ?? ?? ?set @i=2

? ?? ?? ???if @i>1??--改为3试一试

? ?? ?? ???begin

? ?? ?? ?? ? rollback tran

? ?? ?? ?? ? return

? ?? ?? ???end

? ?? ?? ???else

? ?? ?? ?commit tran

? ???go

? ?select * from xscjb

??6>设置保存点:

? ? declare @i int

? ?? ? set @i=0

? ?? ?? ?begin tran

? ?? ?? ???update xscjb set fs=120 where fs=90

? ?? ?? ?? ?save tran s1

? ?? ?? ?? ?set @i=2

? ?? ?? ???if @i>1??

? ?? ?? ???begin

? ?? ?? ?? ? rollback tran s1

? ?? ?? ?? ? return

? ?? ?? ???end

? ?? ?? ???else

? ?? ?? ?commit tran

? ???go

? ?select * from xscjb

??7>含子查询的事务:

? ? begin tran

? ?? ?? ? declare @fs int

? ?? ?? ? update xscjb set fs=95 where fs=90

? ?? ?? ? select @fs=(select max(fs) from xscjb)

? ?? ???if @fs<100??--改为90试一试

? ?? ?? ?begin

? ?? ?? ???rollback tran

? ?? ?? ???return

? ?? ?? ?end

? ?? ???else

? ?? ? commit tran

? ?? ???go

? ?? ?? ???select * from xscjb

??8>隐式事务:

? ? [im'plisit]暗示的??

? ?? ?set implicit_transactions on??--打开

? ?? ?? ?update xscjb set fs=95 where fs=90

? ?? ?? ?select @@trancount

? ?? ?? ?go

? ?? ?? ? select * from xscjb

2.锁

??事务的隔离级别:

? ? 1>读提交:

? ?? ?第一个窗口:

? ?? ? begin tran

? ?? ?? ???update xscjb set fs=95 where xh='002'

? ?? ?第二个窗口:

? ?? ? set transaction isolation level read committed

? ?? ?? ?? ?go

? ?? ?? ?? ? select * from xscjb where xh='002'

? ? 2>读未提交:

? ?? ? 第一个窗口:

? ?? ?begin tran

? ?? ?? ?? ?update xscjb set fs=80 where xh='002'

? ?? ? 第二个窗口:

? ?? ?set transaction isolation level read uncommitted

? ?? ?? ?go

? ?? ?? ???select * from xscjb

? ? 3>可重复读:

? ?? ?第一个窗口:

? ?? ?set transaction isolation level repeatable read

??go

? ?begin tran

? ?? ?select * from xscjb

? ?? ?update xscjb set fs=100 where xh='002'

? ?? ?select * from xscjb

? ?? ?rollback

? ? 第二个窗口:

? ?? ???set transaction isolation level read committed

go

? ?begin tran

? ?? ? insert into xscjb values('002','2',120)

? ?? ? select * from xscjb where fs=120

? ?? ? rollback

? ? 4>顺序读:

? ?? ?第一个窗口:

? ?? ?set transaction isolation level serializable

??go

? ?begin tran

? ?? ?select * from xscjb

? ?? ?update xscjb set fs=100 where xh='002'

? ?? ?select * from xscjb

?

? ?? ?第二个窗口:

? ?? ???set transaction isolation level read committed

go

? ?begin tran

? ?? ? insert into xscjb values('002','2',120)

? ?? ? select * from xscjb where fs=120

?

?

1. STATUS;

2. mysql> SELECT @@global.time_zone, @@session.time_zone;

+--------------------+---------------------+

| @@global.time_zone | @@session.time_zone |

+--------------------+---------------------+

| SYSTEM? ?? ?? ?? ? | SYSTEM? ?? ?? ?? ???|

+--------------------+---------------------+

1 row in set (0.00 sec)

3.

mysql> SHOW CREATE TABLE t\G

*************************** 1. row ***************************

Table: t

Create Table: CREATE TABLE `t` (

`i` int(11) default NULL,

`j` int(11) NOT NULL,??`k` int(11) default '-1'

) ENGINE=MyISAM DEFAULT CHARSET=latin1

4. SHOW DATABASES LIKE 'm%';

5.SHOW WARNINGS\G显示错误

复制创建表技巧

6. CREATE TABLE CityCopy1 SELECT * FROM City;复制表

7. CREATE TABLE CityCopy2 SELECT * FROM City where id=5;

按条件复制表:将city 表格的结构复制同时复制id=5的记录

8. CREATE TABLE CityCopy3 SELECT title FROM City where id=5;

? ?title(是字段)指定city表中的title字段复制创建成CityCopy3表

9.重命名

(1)? ? ? ? ALTER TABLE t1 RENAME TO t2;

??(2)Rename tabae t1 to t2;

(2)? ? ? ? RENAME TABLE t1 TO tmp, t2 TO t1, tmp TO t2; 批量命名

10.删表

(1)DROP TABLE IF EXISTS t1;或者DROP TABLE t1

??(2)DROP TABLE t1, t2, t3; 批量删表

11.清空表记录

(1)? ? ? ? DELETE FROM t;或者TRUNCATE TABLE t;

(2)? ? ? ? DELETE FROM t WHERE id=5;指定条件删除

删除表

DELETE FROM table_name;

TRUNCATE TABLE table_name;

12.select 另类用法

(1) mysql> SELECT 1 AS One, 4*3 'Four Times Three';

+-----+------------------+

| One | Four Times Three |

+-----+------------------+

|? ?1 |? ?? ?? ?? ?? ?12 |

+-----+------------------+

(2)SELECT last_name, first_name FROM t ORDER BY 1, 2;

排序ORDER BY 1, 2升序;2,1降序

(3) mysql> SELECT description, IF('abc' LIKE pattern,'YES','NO') FROM patlist;

??在对pattern字段中别条件

+--------------------------------+-----------------------------------+

| description? ?? ?? ?? ?? ?? ???| IF('abc' LIKE pattern,'YES','NO') |

+--------------------------------+-----------------------------------+

| empty string? ?? ?? ?? ?? ?? ? | NO? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???|

| non-empty string? ?? ?? ?? ?? ?| YES? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? |

| string of exactly 3 characters | YES? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? |

+--------------------------------+-----------------------------------+

(4) SELECT ABS(-14.7), ABS(14.7);

(5) select * from tablename order by data desc limit 0,20返回20条数据(同微软数据库中select top 20 * from tablename 一样)

select * from tablename limit 0,20

说明:limit 0,20 (0是从表的第一行开始,是可以指定的,20是查询返回20条记录)

13.数据库加密

SELECT MD5('a');

mysql> SELECT MD5('a');

+----------------------------------+

| MD5('a')? ?? ?? ?? ?? ?? ?? ?? ? |

+----------------------------------+

| 0cc175b9c0f1b6a831c399e269772661 |

+----------------------------------+

14.随机数

SELECT RAND();

15. INSERT插入值的技术

(1)? ? ? ? INSERT INTO people (name,age)VALUES('William',25),('Bart',15),('Mary',12);多重插入

(2)INSERT INTO people VALUES(25,'William');不用中间的字段名字

(3) INSERT INTO t (i) VALUES(1),(2),(3),(4),(5);

16.数据替换

(1)? ? ? ? REPLACE INTO people (id,name,age) VALUES(12,'William',25);

(2)? ? ? ? 多重替换

REPLACE INTO people (id,name,age)VALUES(12,'William',25),(13,'Bart',15),(14,'Mary',12);

(3)

  相关解决方案