1) use
--use切换数据库的当前使用状态
在不适用use时,系统默认的是master数据库,要切换到自己的数据库
use 数据库名;
(2) go
--go表示将前面的SQL打一个包,一起执行
--go不属于T-SQL,它不是SQL语句的一部分
--go属于sqlcmd控制台命令
(3) create
<1>--创建数据库
--create database 数据库名
create database MyDatabase
go --创建数据库后边要带一个go,那样系统里面才能有数据库,然后才能执行下面的操作
<2>--创建数据库并指定路径,大小等
create database 数据库名
on
(
name='数据库逻辑名', --既数据库的名字
filename='文件名.mdf', --既创建的路径。
size=大小, --单位可以是M
filegrowth=增长, --M为单位,或%为单位
maxsize... --指定文件可增大到的最大大小
)
log on
(
name='数据库逻辑名_log',
filename='文件名.ldf', --log database file
size=大小, --单位可以是M
filegrowth=增长, --M为单位,或%为单位
maxsize...--指定文件可增大到的最大大小
)
create database MyDataBase
on
(
name = 'MyDataBase',
filename= 'G:\db\MyDataBase.mdf'
)
log on
(
name = 'MyDataBase_log',
filename='G:\db\MyDataBase.ldf'
)
<3>--建表
--create table 表名
--(
-- 字段名 类型名,
-- 字段名 类型名
--)
(4)drop
<1>--删除数据库drop database 数据库名
(5)db_id
--检查数据库是否存在
--db_id('数据库名')
if (DB_ID('MyDataBase')) is not null
drop database MyDatabase;
(6)OBJECT_ID
--检查表是否存在的方法
--if (OBJECT_ID('表名', 'U')) is null
--create table 表名
--(
-- id int
--)
(7)--增insert into 表名(字段名) values(值);
insert into
tblClass(classId, className, classDescription)
values (1, 'DotNet基础', '基础的课程');
(8)--删除数据
--delete from 表名 where 条件
delete from tblClass
(9)--修改数据
--update 表名 set 字段名 = 值 where 条件
update tblClass set className = 'DotNet高级';
(10)--查询数据
select * from tblClass
--将字段一个个列出来,不要使用*,这是一个不太好的习惯
--表名,建议使用"架构名.表名"描述(Schame)
(11)--清除表数据
--truncate table dbo.tblStudent
(11)--添加列的别名
1.列 as 别名 (列可以使自己定义的' ')
ClassName as 教室名字,
2.列 (空格) 别名
ClassName 教室名字,
3.别名=列
教室名字=ClassName,
(12)--排序,使用 order by 字段名
select * from 表名 order by EmpAge, 默认升序
--在后面标注ASC和DESC表示 升序和降序
select * from 表面 order by EmpAge desc
(13)--TOP 紧跟select 假如要选出3个人 select top 3
假如只要前三个人
select top(3)* from 表面 order by EmpAge desc,
取出前3%
top(3) percent
(14)--Distinct 去除重复的数据
select distinct* from 表名
这里的*不能使用,因为重复数据的id不同,所有要使用各个字段名。
(15)--group by
group by 字段名
group by 中有的字段才能出现在Select
group by 对数据进行分组,但是应注意分组的数据才允许select检索
group by 应写在from后面,但写在order by 前面.
(16)-- between and
表示条件范围
EmpAge between 18 and 23
(17) --in
字段 in(数值)
EmpAge in(17,18,21)
Emp Age in(18,21)
or
EmpAge between 5 and 16
(18)--模糊查询
_单个字符
% 多个字符
使用like
(19)--转义
T-SQL转义用[]
在方括号中,[^]也表示否定,就是不出现这个元素。、
name like '[^赵]%'
name not like '赵%'
(20)-- SQL逻辑
在SQL中,使用三值逻辑(true,false,unknow)
SQL中<> 不等于,在SQLServer 中允许!=
(21)--SQL 执行顺序
from -> whre ->group by-> select-> having
(22)--空值处理
查询所有生日为null的姓名
-> select Fname from T_Student Fbirthday is null
-> 判断null只能使用is或is not
is null和is not null
-> 函数 isnull(字段名, 替换值)
查询时专门为空值的字段显示处理
select isnull(字段,123) from 表名
-> 空字符串与null含义不同,空字符串依旧有内容
处理空字符可以使用len()函数和is null
(23)--having语句
-> having 是group by的条件对分组后的数据进行筛选(与where类似,都是筛选,只不过having是用来筛选分组后的组的。)
-> 在where中不能使用聚合函数,必须使用having,having要位于group by之后,
-> 查询班级人数超过三个人的班级
select FClassId,count(FName) from T_Student group by FClassId having count(FName)>3
-> 注意having中不能使用未参与分组的列,having不能替代where。作用不一样,having是对组进行过滤。
(24)--联合结果集
-> union就是将多个结果集合并成一个结果集
-> 查询语句1 union 查询语句2
-> union会自动合并重复的数据
-> union all会保留重复数据
一般都是使用union all,效率会高点
-> 联合需要注意类型一致
cast()函数可以实现数据的类型转换
cast(1234 as varchar(10))