3.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,'Jin',20)
(*) sql 主要分ddl数据定义语言和dml数据操作语言两类,create table、drop table,alter table等属于ddl,select、insert、delete、update等属于DML
sql server中两种常用的主键数据类型:int or bigint + 标识列(又称自动增长字段);uniqueidentifier(又称Guid、UUID)
用标识列实现字段自增可以避免并发的问题,不要开发人员控制自增。用标识列的字段在insert的时候不用指定主键的值。将字段的是标识列设为是,一个表只能有一个标识列。
Guid算法是一种可以产生唯一标识的高效算法,它使用网卡mac、地址、纳秒级时间、芯片id码等算出来的,这样保证每次生成的guid永远不会重复,无论是同一个计算机还是不同计算机。在公元3400年以前产生的guid与任何其他产生过的guid都不相同。sql server中生成guid的函数newid(),.net中生成guid的方法:Guid.NewGuid(),返回的是Guid类型。
int自增字段的优点:占用空间小、无需开发人员干预、易读;缺点:效率低,数据导入导出的时候很痛苦
Guid的优点:效率高、数据导入导出方便,缺点:占用空间大,不易读。
业界主流倾向使用Guid
数据插入insert
insert语句可以省略表名后的列名,但是不推荐
如果插入的行中有些字段的值不确定,那么insert的时候不指定那些列即可。
可以给字段默认值,如果Guid类型主键可以默认值设为newid()就会生产,很少这么做!
主键: insert into person(name,age) values('kk',29);
数据更新update
更新一个列update person set age=20;
更新多个列update perosn set name='jj',age=40
更新一部分数据update person set age=20 where name='kk'; sql中等于判断用单个=,而不是==
where中还可以使用复杂的逻辑判断update person set age=40 where name='jj' or age>30,or相当于c#中的||或者
where中可以使用的其他逻辑运算符:or,and,not,<,>,>=,<=,!=(or <>)等
数据删除delete
删除表中全部数据:delete from table1
delete只是删除数据,不删除表,drop table是删除表
delete也可以带where条件子句来删除部分数据:delete from table where name='tt'
数据检索select
简单的数据检索:select * from employee
只检索需要的列:select fid,fname from employee
列别名:select fname as 姓名 from employee
使用where检索符合条件的数据:select fname from employee where fsalary>1000
可以检索不与任何表关联的数据:select 1+2,select newid(),select getdate()
数据汇总
sql聚合函数:max最大值,min最小值,avg平均值,sum和,count数量
大于25岁的员工的最高工资:select max(salary) from employee where age>25
最低工资和最高工资:select min(salary),max(salary) from employee
数据排序order by
order by子句位于select语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序asc还是降序desc
按照年龄升序排序所有员工信息的列表:select * from employee order by age asc
按照年龄从大到小排序,如果年龄相同则按工资从大到小排序:select * from employee order by age desc, salary desc
order by子句要放到where子句之后:select * from employee where age>23 order by age desc, salary desc
通配符过滤
通配符过滤使用like
单字符匹配的通配符为半角下划线_,它匹配单个出现的字符。以任意字符开头,剩余部分为erry:select * from employee where name like '_erry'
多字符匹配的通配符为半角百分比%,它匹配任意次数出现的任意字符。k%匹配以k开头、任意长度的字符串,检索姓名中包含字母n的员工信息,select * from employee where name like '%n%'
空值处理
数据库中,一个列如果没有指定值,那么值就为null,这个null和c#中的null,数据库中null标识不知道,而不是表示没有,因此select null+1结果是null,因为不知道加1的结果还是不知道
select * from employee where name = null;select * from employee where name !=null;都没有任何返回结果,因为数据库也不知道
sql 中使用is null,is not null 来进行空值判断:select * from employee where name is null;select * from employee where name is not null;
多值匹配
select age,id,name from employee where age in (19,23,35)
范围值:select * from employee where age>=23 and age <=27; select * from employee where age between 23 and 27;
3.sql基础的更多相关文章
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- 第一章 SQL基础
第一部分:SQL基础1. 为什么学习SQL自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献.档案.资料.数据等):在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到 ...
- SQL基础--> 约束(CONSTRAINT)
--============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...
- SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]
--====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...
随机推荐
- 默认ttl参考
UNIX 及类 UNIX操作系统 ICMP 回显应答的 TTL 字段值为 255 Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64 WINXP-32bit 回显应答的 T ...
- NOIWC2019 冬眠记
冬眠 由于THUWC考太差了没啥心情做事…… Day -1 报到日前一天晚上去看了看宿舍表,发现周围全是集训队,隔壁就是栋爷.高队和lca,再隔壁是zzq和wxh……吓傻了(本校buff这么好吗) D ...
- 在引入的css或者js文件后面加参数的作用
有时候可能会遇到js或者css文件引用后传递参数: css和js带参数(形如.css?v=与.js?v=) <script type=”text/javascript” src=”jb51.js ...
- 腾讯云,搭建LNMP环境
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.centos ...
- 一个电商项目的Web服务化改造7:Dubbo服务的调用,4个项目
使用dubbo服务的过程,很简单,和之前学习的WebService完全一样,和本地接口调用也基本一致. dubbo和WebService的区别:我认为dubbo就是封装了WebService,然后提供 ...
- C#关键字详解第五节
最近有点忙于追剧<人民的名义>所以并未及时更新,所以大家理解理解,哈哈,这部剧很不错!推荐大家去 看看!下面我们继续C#关键字解释! const:常量 一般我们说常量都是以PI(3.14) ...
- [BZOJ1031][JSOI2007]字符加密Cipher(后缀数组)
传送门 算是个模板. 题目说循环,那就再复制一串拼接上. 然后求后缀数组,再搞就可以. 虽然是求后缀,会在后面多一些字符串,然而题目中说的是循环一圈,但是没有影响. ——代码 #include < ...
- [Cogs14] [网络流24题#1] 飞行员分配方案 [网络流,最大流,二分图匹配]
经典二分图匹配,可以用匈牙利算法,也可以用最大流 代码如下(Dinic): #include <iostream> #include <cstdio> #include < ...
- poj1330 lca 最近公共祖先问题学习笔记
首先推荐两个博客网址: http://dongxicheng.org/structure/lca-rmq/ http://scturtle.is-programmer.com/posts/30055. ...
- cogs 7. 通信线路
7. 通信线路 ★★ 输入文件:mcst.in 输出文件:mcst.out 简单对比时间限制:1.5 s 内存限制:128 MB 问题描述 假设要在n个城市之间建立通信联络网,则连通n ...