LONER 发表于 2016-7-26 14:52:31

SQL 基础入门

1、概念
DBMS(DataBase ManagementSystem)数据库管理系统和数据库,平时我们说的数据库有这两种含义:MSSQLServer、Oracle等某种DBMS;存放一堆数据表的一个分类(Catalog)。
除了Access、SQLServerCE等文件型数据库之外,大部分数据库都需要数据库服务器才能运行。。学习、开发的时候是连接本机的数据库。上限运行时的数据库运行在单独的服务器中。
Catalog(分类)(又叫数据库database、表空间),不同的类的数据应该放到不同的数据库中
Table(表)
Column(例)、field(字段)
主键(primarykey):主键就是数据库的唯一标识,不会重复的列才能当主键,因此没有特殊理由表都要设定主键。主键分为业务主键合逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证、银行账号。逻辑主键是使用没有任何业务意义的字段做主键。完全给程序看的,业务人员不会看的书剑,应为很难保证业务主键不会重复、不会变换。
表间关联、外键(Foreignkey)
2、SQL数据类型
数据类型:bit 是bool类型为0或1;char字符;bigint是64位的整数;nvarchar(max)无线大的字符串,可能含有中文;varchar无线大的字符串,不含中文等
注意:char(n)当数据没有到n为的时候,剩下的会用空格来填充,而varchar(n)不会
3、SQL语句:
SQL语句是专门用来与DBMS交谈的语句,不同的DBNS都认SQl语法
SQL中字符串用单引号
SQL语句的关键字大小写不敏感,但是字符串值还是大小写敏感的
创建表、删除表不仅可以手工完成,还可以执行SQL语句完成。在自动部署、数据导入中用的很多。
向表里面添加数据的语句:
Insert into Person(name,age,..) values('刘洋',30,...) //peson是表名,name,age等是表里面的列,values是对应列的值
3、SQL主要分为:
DDL(数据定义语言) 和DML(数据操作语言)
4、主键的选取
长用来做主键的数据类型:int(或bigint)+标识例(又称自动增长字段)、uniqueidentifier(又称Guid、UUID)
属性中表识列设置为是就行了
GUID算法是一种可以产生唯一标识的高效算法
Int自增字段的优点:占用空间小,无需开发人员干预,易读;缺点:效率低,数据导入导出痛苦
GUID的优点:效率高、数据导入导出方便;缺点:占用空间大
目前,业界都用的是GUID
5、数据插入
创建表:
Create table person(id int not null,namenvarchar(50),age int null)
删除表:drop table person
如果插入的航中有些字段的值不确定,那么insert的时候不指定那些列就行了
右击数据库查询即可写入DDL(数据定义的一些代码)
例:insert into persons(id,name,age) values(newid(),'lily',10) //GUID添加表内容的语句,这里newid()是一个函数,要叫上括号,不要忘了
6、数据更新:
更新一个列:UPDATE T_Person Set Age=30;//文件名为T_person,列名位age,更新值为30;
更新多个列:UPDATE T_Person Set Age=30,Name='tom'
更新一部分数据:UPDATE T_Person Set Age=30 where Name='tom';//修改名字为tom的年龄
Where中可以有负责的逻辑判断,如or , and, not , < , > ,>=, <= ,!=(或<>)等等
注意:如果在语句中出现中文语句,最好是在前面加N。
例:UPDATE T_Person SetName=N'小王'where Age>30
7、数据删除
删除表中全部数据:DELETE FROM T_Person (只删除表中的内容,表还在)
Drop Table是将整个表一起删除
Delete也可以带where与子来删除数据中一部分:例:delete from person where age>30
8、数据检索(重点)
执行备注中的代码创建测试数据表
简单的数据检索:SELECT *FROM   Person(文件名)//*表示整个表
值检索需要的列:SELECT FNunmber FROM Person
                SELECT FNunmber ,FageFROM Person

检索的时候给列取别名:SELECT FNumber AS 编号,FName AS 姓名,FAge AS Age1 11 FROM Person
使用where检索负荷条件的数据:SELECT FNunmber FROM Person Where Fage>30

9、数据统计
Select count(*) from person//查询表中有多少条数据
Select max(slary) from person //查询表person中的最高工资
这些统计的函数count( ), max( ),min( ) 这些函数叫集合函数,聚合函数不能出现在where子句中。

10、数据的排序
Select ... From .... Order by .... //根据什么排序
Select ... From .... Order by ... Asc //升序
Select ... From .... Order by ...desc //降序
select * from person order by age desc,slaryasc; //可以用逗号隔离多个排序条件,越前面越优先
ORDER BY 子句位于SELECT语句的末尾,他允许指定按照一个列或者多个列进行排序(ASC为升序,DESC为降序),如果有where,order by要放在where的后面

LONER 发表于 2016-7-26 14:53:03

11、通配符过滤
使用LIKE进行通配符过滤
单字符匹配的通配符为半角下划线"_"
例:SELECT * FROMPERSON WHERE Fname LIKE '_erry' //过滤除名字是以erry结尾的
多字符匹配的通配符为半角百分号“%”,它匹配任意此处(包含0)出现的任意字符。“K%”匹配以K开头、任意长度的字符串。
例:检索姓名中包含字母n的员工信息:
Select * fromperson wherename like'%n%';


12、空值处理
注意:null表示不知道,所有与null进行的运算都为null
查询数据中为空null的方法:
select * from person where name isnull
不为空:
select * from person where name is not null


13、多值匹配:
Or 、in、and、between。。And
select * from person where name isnullor age is null
select * from person where name isnullandage is null
select * from person where name isnullor age is null
select * from person where age in(27,32,43)
select * from person where age between 20 and30


14、数据分组
Group by //按什么分组,必须放在where的后面
select slary,count(*) from person group byslary //按slary分组,统计每组的个数,给出每组的slary

15、having子句
select slary,count(*) from person group byslary having count(*)>1
应为聚合语句不能放在where语句中,出现了having,该语句放在group by后面
Having一般是跟group by合用


16、限制结果集的行数
select top 3 * from person order by slary DESC;//去前三条数据
取出降序排序检索从第六开始三个人的信息
select top 3 * from person where slary not in(select top 5 slary from person order by slary DESC)
order by slary DESC

17、如何去掉重复数据
Distinct:是对整个结果集进行数据重复处理,而不是正对每一个列,
select distinct age from person

18、联合结果集

Union:
不仅合并,还把合并后重复的数据合并
简单的结果集联合:
select name from person
union
select name from person2
基本原则:每个结果必须有相同的列数,每个结果的列必须类型相容
Union all:
不仅合并,还把合并后重复的数据不合并
页: [1]
查看完整版本: SQL 基础入门