使用T-SQL語句創建數據庫 創建表
* DATABASE CITYOA ON (NAME=數據庫邏輯名 FILENAME='數據庫文件路徑與物理名.mdf') LOG ON (NAME=日志文件邏輯名 FILENAME='日志文件路徑與物理名.ldf')2.1 CREATE TABLE OA_FUNCTION (FUNNO Int PRIMARY KEY, FUNNAME Varchar(50) NOT NULL, UPFUNNO Int , FOREIGN KEY (UPFUNNO) REFERENCES OA_FUNCTION (FUNNO))2.2 CREATE TABLE OA_DEPARTMENT (DEPTNO Int PRIMARYKEY, DEPTCODE Varchar(10) NOT NULL UNIQUE, DEPTNAME Varchar(50) NOT NULL UNIQUE, LOCATION Varchar(200) , POSTCODE CHAR(6) )2.3員工表 CREATE TABLE OA_EMPLOYEE( EMPNO Int PRIMARY KEY, EMPID Varchar(20) NOT NULL UNIQUE, PASSWORD Varchar(20) NOT NULL, NAME Varchar(50) NOT NULL, SEX Char(2) CHECK(SEX IN ('男','女')) default '男', AGE Int CHECK(AGE BETWEEN 18 AND 60) DEFAULT 20, WORKAGE int CHECK(Age>workage+18), HIREDATE Datetime CHECK(HIREDATE>'2000-10-10'), LeaveDate Datetime CHECK(LeaveDate>HIREDATE), Salary decimal(10,2) CHECK(BETWEEN 1000 AND 9000), BONUS Decimal(10,2) CHECK(Salary>bonus), Mail Varchar(100) , Photo Image , JobDesc Text , DEPTNO int , FOREIGN KEY (DEPTNO) REFERENCES OA_Department(DEPTNO) )2.4技能表 CREATE TABLE OA_SKILL SKILLNO Int PRIMARY KEY, SKILLNAME Varchar(50) NOT NULL UNIQUE )2.5員工技能關聯表 CREATE TABLE OA_EMPSKILL( EMPNO Int , SKILLNO Int , PRIMARY KEY (EMPNO,SKILLNO), FOREIGN KEY (EMPNO) REFERNCES EMP (EMPNO), FOREIGN KEY (SKILLNO) REFERNCES SKILL (SKILLNO))2.6 員工功能關聯表 CREATE TABLE OA_EMPFUNCTION ( EMPNO Int , FUNNO Int , PRIMARY KEY (EMPNO,FUNNO), FOREIGN KEY (EMPNO) REFERENCES EMP (EMPNO), FOREIGN KEY (FUNNO) REFERENCES OA_FUNCTION (FUNNO))2.1的FK->PK(本表PK)不大清楚是不是這樣有空問下你們老師。
3. 使用T-SQL語句完成如下修改表的任務(3.1) 為員工表OA_EMPLOYEE增加列:MobilePhone,類型為varchar(50), 且為唯一 ALTER TABLE OA_EMPLOYEE ADD COLUMN MobilePhone varchar(50) UNIQUE(3.2) 將員工表OA_EMPLOYEE的Mail列修改為Varchar(200) ALTER TABLE OA_EMPLOYEE ALTER COLUMN Mail Varchar(200)(3.3) 將員工表OA_EMPLOYEE的JobDesc列刪除 ALTER TABLE OA_EMPLOYEE DROP COLUMN JobDesc(3.4) 刪除技能表OA_SKILL字段SKILLNAME上的唯一約束 ALTER TABLE OA_SKILL DROP constraint 約束名(約束名我也不知道是什么。
。)(3.5) 為員工表OA_EMPLOYEE的字段Mail增加唯一約束 ALTER TABLE OA_EMPLOYEE ADD Mail UNIQUE 注:修改任務不用截屏,直接寫出T-SQL語句即可。
4. 使用T-SQL語句完成刪除表的任務(4.1) 刪除員工表(4.2) 刪除員工功能關聯表。
數據庫T-SQL語句命令
--語 句 功 能 --數據操作 SELECT --從數據庫表中檢索數據行和列 INSERT --向數據庫表添加新數據行 DELETE --從數據庫表中刪除數據行 UPDATE --更新數據庫表中的數據 --數據定義 CREATE TABLE --創建一個數據庫表 DROP TABLE --從數據庫中刪除表 ALTER TABLE --修改數據庫表結構 CREATE VIEW --創建一個視圖 DROP VIEW --從數據庫中刪除視圖 CREATE INDEX --為數據庫表創建一個索引 DROP INDEX --從數據庫中刪除索引 CREATE PROCEDURE --創建一個存儲過程 DROP PROCEDURE --從數據庫中刪除存儲過程 CREATE TRIGGER --創建一個觸發器 DROP TRIGGER --從數據庫中刪除觸發器 CREATE SCHEMA --向數據庫添加一個新模式 DROP SCHEMA --從數據庫中刪除一個模式 CREATE DOMAIN --創建一個數據值域 ALTER DOMAIN --改變域定義 DROP DOMAIN --從數據庫中刪除一個域 --數據控制 GRANT --授予用戶訪問權限 DENY --拒絕用戶訪問 REVOKE --解除用戶訪問權限 --事務控制 COMMIT --結束當前事務 ROLLBACK --中止當前事務 SET TRANSACTION --定義當前事務數據訪問特征 --程序化SQL DECLARE --為查詢設定游標 EXPLAN --為查詢描述數據訪問計劃 OPEN --檢索查詢結果打開一個游標 FETCH --檢索一行查詢結果 CLOSE --關閉游標 PREPARE --為動態執行準備SQL 語句 EXECUTE --動態地執行SQL 語句 DESCRIBE --描述準備好的查詢 ---局部變量 declare @id char(10) --set @id = '10010001' select @id = '10010001' ---全局變量 ---必須以@@開頭 --IF ELSE declare @x int @y int @z int select @x = 1 @y = 2 @z=3 if @x > @y print 'x > y' --打印字符串'x > y' else if @y > @z print 'y > z' else print 'z > y' --CASE use pangu update employee set e_wage = case when job_level = '1' then e_wage*1.08 when job_level = '2' then e_wage*1.07 when job_level = '3' then e_wage*1.06 else e_wage*1.05 end --WHILE CONTINUE BREAK declare @x int @y int @c int select @x = 1 @y=1 while @x < 3 begin print @x --打印變量x 的值 while @y < 3 begin select @c = 100*@x + @y print @c --打印變量c 的值 select @y = @y + 1 end select @x = @x + 1 select @y = 1 end --WAITFOR --例 等待1 小時2 分零3 秒后才執行SELECT 語句 waitfor delay '01:02:03' select * from employee --例 等到晚上11 點零8 分后才執行SELECT 語句 waitfor time '23:08:00' select * from employee ***SELECT*** select *(列名) from table_name(表名) where column_name operator value ex:(宿主) select * from stock_information where stockid = str(nid) stockname = 'str_name' stockname like '% find this %' stockname like '[a-zA-Z]%' --------- ([]指定值的范圍) stockname like '[^F-M]%' --------- (^排除指定范圍) --------- 只能在使用like關鍵字的where子句中使用通配符) or stockpath = 'stock_path' or stocknumber < 1000 and stockindex = 24 not stocksex = 'man' stocknumber between 20 and 100 stocknumber in(10,20,30) order by stockid desc(asc) --------- 排序,desc-降序,asc-升序 order by 1,2 --------- by列號 stockname = (select stockname from stock_information where stockid = 4) --------- 子查詢 --------- 除非能確保內層select只返回一個行的值, --------- 否則應在外層where子句中用一個in限定符 select distinct column_name form table_name --------- distinct指定檢索獨有的列值,不重復 select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name select stockname , "stocknumber" = count(*) from table_name group by stockname --------- group by 將表按行分組,指定列中有相同的值 having count(*) = 2 --------- having選定指定的組 select * from table1, table2 where * *= * -------- 左外部連接,table1中有的而table2中沒有得以null表示 * =* * -------- 右外部連接 select stockname from table1 union [all] ----- union合并查詢結果集,all-保留重復行 select stockname from table2 ***insert*** insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx") value (select Stockname , Stocknumber from Stock_table2)---value為select語句 ***update*** update table_name set Stockname = "xxx" [where Stockid = 3] Stockname = default Stockname = null Stocknumber = Stockname + 4 ***delete*** delete from table_name where Stockid = 3 truncate table_name ----------- 刪除表中所有行,仍保持表的完整性 drop table table_name --------------- 完全刪除表 ***alter table*** --- 修改數據庫表結構 alter table *_name add column_name char(2) null 。
.. sp_help table_name ---- 顯示表已有特征 create table table_name (name char(20), age smallint, lname varchar(30)) insert into table_name select 。
。 ----- 實現刪除列的方法(創建新表) alter table table_name drop constraint Stockname_default ---- 刪除Stockname的default約束 ***function(/*常用函數*/)*** ----統計。