码迷,mamicode.com
首页 > 数据库 > 详细

SQL server2008零基础学习

时间:2015-11-30 00:53:06      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

SQL 基础

数据库简介:

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

数据库常见产品

技术分享

SQLServer数据库

美国Microsoft公司推出的一种关系型数据库系统。SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。

其主要特点如下:

(1)高性能设计,可充分利用WindowsNT的优势。

(2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。

(3)强壮的事务处理功能,采用各种方法保证数据的完整性。

(4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。

安装SQLServer

启用SA用户远程登录

设置密码

技术分享

开启SA用户。

技术分享

技术分享

点击属性,启用远程连接。

技术分享

重启服务,使其生效。

命令:services.msc

技术分享

TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING

1433端口是开启的。当我们关闭服务后,端口也将关闭。

数据库语言

数据查询语言DQL

DQL:(Data Query Language) SELECT 数据查询语言

数据操纵语言DML

如insert,delete,update,select(插入、删除、修改、检索)

数据定义语言DDL

如drop,alter,truncate等都是DDL

数据控制语言DCL

DCL(Data Control Language)是数据库控制语言。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL

创建第一个数据库

新建数据库

技术分享

限制增长:

技术分享

数据库的文件后缀

ydxx.mdf

日志文件后缀

ydxx _log.ldf

技术分享

数据类型

技术分享

第一大类:整数数据

bit:bit数据类型代表0,1或NULL,就是表示true,false.占用1byte.

int:以4个字节来存储正负数.可存储范围为:-2^31至2^31-1.

smallint:以2个字节来存储正负数.存储范围为:-2^15至2^15-1

tinyint: 是最小的整数类型,仅用1字节,范围:0至此^8-1

第二大类:精确数值数据

numeric:表示的数字可以达到38位,存储数据时所用的字节数目会随着使用权用位数的多少变化.

decimal:和numeric差不多

第三大类:近似浮点数值数据

float:用8个字节来存储数据.最多可为53位.范围为:-1.79E+308至1.79E+308.

real:位数为24,用4个字节,数字范围:-3.04E+38至3.04E+38

第四大类:日期时间数据

datatime:表示时间范围可以表示从1753/1/1至9999/12/31,时间可以表示到3.33/1000秒.使用8个字节.

smalldatetime:表示时间范围可以表示从1900/1/1至2079/12/31.使用4个字节.

第五大类:字符串数据

char:长度是设定的,最短为1字节,最长为8000个字节.不足的长度会用空白补上.

varchar:长度也是设定的,最短为1字节,最长为8000个字节,尾部的空白会去掉.

text:长宽也是设定的,最长可以存放2G的数据.

第六大类:Unincode字符串数据

nchar:长度是设定的,最短为1字节,最长为4000个字节.不足的长度会用空白补上.储存一个字符需要2个字节.

nvarchar:长度是设定的,最短为1字节,最长为4000个字节.尾部的空白会去掉.储存一个字符需要2个字节.

ntext:长度是设定的,最短为1字节,最长为2G.尾部的空白会去掉,储存一个字符需要2个字节.

第七大类:货币数据类型

money:记录金额范围为:-92233720368577.5808至92233720368577.5807.需要8 个字节.

smallmoney:记录金额范围为:-214748.3648至214748.36487.需要4个字节.

第八大类:标记数据

timestamp:该数据类型在每一个表中是唯一的!当表中的一个记录更改时,该记录的timestamp字段会自动更新.

uniqueidentifier:用于识别数据库里面许多个表的唯一一个记录.

第九大类:二进制码字符串数据

binary:固定长度的二进制码字符串字段,最短为1,最长为8000.

varbinary:与binary差异为数据尾部是00时,varbinary会将其去掉

image:为可变长度的二进制码字符串,最长2G.

主键

在相续建立数据库

分离数据库表,表名:bj(班级的意思)

完善表单

基础查询

SQL 注释(不执行)

第一种:单行

select * from bj --select * from bj

技术分享

第二种:多行

select * from bj /*select * from bj*/

技术分享

查询所有:

Select * from 表名

select * from bj

技术分享

查询指定列

select 列名,列名 from 表名

select name,sex,age from bj

技术分享

条件查询 where字句

SELECT 列名 FROM 表名 where 条件

select*from bj where name=‘羊大仙‘

技术分享

查年龄大于10岁的所有记录

select * from bj where age>10

技术分享

查询所有人的数量(count 聚合函数)

select COUNT(*) from bj

技术分享

范围查询(between)

select*from bj where id between 2 and 8

技术分享

查询所有不等于23岁的记录

select * from bj where age<> 23

技术分享

模糊查询(like)

1,百分号代表所有,但不包括空

select * from bj where address like‘%‘

技术分享

2,匹配中间

select*from bj where phone like ‘%22%‘

技术分享

3.查询姓名中包含姓羊的

select * from bj where name like‘%羊%‘

技术分享

4,查询电话号码中包含“9 ”的

select * from bj where phone like‘%9%‘

技术分享

,5匹配开头(匹配电话号码前包含“1”的)

select*from bj where phone like ‘1%‘

技术分享

6.匹配结尾(匹配电话号码后结尾包含“4”的)

select*from bj where phone like ‘%4‘

技术分享

7,匹配开头和结尾(开头为“1”,结尾为“4”的)

select*from bj where phone like ‘1%4‘

技术分享

8,匹配单个字符(匹配一个后面为33的一个数)。

select*from bj where phone like ‘_33%‘

技术分享

9,匹配多个字符

select*from bj where phone like ‘_[a-z-1-9]7%‘

1

技术分享

10,不匹配

select*from bj where phone like ‘_![8][!7]%‘

技术分享

查询NULL

1,查询非null

select*from bj where phone is not null

技术分享

2.查询null值

select*from bj where address is null

技术分享

逻辑查询

1,AND查询

SELECT*FROM bj where name=‘羊大仙‘ and sex=‘男‘

技术分享

2,OR查询

SELECT*FROM bj where name=‘羊大仙‘ or sex=‘女‘

技术分享

3,OR进行查询

select * from bj where id=5 or id=7 or id=1

技术分享

3,IN查询

select * from bj where id=5 or id=7 or id in(1,3,5,7)

技术分享

4,NOT IN 查询

select * from bj where id not in(1,3,5,7)

技术分享

TOP字句

1,查询前两行

SELECT TOP 3 * FROM BJ

技术分享

2附加语句

2.1:查询前三行ID大于6 且ID不等于7不等于8的值

SELECT TOP 3 * FROM BJ where id>6 and id<>7 and id<>8

技术分享

2.2:查询前三行ID大于6 且ID不等于7不等于8的值(优化版)

SELECT TOP 3 * FROM BJ where id>6 and id not in(7,8)

技术分享

ORDER BY 语句

顺序语句

1,ACS(默认、正序)

SELECT * FROM BJ order by id ASC

select * from bj order by age,id

技术分享

2,DESC(倒叙)

SELECT * FROM BJ order by id DESC

技术分享

3,按照年龄从小到大查询

select * from bj order by age asc

技术分享

4,按照年龄从大到小查询

select * from bj order by age desc

技术分享

5.1,查询表的列(正确)

select * from bj order by 7

select * from bj order by 1,2,3,4,5,6,7

技术分享

5.2,查询表的列(错误)只有7列

select * from bj order by 8

select * from bj order by 1,2,3,4,5,6,7,8

技术分享

DISTINCT 去除重复数据

select distinct age from bj order by 1

技术分享

数据库关系图

在数据库中,选择数据库关系图,右键 ,新建数据库关系图。然后进行选表

技术分享

插入语句(INSERT INTO)

INSERT INTO bj (列1, 列2,...) VALUES (值1, 值2,....)

第一种:完整写法

insert into bj (id,name,sex,age,greadname,phone,address) values(‘14‘,‘阿花‘,‘女‘,‘20‘,‘九年级‘,‘1878664624834‘,‘重庆市南岸区南坪协信城‘)

技术分享

技术分享

第二种:简单写法

(写法如下,但是id要是自动增长的情况是使用有效,id不是自动增长的话不能执行,本人id不是自动增长,所有无法执行,仅供参考参考)

insert into student values (‘小芳‘,‘女‘,‘18‘,‘初中‘,‘137694743‘,‘北京市昌平区回龙观‘);

技术分享

更改列名显示名称(加as)

select COUNT(name) as‘姓名‘ from bj where name=‘羊大仙‘

技术分享

删除语句(DELETE 语句)

delete from bj where id=16

技术分享

通过模糊查询删除姓胖的

delete from bj where name like ‘胖%‘

语句执行前

技术分享

语句执行后

技术分享

技术分享

修改语句(UPDATE)

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

将name为‘羊大仙’的修改为‘胖子’

update bj set name=‘胖子‘ where name=‘羊大仙‘

执行语句前

技术分享

执行语句后

技术分享

技术分享

技术分享

or

技术分享

把胖妹的的地址改成‘羊大仙的家里‘

update bj set address=‘羊大仙的家里‘ where name=‘胖妹‘

语句执行前

技术分享

语句执行后

技术分享

技术分享

把性别为男的年级全部改成学前班

update bj set sex=‘男‘ where greadname=‘学前班‘

执行语句前

技术分享

执行语句后

主外键

首先建立好两个数据库

第一个

技术分享

第二个

技术分享

开始建立主外键

技术分享

技术分享

技术分享点击确认》然后关闭》最后shift+s保存 点击 》是

技术分享

在右键数据库关系图》新建数据库关系图》选自己建立的哪啊两个表》添加》在自命名保存

技术分享

查看数据库:yyyyy

技术分享

查看数据库:ydxx

技术分享

在数据库yyyyy中添加数据

技术分享

查看(应该之前添加过数据有删除,所以这里的id从24开始增长的)

技术分享

开始在ydxx表中插入外键关联

技术分享

插入成功

技术分享

查看

技术分享

插入没有的id值

技术分享

执行命令

技术分享

结束。。。。。

更改列查询

select id as ‘学好‘,name as ‘姓名‘, age as ‘年龄‘,sex as ‘性别‘,gradeid as ‘年龄‘,address as ‘地址‘,phone as ‘电话‘ from ydxx

技术分享

两表联查

第 一种:两表联查

select

ydxx.id as ‘学号‘,name as ‘姓名‘, age as ‘年龄‘,‘年龄‘,address as ‘地址‘,phone as ‘联系方式‘,yyyyy.gradename as ‘班级‘

from ydxx , yyyyy

技术分享

子查询

子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。在此示例中,子查询用作 SELECT 语句中名为 MaxUnitPrice 的列表达式。

select

ydxx.id as ‘学号‘,name as ‘姓名‘, age as ‘年龄‘,sex as ‘性别‘,

address as ‘地址‘,phone as ‘联系方式‘,

(select gradename from yyyyy where yyyyy.id=ydxx.gradeid)

from ydxx

技术分享

查询阿宗在那个班级

select yyyyy.gradename from yyyyy

where id = (select gradeid from ydxx where name = ‘阿宗‘)

技术分享

查询二年级的所有学生

select name,age,sex,gradeid from ydxx where ydxx.gradeid=(select id from yyyyy

where

gradename=‘二年级‘)

技术分享

查询二年级的所有学生

select ydxx.name,ydxx.sex, ydxx.age from ydxx

where

ydxx.gradeid =(select id from yyyyy where gradename like ‘二年级‘)

技术分享

嵌套子查询

select name,sex,(select (select 1+5)+2) as ‘分数‘ from ydxx

技术分享

SQL 高级

SQL Top

SQL Like

SQL In

SQL Join

SQL Inner Join

SQL Union

SQL 函数

聚合函数

聚合对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用

聚合函数在什么地方才能使用

1、SELECT 语句的选择列表(子查询或外部查询)。

2、COMPUTE 或 COMPUTE BY 子句。

3、HAVING 子句

常用函数

SQL avg(平均)

SQL count(总数)

SQL first()

SQL last()

SQL max(最大)

SQL min(最小)

SQL sum(综合)

SQL Group By

SQL Having

SQL ucase()

SQL lcase()

SQL mid()

SQL len()

SQL round()

SQL now()

SQL format()

1、COUNT函数

1.1、查询所有班级总数,所有班级学生

select count(*) as ‘学生总数‘ from ydxx

select COUNT(*) as ‘班级总数‘from yyyyy

技术分享
2、MAX函数

2.1、查询班级里最大的年龄

SELECT MAX(ydxx.age)as ‘最大年龄‘ from ydxx

技术分享

3、MIN函数

3.1 查询班级里最小的年龄

SELECT MIN(ydxx.AGE)AS ‘最小年龄‘ FROM YDXX

技术分享

3.2、同时查询最大的年龄和最小的年龄

select MAX(ydxx.age) as ‘最大年龄‘,MIN(ydxx.age) as ‘最小年龄‘ from ydxx

技术分享

4、AVG函数

4.1、查询平均年年

select AVG(ydxx.age) as ‘平均年龄‘ from ydxx

技术分享

4.2、查询大于平均年年龄的学员

select name,age,sex,gradeid from ydxx where ydxx.age>(select AVG(ydxx.age) as ‘平均年龄‘ from ydxx)

技术分享

5、SUM函数

5.1、查询所有学员年龄的总和

select sum(ydxx.age) as ‘所有学员年龄的总和‘ from ydxx

技术分享

 

 

 

后带更新。。。。

SQL server2008零基础学习

标签:

原文地址:http://www.cnblogs.com/ydxred/p/5005998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!