数据库必须掌握基础知识

1.概念

1.1 Sqlserver2008 数据库

 数据库
 表(是数据库的基本单元)
 列
 行

1.2 数据库管理工具.

1.3 数据库管理员(DBA)

1.4 SQL Server(SQLEXPRESS)是sqlserver的

  核心服务.(配置管理工具中)

注意:当要使用sqlserver 用户登录时,需要
用window登录启动混合验证方式.

2.约束

2.1 主键(唯一标志,唯一并且不能为空)

 id(可以认为是主键)

注意:建议每个表都要设置主键.
由多个列组成的主键是复合主键.

2.2 外键

 主表(需要引用的主键列的表)
 从表(用外键列的表)

2.3 非空约束

2.4 唯一约束

2.5 检查约束

3.SQL(结构化查询语言)

3.1 分类

DDL(数据定义语句)
   create table(创建表),
   drop table(删除表)
DML(数据操作语句)
  insert(增加)
  update(修改)
  delete(删除)
DQL(数据查询语句)
  select
DCL(数据控制语句)
  grant(授权)
  revoke(取消授权)
TCL(事务控制语句)
  commit(提交),rollback(回滚)

3.2 运算符(数据库)

算术运算符(+,-,*,/)
比较运算符(>,<,=,!=,<>(不等于)..)
逻辑运算符(and,or,not)
赋值运算(=)

3.3 DML

  1).insert(增加)
      语法:insert into 表名(列名,..)
           values(值,..)
      注意:1.主键不要查(设置主键自增长的)
	   2.列的个数和values值的个数要一致
             并且成要对应关系.
           3.字符值用''包裹起来.
	   
     a)复制数据
       inesrt into 表名(列名...)
       select 列名... from 源表名.
     b) 复制数据+结构
       select 列名...
       into  新表名
       from 源表名
     c) union插入多条数据
       insert into 表名(列名...)
       select 值1... union
       select 值2... union
       select 值3...
     d)插入时间
       默认格式 '年年年年-月月-日日'
  2) update 修改
     语法: 
       update 表名 set 列名 = 值,..
       [where 选择条件]
   注意:
      1、更新多列数据使用逗号隔开
      2、勿忘条件限制,以防有效数据的丢失
   补充:
       a.日期比较:=
       b.判断列是否为空:is null
                         is not null
   3) delete 删除
     语法: delete from 表名
           [where 过滤条件]
      
     补充:truncate table 表名--截断表
           跟delete from 表名类似
	   删除整个表的数据.
      注意:截断表示不能回滚的.
           delete from 是可以回滚.
      补充: 事务,commit 提交.
                 rollback 回滚.

3.4 DQL(数据查询语言)

 结构:select 列名...
       from  表名
   where 过滤条件
   order 排序(desc/asc)
 1) 别名
    select 列名  [as] 列别名 from ....
 2) 查询null值
    select .. from .. where
 列名 is null
注意: null ,'null',''
     是不相同的.null表示空
     'null': 表示null字符串
     '':表示空串.
 3) 限制行数
    select top 数量 列名..
from ...
  例: select top 5 sname 
  from astudent

4.函数

4.1 分类

字符串函数
时间函数
数学函数
系统函数

4.2 函数

 select CHARINDEX('b','abc'); -- 返回指定字符1在字符串2中出现的位置(下标)
   select LEN('abc'); -- 字符串长度
   select UPPER('abc'); --变成大写
   select LTRIM('  abc');--去掉左边空格
   select RTRIM('abc  ');--去掉右边空格
   select RIGHT('abcbedd',3);--从右边开始返回指定长度的值
   select REPLACE('abbbc','b','3');--用str3替换str1中的str2
   -- 删除中arg1从arg2位置开始arg3个字符,并在这个位置插入arg4
   select STUFF('abbbc',2,3,'dddddddd');

   --获得当前系统的时间
   select GETDATE();
   --将指定的数值添加到指定的日期部分后的日期
   select DATEADD(YYYY,4,'01/01/2009');
   -- DD表示:日
   -- MM表示:月
   -- YYYY表示:年
   -- DW:星期几

   --两个日期之间的指定日期部分的间隔
   select DATEDIFF(MM,'01/01/2009','05/01/2010');                                         	  

    --日期中指定日期部分的字符串形式
    select DATENAME(DD,GETDATE());
    
    --日期中指定日期部分的整数形式
    select DATEPART(DD,'01/05/2000');
    
    -- 数学函数
    --返回从0到1 之间的随机float值 
    select RAND();
    --绝对值
    select ABS(-1);  -- 1
    --向上取整
    select CEILING(43.2); --44
    --向下取整
    select FLOOR(43.8); --43
    --求次幂
    select POWER(2,3);  --8
    --四舍五入 arg2表示保留几位小数
    select ROUND(23.5,0);
    -- 对于正数返回+1,对于负数返回-1,对于0则返回0
    select SIGN(-22);  -- -1
    --取浮点表达式的平方根
    select SQRT(16); -- 4
    
    --系统函数
    --用来转变数据类型
    select CONVERT(varchar(5),12345);--把整数变成字符串
    select CONVERT(int,'12345'); --把字符串变成整数
    --返回当前用户的名字
    select CURRENT_USER;
    
    --返回用于指定表达式的字节数
    select DATALENGTH('123');
    --返回当前用户所登录的计算机名字
    select HOST_NAME(); 
    --返回当前所登录的用户名称
    select SYSTEM_USER; --sa
    --从给定的用户ID返回用户名
    select USER_NAME(1);   

5.模糊查询和聚合函数

5.1 模糊查询

1) like(模糊匹配)
 语法: .... where 列名 like '匹配规则'
 匹配符: %: 任意个任意字符
         _: 一个任意字符
     [0-9]: 表示0到9其中的任意一个
         [^0-9]: 非0-9中的任意一个.
2) betweeen ... and...(在什么和什么之间)
 注意:包含前面也包含后面(闭区间)
3) in:在什么中的任意一个.
   例:...where 列名 in (1,2,3,4)

5.2 聚合函数

 max:求最大值
 min:求最小值
 sum:求和
 avg:求平均值
 count:统计记录数
 例: select count(1) from 表名.   

6. 分组

语法:
select … 5
from …表 1
where …过滤条件 2
group by …分组 3
having … 分组过滤 4
order by …排序 6

注意: a) 分组的sql中,列只能是
分组(聚合)函数和被分组的列.
b) having 后面一般接的
分组的函数的过滤条件.
c)where和having的对比.
WHERE子句:
用来筛选FROM子句中指定的操作所产生的行
GROUP BY子句:
用来分组WHERE子句的输出
HAVING子句:
用来从分组的结果中筛选行
d)多个列分组,就先按第一个分组,
然后每一组再然后面的列分组.

7. 多表连接

7.1 分类

内连接
外连接
   左外连接
   右外连接

7.2 内连接

select ...
from 表1 inner join 表2 on 关联条件.
原理: 表1(主表)的每一条记录和表2(从表)
     的每一条记录去比较.如果符合关联
 条件,那么这2条记录会合并一条记录
 放进结果集中.如果没有符合条件,
 就不放在结果集中.  
简写: select ..
      where 表1,表2 where 关联条件.

7.3 外连接

select ...
from 表1 left join 表2 
on 关联条件.

原理: 表1(主表)的每一条记录和表2(从表)
的每一条记录去比较.如果符合关联
条件,那么这2条记录会合并一条记录
放进结果集中.如果没有符合条件,
就会把主表的值+null值合并一条
记录放入结果集中.
注意:
左外连接:以左边的表作为主表
右外连接: 以右边的表作为主表.

7.4 三表以上的连接.

select * 
from 表1 inner join 表2 on 关联条件
     inner join 表3  on  关联条件

注意:先把表1和表2按要求合并成一个结果集.
然后把这个结果集看成一个表,再和
表3按要求进行匹配,生产新的结果集.
一次类推.

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值