模式和表的定义与修改
模式的创建
CREATE SCHEMA Schema_Name AUTHORIZATION UserName;
模式的删除
DROP SCHEMA Schema_Name CASCADE;
表的创建和删除
创建表 CREATE TABLE
当时第一个创建的表
CREATE SCHEMA TEST AUTHORIZATION WANG
CREATE TABLE TAB1 ( COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
表 又可以增加约束 实体,参照,用户自定义三种约束 就是用来限制表的数据的规则
比如当时创建的表
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
sno 为主码
表的修改
表的增加
例3.8 向Student表增加“入学时间”列,其数据类型为日期型
ALTER TABLE Student ADD S_entrance DATE;
例3.9 将年龄的数据类型由字符型改为整数
ALTER TABLE Student ALTER COLUMN Sage INT;
例3.10 增加课程名称必须取唯一值的约束条件
ALTER TABLE Course ADD UNIQUE(Cname);
表的删除
DEOP TABLE 表名;
如果加上cascade:就是级联删除和表上关联的索引 视图 约束等 一并删除 ;缺省值为restrict,就是提示且拒绝删除请求 SQL sever中,删除表,并不会将视图删除
索引的建立
例3.13 为学生-课程数据库中的Student,Course,SC三个表建立索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course (Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
索引更改
例3.14 将SC表的SCno索引名改为SCSno.
ALTER INDEX SCNO RENAME TO SCSNO;
这是标准sql的语法 tsql和标准sql有点不一样
标准sql
EXEC sp_rename '表名.旧索引名', '新索引名', 'index'
删除Student表的Stusno索引
DROP INDEX Stusname ON Student
查询
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句)
[AS]<别名> [ WHERE <条件表达式> ] [ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY <列名2> [ ASC|DESC ] ];
例3.16 查询全体学生的学号与姓名。
SELECT Sno,Sname
FROM Student;
查询全部列
select *
from 表名
查询列名还可以用数学算式
例3.19
SELECT SNAME,2014-SAGE
FROM STUDENT;
列的别名
在select 列名后 加别名
select Sname,'出生月份:',2021-Sage,LOWER(Sdept)
from student;
LOWER () 时小写显示 UPPER () 是大写显示
ALL 和DISTINCT
ALL 一般不写 如果选择出来有重复的数据 都会显示
箱单DISTINCT 比较常用 去掉重复值
SELECR DISTINCT .....
where 子句
在选择时候选择符合 where子句的数据
between and用法:(可以加not)
select Sname , Sdept,Sage
from student
where Sage between 18 and 23;
in用法:(可以加not)
select Sname,Ssex
from student
where Sdept in ('