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零基础学习的更多相关文章

  1. salesforce 零基础学习(六十八)http callout test class写法

    此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...

  2. 零基础学习hadoop到上手工作线路指导(中级篇)

    此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结. 五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解: hadoop分为h ...

  3. 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce

      此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结.五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解:hadoop分为h ...

  4. 只要9.9元!零基础学习MySQL

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 导语 经过一段时间的筹备和整理,万里数据库<零基础学习MySQL>课程正式在腾讯课堂上线了. 课程地址:htt ...

  5. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  6. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  7. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  8. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  9. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

随机推荐

  1. js设计模式整理

    单例模式 恶汉式单例 实例化时 懒汉式单例 调用时构造函数模式 1.实现一 function Car(model, year, miles) { this.model = model; this.ye ...

  2. 多目标跟踪baseline methods

    参考文献: MOTChallenge 2015: Towards a Benchmark for Multi-Target TrackingLaura Leal-Taix ´e, Anton Mila ...

  3. Ubuntu下gcc的简单使用

    一直不怎么用gcc,今天看了大神们的笔试题,不得不动手开始写程序了,差距那个大啊. gcc是ubuntu下的终端编译器,可以用来写C.C++的程序,简单用法如下: vim name1.c 先用vim打 ...

  4. 折半查找(C语言)

    一.二分查找 在C和C++里,二分查找是针对有序数组所用的一种快速查找元素的方法. 二.二分查找的条件以及优缺点 条件:针对有序数组(元素从小到大或从大到小) 优点:查询速度较快,时间复杂度为O(n) ...

  5. hasura graphql auth-webhook api 说明

    hasura graphql 生产的使用是推荐使用webhook 进行角色访问控制的,官方同时提供了一个nodejs 的简单demo 代码 git clone https://github.com/h ...

  6. oracle 脚本创建数据库的相关文章,教程,源码

    学步园推荐专题: 关于oracle 脚本创建数据库的相关文章 文章标题 文章链接 文章简介 oracle命令行创建数据库的示例脚本 http://www.xuebuyuan.com/964527.ht ...

  7. 更新RDL文件中的数据集(DataSets)

    由于RDL XML文件中使用了两个命名空间: <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/ ...

  8. Android中Parcelable与Serializable接口用法

    转自: Android中Parcelable接口用法 1. Parcelable接口 Interface for classes whose instances can be written to a ...

  9. 华为5573+联通4G上网SIM+ROS hap ac-RB962UiGS-5HacT2HnT 上网

    华为5573+联通4G上网SIM+ROS hap ac-RB962UiGS-5HacT2HnT 上网 原理其实是这样的,ROS的USB口连接华为5573: 华为5573看成是一个路由器,他的外网网卡走 ...

  10. 0002_20190328_Centos修改系统时间

    一.   设置修改时间: 查看当前时区: [root@localhost bin]# date -R Thu, Mar :: + 2. 查看时间和日期: [root@localhost bin]# d ...