20151019sql1

一基础知识

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

 

四个表的联合查询 需求就有点问题了。

 

posted @ 2015-10-31 10:20  lily521  阅读(161)  评论(0编辑  收藏  举报