版权声明:本文为博主原创文章,未经博主允许不得转载。
总结:
主要的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)
Insert into 表名 (字段1, 字段2….) values (值1, 值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下是否有新创建的表,表里的字段是否正确,表数据是否正确。
对于单表多数据来说,delete 和 delete from都可以将表里的所有数据删除,但是对于多表的连结,则delete和delete from是有一些区别。
Update 语句用于修改表中的数据,语法:UPDATE table SET feilds1 = value1 … WHERE condition
一条语句可以修改表中的多个值,也可以将允许null值得字段设置成null。
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来进行事务处理,保证数据库不包括不完整的操作结果,只有全部语句都成功执行后,事务处理才算成功,若其中有一个语句执行失败,则整个处理就算失败,并恢复到处理前的状态。
Create table Tablename (
列名称1, 数据类型,
列名称2, 数据类型,
….
)
删除了这张表之后在想查找表中的记录,则会有找不到目标文件的error。
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.
2、删除列
Alter table tablename
Drop column column_name
3、改变列表的数据类型
Alter table tablename
Alter column column_name datatype
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 |
存储结果集,供稍后处理。 |
未完待续。。。
博主:海宁