提示: 用 ctrl+F 快速查找相关指令哦
-- 创建数据库
create database test_sql;
-- 修改数据库名称(只有 sysadmin 和 dbcreator 固定服务器角色的成员才答能执行 sp_renamedb)
sp_renamedb 'test_sql','exam_sql';
-- 删除数据库
drop database test_sql;
-- 引用数据库
use test_sql;
-- 创建表
- create table student(
- sid int NOT NULL PRIMARY KEY,
- sname VARCHAR(20) ,
- sage INT not NULL CHECK (sage BETWEEN 1 and 100),
- semail VARCHAR(50) CHECK (semail LIKE '_%@._%')UNIQUE
- );
-- 删除表
DROP TABLE student;
-- 增加列(列增加后将不能删除. DB2 中列加上后数据类型也不能改变, 唯一能改变的是增加 varchar 类型的长度)
ALTER TABLE student add sphone VARCHAR(16);
-- 添加主键
ALTER TABLE student ADD PRIMARY KEY(sid);
-- 删除主键
ALTER TABLE student DROP primary key(sid);
-- 创建索引(索引允许数据库高效找到关系中那些索引数组属性上取给定值的元组, 不用扫描所有元组)
create UNIQUE INDEX emailIndex on student (semail);
-- 删除索引 (索引是不可更改的, 想更改必须删除重新建)
drop INDEX emailIndex on student;
-- 创建视图 (存储数据库视图关系, 视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 我们可以向视图添加 SQL 函数, WHERE 以及 JOIN 语句, 我们也可以提交数据, 就像这些来自于某个单一的表)
CREATE VIEW studentView as SELECT sid from student;
-- 删除视图
DROP VIEW studentView;
-- 添加数据(需要注意主外键重复, check 等约束)
insert into student(sid,sname,sage,semail,sphone) VALUES (3,'test',17,'3@.com','15239958942');
-- 更新数据
update student SET sphone ='15239958914' where sage BETWEEN 10 and 20;
-- 查找数据
select * from student;-- 全部查找
select * from student where sid = 2;-- 条件查找
select * from student where semail like '%@%';--like 查找
select * from student ORDER BY sid DESC;-- 降序查找
select COUNT(DISTINCT sage) as sagecount from student ;-- 总数查找, DISTINCT age 查找不同年龄, 没有 disinct 表示找所有 sage 值不空的个数,*,1 代表查所有
select SUM(sage) as sagesum from student;-- 查找年龄总和
select AVG(sage) as sageavg from student;-- 查找平均年龄
select MAX(sage) as sagemax from student;-- 查找最大
select MIN(sage) as sagemin from student;-- 查找最小
-- 删除数据
DELETE FROM student where sid = 2;
-- UNION 运算符通过组合其他两个结果表 (例如 TABLE1 和 TABLE2) 并消去表中任何重复行而派生出一个结果表. 当 ALL 随 UNION 一起使用时(即 UNION ALL), 不消除重复行
select semail from student UNION select semail from users;
-- EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表. 当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL), 不消除重复行.
select semail from student EXCEPT select semail from users;
-- INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表. 当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL), 不消除重复行.
select semail from student INTERSECT select semail from users;
-- 左外连接(左连接): 结果集几包括连接表的匹配行, 也包括左连接表的所有行.
select student.semail from student LEFT JOIN users ON student.semail = users.semail;
-- 右外连接(右连接): 结果集既包括连接表的匹配连接行, 也包括右连接表的所有行.
select student.semail from student RIGHT JOIN users ON student.semail = users.semail;
-- 全外连接: 不仅包括符号连接表的匹配行, 还包括两个连接表中的所有记录
select student.semail from student FULL JOIN users ON student.semail = users.semail;
-- 一张表, 一旦分组 完成后, 查询后只能得到组相关的信息; 分组需要包含信息:(统计信息) count,sum,max,min,avg 分组的标准); 在 SQLServer 中分组时: 不能以 text,ntext,image 类型的字段作为分组依据; 在 select 统计函数中的字段, 不能和普通的字段放在一起.
select sage,sum(sage) as '年龄和' from student GROUP BY sage;
来源: https://www.cnblogs.com/yzqrtop/p/12818537.html