黑马程序员_SQL基本语法

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

1.概述:DBMSDataBase Management System,数据库管理系统)

2.数据库分类:MSSQLServerOracle等某种DBMS

3.主键(PrimaryKey):就是数据行的唯一标识。不会重复的列才能当主键

  主键有两种策略:业务主键和逻辑主键。

  业务主键:是使用有业务意义的字段做主键,比如省份证号,银行账号等

  逻辑主键:是使用没有任何业务意义的字段做主键。给程序、开发人员看的字段(推

  荐)

4.外键(ForeignKey):表与表之间关联,表1外键指向表2的主键

5.SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法。

6.注意点

SQL语句中字符串用单引号

SQL语句大小写不敏感:关键字 表名,字符串中的内容大小写敏感

SQL 字段值 NULL不是空值,而是一个值,一个未知的值。与任何值运算任为NULL

SQL主要分DDL(数据库定义语言:Create TableDrop TableAlter Table等影响表结构)和DML(数据操作语言:Select Insertupdatedelete

7.设置主键:右键→设置主键→标识规范:是标识选是(自动增长)一个表只能有一个标识列

8.Guid作为主键保证永远都不会重复:GUID算法是一种可以产生唯一标识的高效算法。SQL数据库中GUID函数newid(), .Net中生成Guid的方法:Guid.NewGuid(),返回值是Guid类型。

9.Int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低;数据库导入导出的时候很痛苦。Guid的优点:效率高、数据导入导出方便;缺点占用空间大、不易读。

10.每个字段可以设默认值,Guid默认值是newid(),也就是说某个字段不插入的时候自动使用默认值

11.SQL基本语法

创建表:  CREATE TABLE T_PersonId int NOT Null,Name nvarchar(50),Age int Null

删除表:  Drop Table T_Person

修改表:  ALTER TABLE T_Employee ADD FSubCompany VARCHAR(20) // 添加字段

  ALTER TABLE T_Employee DROP column FSubCompany // 删除字段

插入数据:Insert into  T_Person(Id,Name,Age) values(1,'Tom',62)

更新数据:update person2 set age=108,Name='Lucy'update person2 set age=age+1)

数据过滤:update person2 set NickName=N'青年人'

              where (Age>=20 and Age<=30) or Age=80 →过滤条件

删除数据:Delete from Person2 where Age>20 //Delete只是删除表中的数据,不删除表

查询语句:select Fname as 姓名,FAge as 年龄,FSalary as 月薪From T_Employee

  select 1+as 列,getdate() as 日期,newid() as GUID // 与表无关

  SQL聚合函数max(最大值)count(数量)min(最小值)avg(平均值)sum() 

     select count(*) from T_employee // 聚合函数,对结果集进行统计

   select max(Fsalary) from T_employee

  select min(Fsalary) from T_employee

  select avg(Fsalary) from T_employee

  select sum(Fsalary) from T_employee

     select * from T_Employee where FAge in (23,25,28) // 要取的值

     select * from T_Employee where FAge between 20 and 30 // 范围取值

数据排序:select * from T_employee

  where FAge>24 // where过滤必须在order by 排序之前

  order by FAge DESC,FSalary ASC // 默认ASC升序,DESC 降序

模糊查询:通配符过滤使用Like:单字符"_",任意长度字符串"%"

     Select * from T_Employee

  where FName LIKE '_n%'

数据分组:select FAge,max(FSalary),count(*) From T_Employee // 根据年龄分组

  --where count(*)>1 // 聚合函数不应出现在WHERE 子句中

  group by FAge

  Having →用在group by 之后

    select FAge,count(*) From T_Employee

  where Fsalary>2000

  group by Fage

  having count(*)>1 // having 是分组以后数据过滤,where是原始数据过滤

限制行数:select top 3 * from T_Employee // 取前3条数据

  Order by Fsalary DESC 

  先取出前5条,再剩余的取出前3 // 分页

    Select top 3 * From T_Employee

  where FNumber NOT IN (select top 5 FNumber from T_Employee order by    Fsalary DESC) // 子查询

  order by Fsalary DESC

去重数据:Distinct 不是针对一个字段,而是针对整行,只有整行完全相同才去重复

  Select Distinct FDepartment,FSubCompany From T_Employee   

联合查询:上下两个要数相同,类型要相容

  Union 会自动去掉重复行,不去的话加ALL,即Union ALL

  select FName,FAge,FDepartment From T_Employee

  Union ALL

  select FName,FAge,'临时工,无部门' From T_TempEmployee

  //联合报表

  SELECT '正式员工最高年龄',MAX(FAge) FROM T_Employee

  UNION ALL

  SELECT '正式员工最低年龄',MIN(FAge) FROM T_Employee

  UNION ALL

  SELECT '临时工最高年龄',MAX(FAge) FROM T_TempEmployee

  UNION ALL

  SELECT '临时工最低年龄',MIN(FAge) FROM T_TempEmployee

  //工资合计

  Select FName,FSalary From T_Employee

  Union all

  Select '工资合计',SUM(Fsalary) From T_Employee

 

 

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值