SQL语句1

SQL语句入门

SQL语句是和DBMS"交谈"专用的语句,不同DBMS都认SQL语法
SQL语句中字符串用单引号
SQL语句是大小写不敏感的, 不敏感指的是SQL关键字,字符串值还是大小写敏感的
创建表删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署,数据导入中用的很多
CREATE TABLE T_Person(Id int NOT NULL,Name nvarchar(50),Age int NULL)
Drop table T_Person
简单的Insert语句
INSERT INTO T_Person(Id,Name,Age) VALUES(1,'Jim',20)
SQL主要分 DDL(数据定义语言) Create Table / Drop Table等(操作数据本身)
DML(数据操作语言) Select / Insert等(影响表结构)

主键选择

SQLServer中2种常见的主键数据类型
1.int(或bright)+标识列(又称自动增长字段)
2.uniqueidentifier(Guid,UUID)
用标识列 实现字段自增可以 避免并发等问题,不要开发人员控制自增,一个只有一个标识
列用标识列的字段在Insert的时候不用指定主键的值

Guid算法是一种可以产生唯一标识的高效算法,它使用网卡MAC,地址,纳秒级时间,芯片ID码等算出来的,

这样保证每次生成的GUID永远不会重复,无论是同一个计算机还是不同的计算机 

SQLServer中生成GUID的函数newid() .Net中为Guid.NewGuid() 返回是Guid类型

Int自增字段的优点:占用空间小 无需开发人员干预 易读
                      缺点:效率低 数据导入导出时痛苦
Guid的优点:效率高 数据导入导出方便
           缺点:占用空间大 不易读
业界主流倾向于使用Guid

数据插入

Insert语句可以省略表名后的列名 但是不推荐
如果插入的行中有些字段的值不确定 那么Insert的时候不指定那些列即可
可以给字段默认值 如果Guid类型主键默认值设定为newid()就会自动生成 不推荐

数据更新

更新一个列 update 表名 set age=20
更新多个列 update 表名 set age=20,name='tom'
更新一部分数据 update 表名 set age=20 where name='tom'
用where语句 注意 SQL中等于判断用单个=(不是==)
where中还可以用复杂的逻辑判断 
可以使用的逻辑运算符 or and not < > >= <= !=(或<>)等

删除数据

删除表中全部数据 delete from 表名 (drop 表本身被删了)
delete也可以带where子句来删除一部分数据

数据检索

简单的数据检索 select * from 表名
只检索需要的列 select 字段名 from 表名
列别名  select 字段名 as xxx
使用where检索符合条件的数据 select 字段名 from 表名 where 条件

还可以检索不与任何表关联的数据 

select 1+1

        select newid()

        select getdate() 具体不和其他表相关(不用from 其他表)

select getdate() as 日期

数据汇总

SQL聚合函数 MAX MIN AVG SUM COUNT
大于25岁的员工的最高工资 select MAX(salary) from employee where age>25
最低最高工资 select MIN(salary),MAX(salary) from employee

数据排序

order by 子句位于select语句的末尾 
允许指定按照一个列或多个列进行排序 排序方式(升序ASC 降序DESC)
按照年龄升序排序所有员工信息的列表 select * from employee order by age ASC
年龄降序 年龄相同工资降序 select * from employee order by age DESC,salary DESC   
order by子句要放到where子句之后

通配符过滤

通配符过滤使用like
单字符匹配的通配符 半角下划线"_" 匹配单个出现的字符
任意字符开头,剩余部分为"erry":select * from 表名 where name like '_erry'
多字符匹配的通配符 半角百分号"%" 匹配任意次数(0或多个)出现的任意字符
检索姓名中含有字母"n"的员工信息:select * from employee where name like '%n%'

空值处理

数据库中 一个列没有指定值 这个值为null表示"不知道" select null+1结果是null 因为不知道加1结果还是不知道
select * from employee where name=(!=)null都没有任何返回结果 因为数据库也不知道
SQL中使用is null is not null来进行空值判断
select * from employee where name is null

多值匹配 

select age,number,name from xxx where age in(20,22,25)
范围值
select * from employee where age>=20 and age<=25(age between 20 and 25)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值