我的SQL总结---未完待续

我的SQL总结---未完待续

版权声明:本文为博主原创文章,未经博主允许不得转载。

总结:

主要的SQL 语句:

数据操作(select, insert, delete, update)

访问控制(grant, revoke)

事务控制(commit, rollback, set transaction)

数据定义(create table, drop table, alter table, create view, drop view, create index, drop index,

                   create schema, drop schema, create domain, alter domain, drop domain)

编程中的SQL(declare, explain, open, fetch, close, prepare, execute, describe)

一、数据操作(select, insert, delete, update)

  我的SQL总结---未完待续_第1张图片                                        

Insert into 表名 (字段1, 字段2….)  values (值1, 值2….)

 我的SQL总结---未完待续_第2张图片

以下是工作中应用的SQL 语句截图:

1、 set transaction isolation level read uncommitted

这个语句是读取为认可的交易隔离级别的数据,这样数据库可以读取到未被提交的数据。在SQL server中数据库引擎支持五种交易隔离级别:

set transaction isolation level read uncommitted 读取未认可

set transaction isolation level read committed  读取认可

set transaction isolation level repeatable read 可重复读取

set transaction isolation level read committed  snapshot 读取提交的快照

set transaction isolation level read serializable 序列化

 

2、使用已有的database,或者是创建新的database,为新的database创建一张表,并赋予表字段及记录值,验证database是否成功创建,验证database下是否有新创建的表,表里的字段是否正确,表数据是否正确。

 我的SQL总结---未完待续_第3张图片

 我的SQL总结---未完待续_第4张图片

 我的SQL总结---未完待续_第5张图片

 

 

 

我的SQL总结---未完待续_第6张图片

对于单表多数据来说,delete 和 delete from都可以将表里的所有数据删除,但是对于多表的连结,则delete和delete from是有一些区别。

Update 语句用于修改表中的数据,语法:UPDATE table SET feilds1 = value1 … WHERE condition

一条语句可以修改表中的多个值,也可以将允许null值得字段设置成null。

 我的SQL总结---未完待续_第7张图片

二、访问控制(grant, revoke)

grant, revoke 授权和回收权限,主要是用来做数据库维护。

SQL可以为不同的用户分配严格的、复杂的权限。这些操作大多都可以用SQL指令Grant(分配权限)和Revoke(回收权限)来实现。 Grant可以把指定的权限分配给特定的用户,如果这个用户不存在,则会创建一个用户。

 Grant 常用格式:

grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。

比较重要的是priveleges(权限)。 
普通用户的权限权限应用于描述 
SELECT表,列允许用户从表中选择行(记录) 
INSERT表,列允许用户在表中插入新行 
UPDATE表,列允许用户修改现存表里行中的值 
DELETE表允许用户删除现存表的行 
INDEX表允许用户创建和拖动特定表索引 
ALTER表允许用户改变现存表的结构。例如,可添加列、重命名列或表、修改列的数据类型 
CREATE数据库,表允许用户创建新数据库或表。如果在GRANT中指定了一个特定的数据库或表,他们只能够创建该数据库或表,即他们必须首先删除(Drop)它 
DROP数据库,表允许用户拖动(删除)数据库或表 

管理员权限权限描述 
CREATE TEMPORARY TABLES允许管理员在CREATE TABLE语句中使用TEMPORARY关键字 
FILE允许将数据从文件读入表,或从表读入文件 
LOCK TABLES允许使用LOCK TABLES语句 
PROCESS允许管理员查看属于所有用户的服务器进程 
RELOAD允许管理员重新载入授权表、清空授权、主机、日志和表格 
REPLICATION CLIENT允许在复制主机(Master)和从机(Slave)上使用SHOW STATUS 
REPLICATION SLAVE允许复制从服务器连接到主服务器 
SHOW DATABASES允许使用SHOW DATABASES语句查看所有的数据库列表。没有这个权限,用户只能看到他们能够看到的数据库 
SHUTDOWN允许管理员关闭SQL服务器 
SUPER允许管理员关闭属于任何用户的线程 

特别的权限权限描述 
ALL(或ALL PREVILEGES)授予所有权限 
USAGE不授予权限。这将创建一个用户并允许他登录,但不允许其他操作,如update/select 等

实例:

例如:
sql>grant select,insert,update,delete on test.user to mql@localhost identified by ‘123456′;
给本地的用户mql分配可对数据库test的user表进行select,insert,update,delete操作的权限,并设定口令为123456。若mql用户不存在,则将自动创建此用户. 具体的权限控制在sql.db表中可以查看到.也可直接对这个表进行更新操作进行权限的修改.

sql>grant all privileges on test.* to mql@localhost identified by ‘123456′;
给本地用户mql分配可对数据库test所有表进行所有操作的权限,并设定口令为123456。

sql>grant all privileges on *.* to mql@localhost identified by ‘123456′;
给本地用户mql分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123456。

sql>grant all privileges on *.* to [email protected] identified by ‘123456′;
给来自61.127.46.128的用户mql2分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123456。

REVOKE 
REVOKE和作用和GRANT相反,语法格式为: 
REVOKE privileges ON 数据库名[.表名] FROM user_name 

例如:
创建用户Bob,密码为“bob”,但不给他任何权限: 
GRANT usage on * to Bob identified by ’bob’; 
授予Bob在books数据库中的查询和插入权限: 
GRANT select, insert on books.* to  Bob; 
取消Bob在books数据库中的所有权限: 
REVOKE all on books.* from Bob; 
注:需要指出的是,REVOKE all...仅仅是回收用户的权限,并不删除用户。在SQL中,用户信息存放在sql.User中。SQL可以通过DROP USER来彻底删除一个用户,其用法为: 
DROP USER user_name;  
例如,要删除用户Bob,可以用: 
DROP USER Bob; 

三、事务控制(commit, rollback, set transaction)

commit, rollback, set transaction来进行事务处理,保证数据库不包括不完整的操作结果,只有全部语句都成功执行后,事务处理才算成功,若其中有一个语句执行失败,则整个处理就算失败,并恢复到处理前的状态。

四、数据定义(create table, drop table, alter table, create view, drop view, create index, drop index,  create schema, drop schema, create domain, alter domain, drop domain)

Create table 语法:

Create table Tablename (

列名称1, 数据类型,

列名称2, 数据类型,

….

)

我的SQL总结---未完待续_第8张图片

Drop table 语法:
Drop table Tablename ; 这样做与delete,alter的区别是,drop table直接删除了整张表,delete是删除表里面的记录值,alter是改变表结构。

我的SQL总结---未完待续_第9张图片

删除了这张表之后在想查找表中的记录,则会有找不到目标文件的error。

Alter table语法:

Alter table语句用于在已有的表中添加、修改或删除列。

1.添加列

Alter table tablename

Add column_name datatype

 

注意在新添加的列时,alter table允许null值添加,如果强制not null系统会报error:

ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'test22' cannot be added to non-empty table 'VendorEntity' because it does not satisfy these conditions.

 我的SQL总结---未完待续_第10张图片

 

2、删除列

Alter table tablename

Drop column column_name

 我的SQL总结---未完待续_第11张图片

3、改变列表的数据类型

Alter table tablename

Alter column column_name datatype

 我的SQL总结---未完待续_第12张图片

SQL server中的数据类型:

Character 字符串:

数据类型

描述

存储

char(n)

固定长度的字符串。最多 8,000 个字符。

n

varchar(n)

可变长度的字符串。最多 8,000 个字符。

 

varchar(max)

可变长度的字符串。最多 1,073,741,824 个字符。

 

text

可变长度的字符串。最多 2GB 字符数据。

 

Unicode 字符串:

数据类型

描述

存储

nchar(n)

固定长度的 Unicode 数据。最多   4,000 个字符。

 

nvarchar(n)

可变长度的 Unicode 数据。最多   4,000 个字符。

 

nvarchar(max)

可变长度的 Unicode 数据。最多   536,870,912 个字符。

 

ntext

可变长度的 Unicode 数据。最多   2GB 字符数据。

 

Binary 类型:

数据类型

描述

存储

bit

允许 0、1   或 NULL

 

binary(n)

固定长度的二进制数据。最多 8,000 字节。

 

varbinary(n)

可变长度的二进制数据。最多 8,000 字节。

 

varbinary(max)

可变长度的二进制数据。最多 2GB 字节。

 

image

可变长度的二进制数据。最多 2GB。

 

Number 类型:

数据类型

描述

存储

tinyint

允许从 0 到   255 的所有数字。

1   字节

smallint

允许从 -32,768 到   32,767 的所有数字。

2   字节

int

允许从 -2,147,483,648 到 2,147,483,647 的所有数字。

4   字节

bigint

允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。

8   字节

decimal(p,s)

固定精度和比例的数字。允许从   -10^38 +1 到   10^38 -1 之间的数字。

p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是   18。

s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是   0。

5-17 字节

numeric(p,s)

固定精度和比例的数字。允许从   -10^38 +1 到   10^38 -1 之间的数字。

p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是   18。

s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是   0。

5-17 字节

smallmoney

介于 -214,748.3648 和 214,748.3647 之间的货币数据。

4 字节

money

介于   -922,337,203,685,477.5808 和   922,337,203,685,477.5807 之间的货币数据。

8 字节

float(n)

从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 参数   n 指示该字段保存 4 字节还是   8 字节。float(24) 保存   4 字节,而 float(53) 保存   8 字节。n 的默认值是   53。

4 或   8 字节

real

从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。

4 字节

Date 类型:

数据类型

描述

存储

datetime

从 1753 年   1 月 1 日 到   9999 年 12 月   31 日,精度为 3.33 毫秒。

8   bytes

datetime2

从 1753 年   1 月 1 日 到   9999 年 12 月   31 日,精度为 100 纳秒。

6-8   bytes

smalldatetime

从 1900 年   1 月 1 日 到   2079 年 6 月   6 日,精度为 1 分钟。

4   bytes

date

仅存储日期。从 0001 年   1 月 1 日 到   9999 年 12 月   31 日。

3   bytes

time

仅存储时间。精度为 100 纳秒。

3-5   bytes

datetimeoffset

与 datetime2 相同,外加时区偏移。

8-10   bytes

timestamp

存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。

 

其他数据类型:

数据类型

描述

sql_variant

存储最多 8,000 字节不同数据类型的数据,除了 text、ntext   以及 timestamp。

uniqueidentifier

存储全局标识符 (GUID)。

xml

存储 XML 格式化数据。最多 2GB。

cursor

存储对用于数据库操作的指针的引用。

table

存储结果集,供稍后处理。

 

未完待续。。。

博主:海宁

联系:[email protected]

你可能感兴趣的:(我的SQL总结---未完待续)