SqlServer 数据库的学习
记录时间:2016年8月11日 上午10点
记录人:Mr.Liu
SQL知识点——数据库操作;数据库表操作;数据库表信息的增删改;数据库表信息的查;变量;SQL循环语句和条件语句
一、数据库操作
1.新建数据库
create database 数据库名
on
(
name = mydata_mdf,
filename = 'D:/data/mydata.mdf',
size = 3mb,
filegrowth = 1mb
)
log on
(
name = mydata_ldf,
filename = 'D:/data/mydata.ldf',
size = 3mb,
filegrowth = 1mb
)
2.数据库删除
drop datebase 数据库名
二、数据库表操作
1.新建数据库表
create table 表名
(
字段1 类型(长度) 约束,
字段2 类型(长度) 约束,
字段3 类型(长度) 约束,
...
)
2.修改数据库表
增加列: alter table 数据库表名 add 字段 类型(长度) 约束
删除列: alter table 数据库表名 drop column 字段
添加约束: alter table 数据库表名 add 约束(字段)
删除约束: alter table 数据库表名 drop 约束(字段)
3.删除数据库表
drop table 数据库表名
4.数据库约束
1. 主键约束 (primary key)一张表只能够有一个主键
2. 外键约束 (foreign key references )限定表格中某一列的取值必须是另外一种表中
某一不重复列的数据,一般是另一张表的主键
3. 非空约束 (not null)数据库表中该字段中必须填写参数
4. 唯一约束 (unique)表中该字段中的参数不能重复出现
5. 检测约束 (check)限定某个字段的表达式 age > 0 and age <100
6. 默认约束 (default)如果不给取值就使用默认值否则使用提供的值
三、数据库表信息的增删改
1.增:
单行: insert into table 数据库表名(字段1,字段2,...) values(参数1,参数2,...)
多行: insert into table 数据库表名(字段1,字段2,...)
select 参数1,参数2,... union
select 参数1,参数2,... union
select 参数1,参数2,...
2.改:
update 数据库表名 set 字段 = 参数 where 字段 = 参数 ( and 字段 = 参数)
3.删:
delete from 数据库表名 where 字段 = 参数 ( and 字段 = 参数)
四、数据库表信息的查
1.最简单的查询:
select * from 数据库表
2.函数查询----> 聚合函数
1.平均值 AVG --select AVG(字段) as '平均成绩' from 数据库表
2.最大值 MAX --select MAX(字段) as '成绩' from 数据库表
3.最小值 MIN --select MIN(字段) as '年级' from 数据库表
4.求和值 SUM --select SUM(字段) as '总成绩' from 数据库表
5.统计项数值 COUNT --select COUNT(字段) as '行数' from 数据库表
3.排序查询
order by (asc--升序[默认,可以不用写])/(desc--降序)
4.列不重复查询 -- distinct(关键字)
语法:
select distinct 字段 from 数据库表
5.TOP查询 -- 子句用于规定要返回的记录的数目
语法:
SELECT TOP number|percent column_name(s) FROM table_name
number --是返回记录的数目
percent --是返回记录的百分比
6.条件查询 -- where
语法:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
操作符 = <> > < >= <=
范围 between...and... not between...and... in () not in()
逻辑 not or and
模糊查询 like %匹配一个或多个字符 _匹配一个字符
[charlist]字符列中的任何单一字符 [^/!charlist]字符列外的任何单一字符
SELECT * FROM Persons WHERE City LIKE '[ALN]%'
代表: "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人
7.连表查询
"Persons" 表:
Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
"Orders" 表:
Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65
a.内连接(inner join) --有相同的就一起显示出来 没有相同的就不显示
语法:
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
列出所有人的定购:
select p.FirstName, p.LastName, o.OrderNo from Persons p inner join on Orders o where p.Id_P = o.Id_P
b.外连接(full join) --有相同的就一起显示,没有的直接显示为空(null)
语法:
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
列出所有的人,以及他们的定单,以及所有的定单,以及定购它们的人:
select p.FirstName, p.LastName o.OrderNo from Persons p full join on Orders o where p.Id_P = o.Id_P
c.左连接(left join) --左边的全部显示,右边没有的显示为空(null)
语法:
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
列出所有的人,以及他们的定购 - 如果有的话:
select p.FirstName, p.LastName o.OrderNo from Persons p left join on Orders o where p.Id_P = o.Id_P
d.右连接(right join) --右边的全部显示,左边没有的显示为空(null)
语法:
SELECT column_name(s) FROM table_name1 RIFHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
列出所有的定单,以及定购它们的人 - 如果有的话:
select p.FirstName, p.LastName o.OrderNo from Persons p right join on Orders o where p.Id_P = o.Id_P
五、SQL变量
1.全局变量(由系统定义的变量)
常见的全局变量:
@@ERROR 最后一个T-SQL错误的错误号
@@IDENTITY 最后一次插入的标识值
@@LANGUAGE 当前使用的语言名称
@@MAX_CONNECTIONS 可以创建的同时连接的最大数目
@@SERVERNAME 本地服务器的名称
@@VERSION SQL Server的版本信息
2.局部变量(自定义变量)
a.声明局部变量语法:
DECLARE @variable_name DataType --DECLARE @count int
其中 variable_name为局部变量的名称,DataType为数据类型。
b.给局部变量赋值有两种方法:
1、SET @variable_name=value --set @count=123
2、SELECT @variable_name=value --select @id=id from inserted
两者的区别:SET赋值语句一般用于赋给变量一个指定的常量,
SELECT赋值语句一般用于从表中查询出数据然后赋给变量。
六、SQL循环语句和条件语句
while循环:
while 条件
begin
执行操作
set @i=@i+1
end
示例:
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end
if条件:
declare @b int = 60;
if(@b>=60)
begin
print '合格'
end
else
begin
print '不合格'
end
case when条件:
Case具有两种格式。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END