1.建表
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
2.增加unique约束的两种方法
a.UNIQUE (Id_P)
b.Id_P int NOT NULL UNIQUE,
设置多个unique约束:
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
3.取消unique约束
alter table PERSONS
add
constraint uQ_Lastname unique (Lastname)
取消所有的unique约束:
ALTER TABLE Persons
DROP CONSTRAINT
uc_PersonID
4.修改
update persons set
Lastname='wang' where Id='123456'
update persons set
lastname='zhang',City='xiangxi' where Id='123987'
5.删除
delete persons where
Id='123456'
6.插入
insert into persons
values('123456','wang','fang','shanghai','yuhua')
7.top的用法:选择前两条记录
select top 2*from
persons
select top 50 percent * from
persons 选择前50%的记录
8.like的用法
select
*from persons where City not like '%g'
9.left join、right join,full join的用法
select
persons.Lastname,persons.firstname,student.name
from persons
Left join student
on
persons.Id=student.Id
order by
persons.Lastname
select
persons.Lastname,persons.firstname,student.name
from persons
right join student
on
persons.Id=student.Id
order by
student.name
select
persons.lastname,persons.firstname,student.name
from persons
full join student
on
persons.Id=student.Id
order by
persons.Lastname
10、union和union all的用法
UNION 内部的 SELECT
语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
union会把所有的内容显示出来,除了重复值,而union all会把所有的信息显示出来包括重复信息
11、select into的用法
备份数据表的某些域
select
persons.Lastname,persons.firstname
into persons_bak
from persons
where city='beijing'
12.降序和升序的用法
SELECT Company, OrderNumber FROM
OrdersORDER BY
Company DESC, OrderNumber ASC
13.check的用法
SQL CHECK 约束
CHECK约束用于限制列中的值的范围。
如果对单个列定义CHECK约束,那么该列只允许特定的值。
如果对一个表定义CHECK约束,那么此约束会在特定的列中对值进行限制。
CREATE TABLE Persons
(
Id_P int NOT NULLCHECK
(Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
对多个列的值的限制
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person
CHECK (Id_P>0 AND City='Sandnes')
)
14.default约束
SQL DEFAULT 约束
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'
)
增加约束
ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'SANDNES'
撤销约束
ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT
在做数据库系统开发时,特别是需要对数据库操作进行性能测试及优化时,我们就需要在数据库测试表中插入大量数据以便测试。对于这些数据的插入,这里通过实例展示如何通过存储过程进行实现。
数据库表(userInfo)结构如下:
CREATETABLE[dbo].[userInfo](
[userID][int]IDENTITY(1,1)NOTNULL,
[roleType][int]NULL,
[groupID][int]NULL,
[userCode][varchar](50) COLLATE Chinese_PRC_CI_ASNULL,
[userName][varchar](50) COLLATE Chinese_PRC_CI_ASNULL,
[text1][varchar](50) COLLATE Chinese_PRC_CI_ASNULL,
[text2][varchar](50) COLLATE Chinese_PRC_CI_ASNULL,
[text3][varchar](50) COLLATE Chinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
存储过程如下(这里是批量插入99000条数据,roleType,groupID两个字段为随机生成的0-5之间的数):
CREATEPROCEDUREadd_UserInfo
AS
DECLARE@userCodeVARCHAR(30)
DECLARE@userNameVARCHAR(30)
DECLARE@userCode_baseVARCHAR(30)
DECLARE@countINTEGER
DECLARE@indexINTEGER
DECLARE@rand1INTEGER
DECLARE@rand2INTEGER
SET@userCode_base='qs_'
SET@userName='userName'
SET@count=100000
SET@index=10000
WHILE@index<@count
BEGIN
SET@userCode=@userCode_base+CONVERT(VARCHAR,@index)
SET@rand1=convert(int,rand()*5)
SET@rand2=convert(int,rand()*5)
INSERTINTOuserInfo (userCode,roleType,groupID,userName,text1,text2,text3)
VALUES(@userCode,@rand1,@rand2,@userName,'aokei kaol jof','','aokei kaol jof')
SET@index=@index+1
END
GO sql语句里面的COLLATE主要用于对字符进行排序,经常出现在表的创建语句中
列:CREATE TABLE tt
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[FTUID] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
表示输入记录是,FTUID按照Chinese_PRC_CI_AS 格式进行排序