标签:
SQLServer:前后后台进行数据交互
1、创建数据库
数据库-新建数据库(数据库文件,日志文件)
数据库、表、字段规范:英文名词开头,单词首字母大写。
以增强代码的可读性
对数据库进行操作的语句叫sql
2、创建表
ID 图片 价格 详情
表-新建表
表一般都必须有一个自增的主键
主键:通过主键找到对应的内容,主键是不能重复的。
设置主键- 标识规范(是)
3、数据类型:
char(10) 定长 会用空格补齐
nchar(10)定长
varchar(10)变长
nvarchar(10)变长 用户名 50
nvarchar(Max)不确定的内容,大量文本内容 Introduce
datetime时期类型 Birthday
int 整数 age
float小数 工资
bit bool类型 1true 2 false
4、修改表
5、允许null值 勾如果去掉,就不能为空
6、设置默认值 默认值或绑定
CreatedTime getdate()获取当前系统的值
7、不能保存的时候 工具-选项-designers-去掉阻止修改数据
8、删除数据库时,出现无法删除,数据库当前正在使用:解决方案:重启sqlserver服务 在顶级节点
二、SQL语句
1、创建数据库
create database Library
go
use Library
go
2、创建表
create table Users
{
UID int primary key, //创建ID 写表名+ID
UserName nvarchar(20) not null,
UserPwd nvarchar(20) not null
}
SQL语句不区分大小写
3、查询语句
select * from StuInfor
select StuId from StuInfor
在sql语句里字符串是单引号
select * from StuInfor Country=‘中国‘ and ClassName=‘一班‘
select * from StuInfor Country=‘中国‘ and (ClassName=‘一班‘ or ClassName=‘二班‘)
select * from StuInfor Country=‘中国‘ and ClassName in(‘一班‘,‘二班‘)
排序: desc大到小 默认小到大
select * from StunInfor order by Age desc
年龄最大的三个同学
select top 3 * from StunInfor order by Age desc
select top 3 StuName from StunInfor order by Age desc
介于之间 区间
select * from StuInfor where Age>=24 and Age<=28
select * from StuInfor where Age between 24 and 28
统计 用as重新命名
select count(*) as StuCount from StuInfor where ClassName=‘一班‘
分组
select country,count(*) as StuCount from StrInfor group by Country
分组筛选 以什么分组,就是前面可以用的字段
国家大于2
select country,count(*) as StuCount from StrInfor group by Country having cout(*)>2
模糊匹配 like % 开头 小% 结尾 %小 包含 %小%
所有姓小的同学
select * from StuInfor where StuName like ‘小%‘
计算
select SUM(age) from StuInfor
select MIN(age) from StuInfor
select MAX(age) from StuInfor
select AVG(age) from StuInfor
年龄大于平均年龄值的学生
select * from StuInfor where Age>(select AVG(age) from StuInfor)
增删改查最难的是查询
联合查询 别名
主键 外键
select StuId,StuName,ClassName from StuInfor
select SI.StuId.SI.StuName,SI.ClassName,PE.FatherName,PE.MotherName from StuInfor SI
left join Parenet PE
on SI.StuId=Pe.StuId
left join 以左表为主,左表内容都会显示出来。右表里没有的数据以null填充
right join 以右表为主,右表的内容都会显示出来,左表里没有的数据以null填充
inner join 以公共为主
三个表进行联合查询 把前面的联合查询做为一个表 再和另一个表查询
语文成绩 数学成绩
select SP.StuId,SP.StuName,SP.ClassName,SP.FatherName,SP.MotherName,SC.EnlishScore,SC.ChineseScore
from
(select SI.StuId.SI.StuName,SI.ClassName,PE.FatherName,PE.MotherName from StuInfor SI
left join Parenet PE
on SI.StuId=Pe.StuId) SP
inner join Score SC
on SP.StuId=SC.StuId
四个表的联合查询 需求就有点问题了。
标签:
原文地址:http://www.cnblogs.com/16lily521/p/4925068.html