数据库

创建登录名
CREATE LOGIN <登录名> WITH PASSWORD=<'密码'>


USE master
GO
--newUser 密码123456
CREATE LOGIN newUser WITH PASSWORD='123456'
GO
--------------------------


创建数据库用户
CREATE USER 数据库用户 FOR LOGIN 登录名


USE dbTable
GO


CREATE USER newDBTable FOR LOGIN newUser
GO
---------------------------




为数据库用户赋予权限
GRANT 操作权限 ON 表名 TO 用户名


USE dbTable
GO


GRANT SELECT,INSERT,UPDATE ON 表名 TO 用户名
GO


***
--SELECT查询
--INSERT插入
--UPDATE修改
--DELETE删除


GRANT SELECT,INSERT,UPDATE,DELETE ON test TO newUser
GO
***


--回收权限
--REVOKE UPDATE ON 表名 TO 用户
REVOKE UPDATE ON test TO newUser
-----------------------------




创建数据库


USE master  --进入master主数据库
GO


CREATE DATABASE mark --创建mark数据库
ON PRIMARY
(
NAME='mark', --创建数据库名称
FILENAME='D:\sql\mark.mdf', --存放数据库路径
SIZE=5MB, --数据库初始化大小
MAXSIZE=100MB, --数据库最大容量
FILEGROWTH = 10% --数据自动增量增量 计算方法5*(1+10%)*(1+10%)*(1+10%)......
)


LOG ON --创建日志文件
(
NAME='mark_log', --日志文件名
FILENAME='D:\sql\mark_log.ldf', --日志文件路径
SIZE=5MB, --日志文件大小
FILEGROWTH = 0 --没有自动增量
)
GO




-------------
添加mdf数据源文件


USE master
GO


--CREATE DATABASE mark2 --创建mark数据库
EXEC sp_attach_db @dbname= 'mark3',
         @filename1 = 'd:\sql\mark2.mdf',
         @filename2 = 'd:\sql\mark2_log.ldf'
GO


-------------




查询数据库
SELECT * FROM sysdatabases




删除数据库


USE master --进入master主数据库
DROP DATABASE mark --删除mark数据库
GO




--进入主数据库
USE master
GO


--创建voop登录名 密码123456
CREATE LOGIN voop WITH PASSWORD = '123456'
GO




--创建数据表
USE mark --进入数据库mark
GO




CREATE TABLE ta01 --创建ta01数据表
(
AUTOID int identity(0,1) primary key, --自增 主键
name NVARCHAR(255) NOT NULL, --可变长度, 每个字符占用2个字节,长度255
password NVARCHAR(255)  NOT NULL,
email NVARCHAR(255) NOT NULL
)




------------------
USE mark
GO


CREATE TABLE test
(
vId int identity(0,1) primary key,
vName NVARCHAR(128) NOT NULL,
vPassword NVARCHAR(128) NOT NULL,
vEmail NVARCHAR(128) NOT NULL
)


-------------------------------------
--向ta01表里插入数据
INSERT INTO ta01(name, password, email) SELECT 'voop', '123456', 'voop@126.com'


--查询数据
SELECT * FROM ta01


--查询数据2
SELECT TOP 500 [AUTOID] --500行
,[name]
,[password]
,[email]
FROM [dbo].[ta01]
ORDER BY [AUTOID] DESC --反向排序










--删除数据
DELETE FROM ta01 Where name='voop'


--删除表
DROP TABLE test


--删除表中所有数据 保留表结构
TRUNCATE TABLE ta01




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


--例子1
UPDATE test SET vName='yy' WHERE vId='2'


--例子2
UPDATE test SET vName='yy', vPassword='123', vEmail='kk@ll.com' WHERE vId='3'






------------------------------创建表说明
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)




integer(size)
int(size)
smallint(size)
tinyint(size)
仅容纳整数。在括号内规定数字的最大位数。


decimal(size,d)
numeric(size,d)
容纳带有小数的数字。
"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。




char(size)
容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。
在括号中规定字符串的长度。




varchar(size)
容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。
在括号中规定字符串的最大长度。




date(yyyymmdd) 容纳日期。


----------------------------


SQL 约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
我们将主要探讨以下几种约束:


NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT


注释:在下面的章节




NOT NULL 约束强制列不接受 NULL 值。




*********
SQL UNIQUE 约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。


CREATE TABLE Persons
(
Id_P int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)




撤销 UNIQUE 约束
如需撤销 UNIQUE 约束,请使用下面的 SQL:
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID


**********


SQL PRIMARY KEY 约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。




CREATE TABLE Persons
(
Id_P int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)




撤销 PRIMARY KEY 约束
如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:
ALTER TABLE Persons
DROP PRIMARY KEY




*****************


SQL FOREIGN KEY 约束
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
让我们通过一个例子来解释外键。请看下面两个表:


----------------------------------------------------------+
Persons表           |          |               |          |
----------------------------------------------------------+
Id_P    |LastName   |FirstName |Address        |City      |
1       |Adams      |John      |Oxford Street  |London    |
2       |Bush       |George    |Fifth Avenue   |New York  |
3       |Carter     |Thomas    |Changan Street |Beijing   |
----------------------------------------------------------+




--------------------------+
Orders 表                 |
--------------------------+
Id_O   |OrderNo   |Id_P   |
1      |77895     |3      |
2      |44678     |3      |
3      |22456     |1      |
4      |24562     |1      |
--------------------------+




请注意,"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。
"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。
"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。


CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)




撤销 FOREIGN KEY 约束
如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders


********************




SQL CHECK 约束
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。




SQL CHECK Constraint on CREATE TABLE
下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。




CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)


撤销 CHECK 约束
如需撤销 CHECK 约束,请使用下面的 SQL:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person


************************


SQL DEFAULT 约束
DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。




SQL DEFAULT Constraint on CREATE TABLE
下面的 SQL 在 "Persons" 表创建时为 "City" 列创建 DEFAULT 约束:


CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
)




*******************
CREATE INDEX 语句用于在表中创建索引。
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
索引
您可以在表中创建索引,以便更加快速高效地查询数据。
用户无法看到索引,它们只能被用来加速搜索/查询。
注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。




SQL CREATE INDEX 语法
在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name
ON table_name (column_name)
注释:"column_name" 规定需要索引的列。
SQL CREATE UNIQUE INDEX 语法
在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE INDEX 实例
本例会创建一个简单的索引,名为 "PersonIndex",在 Person 表的 LastName 列:
CREATE INDEX PersonIndex
ON Person (LastName) 
如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC:
CREATE INDEX PersonIndex
ON Person (LastName DESC) 
假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开:
CREATE INDEX PersonIndex
ON Person (LastName, FirstName)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值