데이터베이스 및 데이터 테이블 그룹화 된 데이터 CRUD SQL 쿼리 서브 쿼리 기초 문법 리뷰 작성

참고 링크 :

A. 데이터베이스 구문을 만들기

--用master数据库
use master
--判断数据库是否存在,若存在则删除
if exists (select * from sysdatabases where name='数据库名称')
drop database 数据库名称
--创建数据库
create database 数据库名称
on(                 --指定主文件的属性
    name='',        --文件的逻辑名称(数据之间的相互关系)
    filename='',    --文件的物理名称(数据存储的路径)
    size='',        --文件的初始大小
    maxsize='',     --文件的最大值
    filegrowth=''   --文件的增长方式
)
log on(             --指定日志文件的属性
    name='',        --文件的逻辑名称
    filename='',    --文件的物理名称
    size='',        --文件的初始大小
    filegrowth=''   --文件的增长方式
)
--查看数据库
exec sp_helpdb 数据库名称;
--修改数据库名称
alter database 数据库名称
modify name='';
--修改数据库文件
alter database 数据库名称
modify file(        
    name='',
    filename='',
    size='',
    filegrowth=''
)

II는. 데이터 테이블 만들기

--指定用什么数据库
use 数据库名称
--判断数据表是否存在,若存在则删除
if exists (select * from sysobjects where name='数据表名称')
drop table 数据表名称
--创建数据表
create table 数据表名称(
    --一般不直接添加约束
    字段名称 字段类型 字段特征(默认值DF_、标识列、主键PK_、关系FK_、索引UQ_、检查CK_、非空)       
)

--为字段添加约束
alter table 数据表名称
add constraint 约束名称 约束(指定字段) [references 主表(主键或唯一键)];
--删除约束
alter table 数据表名称
drop constraint 约束名称;

--增加外键约束时,设置级联删除、级联更新  on delete cascade;
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]  删除
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]  更新
--on--在做何种操作的时候做相应的处理
--NO ACTION--不做任何操作:该报错就报错,可以删除就删除
--CASCADE:级联:删除主表,对应的从表数据也会删除,更新也一样
--SET NULL:如果删除主表的记录,那么对应的从表记录的字段值会被设置为null,前提是从表的这个字段的值可以是null
--SET DEFAULT :删除主表记录,从表的记录的对应字段值设置为默认值,前提是你之前为这个字段设置了默认值

--修改字段的类型及约束
alter table 数据表名称
alter column 字段名称 字段类型 约束;
--添加字段
alter table 数据表名称
add 字段名称 字段类型 [not null];   
--删除某个字段
alter table 数据表名称
drop column 字段名称;
--修改字段名称
exec sp_rename '数据表名称.原字段名称','新字段名称','column';

III. 추가 자료

--一次添加一行数据,实参与形参 参数类型 参数个数 参数顺序 都必须一致
insert into 表名(形参)      
values(实参)

--1.默认约束可以不指定列名
--2.自增不能显示的添加
--3.允许为null值的字段可直接设置null值,也可不指定列名

--一次添加多行数据时添加顺序不是按照书写的顺序添加的,而是按照第一个字段的首a-z字母或者数字从小到大添加的
--一次添加多行数据
insert into 表名(形参)
select 实参 union
select 实参;
--或者
insert into 表名(形参)
values(实参),(实参);

--从别的表中copy数据
insert into 表1(形参)  
select 实参 from 表2;

--将从数据源选择的数据插入到新表中并显示,新表是系统创建的,之前必须不存在
select * into 新表 from 数据源;
--将从数据源选择后得到的结果集添加到目的表中, 目的表必须存在
insert into 目的表 select * from 数据源;

IV. 데이터 삭제

--标识列不会从标识种子开始,可以回滚(恢复数据)
delete from 表名;
--条件与查询语句中条件一样:关系、逻辑运算符、like、in、between...
delete from 表名 where 条件;
--标识列会从标识种子开始
truncate table 表名;

V. 데이터 수정

--条件与查询语句中条件一样:关系运算符、逻辑运算符、like、in、between...
update 表名 set 字段=值,... where 条件

1. 사업자 및 내장 함수

관계 연산자 : = < > >= <= != <>
논리 연산자 :not / and / or / is null / is not null

내장 기능 :

  • 문자열 함수 :
    • CharIndex('ab','cdab') 위로 "3"- 위치 "CDAB"수익률 "AB"는 편지의 첫 번째 위치로 돌아갑니다
    • Len('我是谁')위로 "3"- 반환 문자열 길이
      - substring('abd',2,2)절편 두 번째 위치에서 길이 2의 문자열 - 반환 "BD"
  • 날짜 기능 :
    • GetDate() 현재 날짜를 반환
    • DateName(DW,'2009-09-09') 반환은 "일"의 일부를 문자열로 날짜를 지정
    • DateDiff(dd,'2009-09-09','2010-10-09')두 날짜 사이의 반환 간격, 전년 동기 대비는 연도, mm은, DD는 일 달입니다
      - DatePart(DW,'2009-09-09')미국 (의 정수 부분으로 지정된 날짜에 반환 할 "4"복귀 : 일요일 첫 번째 12 월의 첫 날입니다 월)
  • 수학 함수 :
    • Abs(-1) 절대 값
    • Ceiling(24.1)24.1보다 작은 정수의 큰
      - Floor(24.1)가장 큰 정수 미만 24.1
    • round(18.6) 양 또는 음의 라운딩, 결과는 특정 길이의 값은
  • 시스템 기능
    • Convert(varchar(3),123) 뒤로 "123"변환 데이터 유형
    • DataLength("12中国") 돌아 가기 모든 데이터 유형의 바이트의 "6"반환 번호, 2 바이트 문자

VI. 검색어 데이터

1. 기본 문법

select top|distinct 值/[percent] */表名.字段 别名,... ['上海' as 城市],...   from 表名 别名   where 条件   group by 字段    having 条件   order by 字段别名
  1. top 值/[percent]:; 결과 세트가 소수 천장의 비율을 가지고하는 것입니다 한계선 쿼리, 정렬, 한계선을 할 수있는 마지막 단계입니다 일반적으로 순서에 의해와 함께 사용
  2. distinct 字段: 중복 레코드 필터링
  3. 表名.字段: 내부 문의보다 신속하게이 방법은, 당신은 필드에 의해 그룹을 선택하는 경우 : 값 대회 기록은 하나 개의 관계
  4. 字段 as 别名; 字段 别名; 别名=字段; - 세 가지 방법으로 할 수 있습니다
  5. 당신은 추가 할 수 있습니다 상수가 나열되어 있습니다 :'上海' as 城市
  6. 여기서 조건 :
    • 关系 (> <> = <=! = <>)
    • 논리 연산자 (및 / 또는 /되지 않음)
    • 字段 [not] in(具体值1、具体值2)/(子查询): 특히 사용 데이터 유형의 범위를 특정 계약 조건에서 값의 범위를 나타내고, 서브 쿼리를 사용할 수있다
    • 字段 [not] between 数值1/日期1 and 数值2/日期2:이 결정된 숫자 또는 기간 인 경우 사이에서 이용 될 수 ...
    • 字段 [not] like '张%'、'张_'、'1[1-8]'、'[^21-35]' --'1[1-8]'表示11-18: [^21-35](단 퍼지 쿼리에서 와일드 카드 유효)에 1,2,3,5뿐만 아니라 표현
      • %는 : 모든 문자의 수를 나타냅니다
      • ** _ ** : 단일 문자를 의미합니다
      • []는 : 나타내는 특정 문자의 값의 범위 중 임의의 [0-9][a-z]단 문자 일치
      • [^] : 주제는 특정 범위 내에 있지이 감각이되는 []에 -없는 다른 MSDB 등에 부정 값 만 MSSQL 서버 지원
  7. group by : 데이터 그룹은 그룹으로 지정된 행의 값이 동일한 열을 열 지정된
  8. having条件: 이 필드를 패킷 중 어느 중합 조건 : 조건 여기서 똑같이
    • where 절과 HAVING 절 차 :
      • 여기서, 그룹과 관련된 하나의 행에 관한 절 갖는 절
      • 절 검색 조건의 함수로서 직접 중합 될 수없고, 기능을 가지는 검색 조건으로 중합 될 수 있지만, 여기서 필드 별칭을 사용하지 데
      • 다른 경우 실행 순서를 갖는 절과 절
  9. order by 字段 [desc]...: 기본은 여러 분야에 정렬 오름차순 할 수있다

2. 중합 함수

스크리닝 결과의 일부 세트가 해석 된 후에 집계 기능은 데이터 필드들의 집합이다.

--聚合函数:参数一般是字段
select max(字段),min(字段)...  /  select count(*),max(字段) from 表名 where 条件
  • max(数值、字符串、日期) : 지정된 데이터 범위의 최대 값을 선택하는 것은 : 그것은 사전에 비 정렬 수치 인 경우, 중합 반응의 임의의 타입 일 수있다
  • min(数值、字符串、日期) : 지정된 데이터 범위의 최소화 : 그것은 사전에 정렬 된 숫자가 아닌 값의 경우, 중합 반응의 임의의 타입 일 수있다
  • avg(数值) : 단 중합 될 수있는 데이터 값의 지정된 범위를 평균 중합 수없는 일
  • sum(数值) : 요청 및 특정 데이터는 단지 숫자 중합을 할 수있는, 중합 범위 일 수 없다
  • count(*/一个字段) :; 레코드의 개수 또는 열 널이 아닌 값이 지정된 수를 계산하는 조건을 만족하는 레코드의 수를 추구하는 분야와는 관계가 없다
    • 기본값은 최소한의 공간 문자입니다
    • 문자열 : 문자 AZ, 발음 철자 문자, 더 많은 알파벳 높은 값
    • 날짜 : 날짜 빨리 작은 값

3. 그룹화 쿼리

쿼리 7 키워드 :

select [top] from [where] [group by] [having] [order by]

문장의 쿼리 순서 :

5.select 7.top 字段列表 1.from  表列表 2.where 源数据筛选条件 3.group by 分组统计字段列表 4.having 对分组统计结果集做筛选 6.order by 得到最终结果集之后的数据重排

1. 먼저 여과 후, 데이터 소스 (2)로부터 취득과 위치 데이터 그룹 데이터 소스 (4)에 의해 그룹을 다시 소스 (3)와 다음 패킷 결과 세트의 통계를 필터링을 수행하는 데, [중합 중합 결과 집합 분석 기능] (5) 다시, 결과의 필터링 된 표시하고 데이터 순서 6. 최종 결과 집합의 재정렬 7 개 다시 마지막 결과 집합의 상위 한계 라인을 선택하고 설정할

문제 해결 :

  • 당신이 집계 함수를 사용할 수없는 경우 (집계 함수를 직접 검색 기준 where 절으로 사용할 수 없습니다) 이유는 무엇입니까? - 결과 집합 집합 함수를 이용하여 다음 데이터 소스를 필터링 할 필요는 표시 중합 분석
  • 왜 테이블의 열을 가진 학생을 사용하지? - 그룹화 결과를 그룹화 한 후 결과 필드에 대해서만 설정, 다른 분야의 학생 테이블을 무시합니다
  • 왜 우리는 별칭을 사용하지 않아도된다? - 첫 번째 패킷 통계 세트가 공연하는 동안, 심사를 수행 결과
  • 왜 별칭을 사용하여 주문 할 수 있습니까? - 최종 결과의 세트를 표시하는 데이터 재배치
  • 그룹이 그룹이 아닌 경우, 당신은 심사를 가진 사용할 수 있지만, 실제적인 의미는 없다
  • 및 상기 데이터 소스를 필터링하여, 패킷 카운트 값 중에, 표시 CLASSID에 포함되지 않았으며, 결과 집합 내의 각각의 필드 값에 대한 복수의 CLASSID 값 대 1 관계. 개별 필드 값이인가 될 수없는 여과해야 그룹은 절을 갖는 열 열 집합이어야합니다
  • 그룹 일반적인 문제는 쿼리 '모든'또는 '개인'... 단어 그룹에 표시됩니다

쿼리에 가입 4. (연결 테이블)

표 연결 :

  1. 교차 연결 (직교 제품) : from 结果集 cross join 结果集
  2. 커넥터 (조건부 관계 충분한 일치) from 结果集 inner join 结果集 on 条件--on 조건 (주요 외부 필드와 키 관계)
  3. 외부 커넥터 (복구가 일치하지 않음) : from 结果集 left|right|full join 结果集 on 条件

구문 주 : 이러한 방식에 따라 온라인으로 기록 된 많은 사람들이 사용하지 않는 것이 좋습니다

--国际组织ANSI-SQL 89版语法(当时还没有外连接)
select * from Employee, Title;      --交叉连接
select * from Employee t1, Title t2 where t1.titleId=t2.titleId;    --内连接

문제에 대한주의 :

  1. 조인 쿼리 결과 테이블에 의해 접합 조건에 대응하는 복수의 테이블이며

    • 테이블에서 *에 연결할 수 있습니다를 선택, 모두의 모든 필드를 표시
    • 테이블에서 선택이 분야에 연결될 수있다; 같은 이름을 선택 필드는,이 표에 지정해야합니다 경우는 없다 같은 이름의 필드를 지정하지 않을 수 있습니다
  2. 연결이 테이블 별칭 목록에서 촬영해야하며, 중간 테이블을 생성 한 후, 동일한 이름을 가진 테이블이 오류로 인해 발생

  3. 설명의 다섯 번째 포인트 - 욕실 쿼리는 어디 달성하기 위해 구현 될 수

  4. 대안 절 절을 갖는 여기서 동일한 기능을 수행 할 때 대체 될 수있다 : 선별 기능을 대체하지 스크리닝 동안 컬럼 세트로 대체 될 수있다 여기서 사용 가짐 중합 사용

    • where StuNo = 6 (그룹 6 StuNo에 해당) 소스 데이터 StuNo 행 6 필터링 - 다음 문 미만이 쿼리 빠르고, 결국
    • group by StuNo having StuNo = 6; StuNo 패킷은 그룹 6 StuNo 스크리닝 하였다
    1. from 结果集1 ... join 结果集2 ... join ... on 连接条件--on 어디 대체 사용할 수 없으며 구문 오류가 발생할

    from 结果集1,结果集2,... where 连接条件 --where 교체 사용할 수 없습니다

5.union 연산자 및 형식 변환 기능

연산자 1.union

연합 오퍼레이터 : 유니온 결과 세트를 복수 포함 할 수있다

두 개의 건물과 메모를 사용 :

  • 결과 집합의 열 결합 수는 정확히 일치해야
  • 결과 세트의 복수의 병합의 유형에 해당하는 열이 일치 할 필요가 (교체)
  • 그 결과에 대해 결과 집합의 첫 번째 이름을 설정하는 (주)

노동 조합 및 노동 조합의 모든 차이 :

  • 노동 조합 : 할 별개의 작업 기록 필터링 반복
  • 노동 조합의 모든 : 반복 녹화의 결과 여부를 판단 할 필요가 없기 때문에 작업은 더 높은 결합 효율이다, 구별되지 않습니다
2. 변환 함수
  • (대상 소스 데이터 형식으로) 주연 : print '我的总成绩是:'+cast(200 as varchar(30))
  • 변환 (대상 유형, 소스 데이터, 형식) :
    • print '我的总成绩是:'+convert(char(3),200)
    • select convert(char(30),GETDATE(),121)

6. 하위 쿼리

부질 : 질의에서 다른 쿼리 조건으로 쿼리 결과는 다음 질의 서브 쿼리라고 쿼리 조건은 외부 조회 불린다.

쿼리 및 스칼라 하위 쿼리를 멀티 값 :

  • 스칼라 서브 쿼리 : 단일 값 서브 쿼리 (질의 결과가 하나의 값) = WHERE 필드 (단일 값 부질)
  • 다중 값 하위 쿼리 : 다중 값 하위 쿼리 (쿼리 결과는 하나 개 이상의 값) 여기에서 필드 (다중 값 하위 쿼리)

독립적 인 하위 쿼리와 관련 하위 쿼리 :

  • 독립적 인 하위 쿼리는 필드와 외부 쿼리는 독립의 결과를 확인하실 수 있습니다, 중요하지 않습니다

  • 상관 부질 : 외부 룩업 테이블 필드와 필드에 조건이 아닌 독립적 문의 결과 연결된

    子查询中 where 字段 = 外表名.字段(多值时也可以)

추천

출처www.cnblogs.com/itzlg/p/12503804.html