Sqlserver学习笔记
-----------------------接Part 1-------------------
建立如下数据表
CREATETABLE std_table1
(
学号 INTPRIMARYKEYIDENTITY,
姓名 CHAR(20)NOTNULL,
专业方向 VARCHAR(10)NOTNULL,
系部代码 CHAR(2)NOTNULL,
备注 VARCHAR(50)
)
CREATETABLE系部
(
系部代码CHAR(6)NOTNULLPRIMARYKEY,
系部名称VARCHAR(20)NOTNULL,
系主任 CHAR(8)
)
CREATETABLE专业
(
专业代码CHAR(4)NOTNULLPRIMARYKEY,
专业名称VARCHAR(20)NOTNULL,
系部名称CHAR(6)CONSTRAINT fk_wj1 REFERENCES系部(系部代码)
)
CREATETABLE班级
(
班级代码CHAR(9)NOTNULLPRIMARYKEY,
班级名称VARCHAR(20),
专业代码CHAR(4)CONSTRAINT fk_wj2 REFERENCES专业(专业代码),
系部代码CHAR(6)CONSTRAINT fk_wj3 REFERENCES系部(系部代码),
备注 CHAR(50)
)
CREATETABLE学生
(
学号 CHAR(12)NOTNULLPRIMARYKEY,
姓名 CHAR(8)NOTNULL,
出生年月datetime,--注意这里只能用小写
入学日期datetime,
班级代码CHAR(9)CONSTRAINT fk_wj4 REFERENCES班级(班级代码),
系部代码CHAR(6)CONSTRAINT fk_wj5 REFERENCES系部(系部代码),
专业代码CHAR(4)CONSTRAINT fk_wj6 REFERENCES专业(专业代码)
)
注意以上表的删除顺序:先学生再班级再专业再系部,,,
9.数据的添加
格式:
INSERT[INTO]表名(列名1,列名2,……)VALUES(value1,value2,……)
9.1有vavlues的插入
示例:
前提:“学号”列为标识增量
1--往表std_table中添加一条数据[注意:学号设为了增量标识]
INSERTINTO std_TABLE VALUES('zs','计算机','01','没有')
2--往表std_table中的某些列插入一条数据
INSERTINTO std_TABLE(名称,专业方向,系部代码)
VALUES('张三','数学','04')
9.1.2无values的插入
--往表std_table中插入一批数据
INSERTstd_TABLE(姓名,专业方向,系部代码)
SELECT姓名,专业方向,系部代码
FROMstd_TABLE
10数据查询
10.1--查询表std_table中前10行记录
SELECTTOP 10系部代码,专业方向
FROMstd_table
10.2--查询表std_table前面P的记录结果
SELECTTOP 50 PERCENT系部代码,专业方向
FROMstd_table
10.3--查询表std_table中姓名为k,或者j开头的的所有记录
SELECT*FROM std_table
WHERE姓名LIKE'[kj]%'
10.4--查询表std_table中姓名不为k,或者j开头的的所有记录
SELECT*FROM std_table
--WHERE姓名NOT LIKE '[kj]%'
WHERE姓名LIKE'![kj]%'
11.用查询结果新生新表【类比插入INSERT就好理解了】
格式:SELECT * INTO新表表名from表名
示例:
SELECT*INTO new_table FROM std_table
SELECT*FROM new_table
SELECT*INTO new_table2 FROM std_table
WHERE姓名='zs'
SELECT*FROM new_table2
SELECT学号,姓名INTOnew_table1 FROM std_table
SELECT*FROM new_table1
SELECT学号,姓名,专业方向,系部代码,备注
FROMstd_table
下面的例子会创建一个名为"Persons_Order_Backup"的新表,其中包含了从Persons和Orders两个表中取得的信息
SELECTPersons.LastName,Orders.OrderNo
INTOPersons_Order_Backup
FROMPersons
INNER JOINOrders
ONPersons.Id_P=Orders.Id_P
12.把查询结果新生新表,且把新表为临时表(下面#new_table变成了系统数据库下的临时表)
SELECT*INTO #new_table FROM std_table
SELECT*FROM #new_table