역사상 가장 일반적으로 사용되는 SQL 문

 
 

역사상 가장 일반적으로 사용되는 SQL 문

DDL (Data Definition Language) 데이터 정의 언어

1. 운영 라이브러리

2. 작업 테이블

DML (Data Manipulation Language) 데이터 조작 언어

하나, 삽입 증가

둘째, 삭제 삭제

셋, 업데이트 수정

DQL (Data Query Language) 데이터 쿼리 언어

1. 기본 키워드

둘째, 쿼리 순서 정렬

3. 집계 기능 : 데이터 열 전체를 가져와 수직 계산을 수행합니다.

넷, 그룹 쿼리 그라우트

다섯, 페이지 매김 쿼리

여섯, 내부 조인 쿼리 :

1. 암시 적 내부 연결 : where 조건을 사용하여 쓸모없는 데이터 제거

 2. 명시 적 내부 조인

 일곱, 외부 조인 쿼리

1. 왼쪽 외부 조인-왼쪽 테이블 및 해당 교차의 모든 데이터를 쿼리합니다.

 2. 오른쪽 외부 조인-오른쪽 테이블과 해당 교차의 모든 데이터를 쿼리합니다.

 8. 하위 쿼리 : 쿼리의 중첩 쿼리

   1. 하위 쿼리의 결과는 단일 행과 단일 열입니다.

   2. 하위 쿼리의 결과는 다중 행 및 단일 열입니다.

   3. 하위 쿼리의 결과는 다중 행 및 다중 열입니다.

 DCL (Data Control Language) 데이터 제어 언어

사용자 관리

사용자 추가

사용자 삭제

권한 관리

쿼리 권한

허가 된 권한

권한 취소

  작성이 쉽지 않습니다.이 블로그가 도움이된다면 메시지 + 좋아요를 남겨주세요.  


DDL (Data Definition Language) 데이터 정의 언어

1. 운영 라이브러리

-- 创建库
create database db1;
-- 创建库是否存在,不存在则创建
create database if not exists db1;
-- 查看所有数据库
show databases;
-- 查看某个数据库的定义信息 
show create database db1; 
-- 修改数据库字符信息
alter database db1 character set utf8; 
-- 删除数据库
drop database db1; 

2. 작업 테이블

--创建表
create table student(
    id int,
    name varchar(32),
    age int ,
    score double(4,1),
    birthday date,
    insert_time timestamp
);

-- 查看表结构
desc 表名;
-- 查看创建表的SQL语句
show create table 表名;
-- 修改表名
alter table 表名 rename to 新的表名;
-- 添加一列
alter table 表名 add 列名 数据类型;
-- 删除列
alter table 表名 drop 列名;
-- 删除表
drop table 表名;
drop table  if exists 表名 ;

DML (Data Manipulation Language) 데이터 조작 언어

하나, 삽입 증가

-- 写全所有列名
insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
-- 不写列名(所有列全部添加)
insert into 表名 values(值1,值2,...值n);
-- 插入部分数据
insert into 表名(列名1,列名2) values(值1,值2);

둘째, 삭제 삭제

-- 删除表中数据
delete from 表名 where 列名  = 值;
-- 删除表中所有数据
delete from 表名;
-- 删除表中所有数据(高效 先删除表,然后再创建一张一样的表。)
truncate table 表名;

셋, 업데이트 수정

-- 不带条件的修改(会修改所有行)
update 表名 set 列名 = 值;
-- 带条件的修改
updata 表名 set 列名 = 值 where 列名=值;

DQL (Data Query Language) 데이터 쿼리 언어

많은 쿼리 문이 있으며 여기에서는 기본 사항을 소개하지 않습니다. 주로 정렬 쿼리, 집계 함수, 퍼지 쿼리, 그룹 쿼리, 페이징 쿼리, 내부 조인, 외부 조인, 하위 쿼리를 소개합니다.

1. 기본 키워드

 BETWEEN ... AND (무엇 사이) 및  IN (세트)

-- 查询年龄大于等于20 小于等于30				
SELECT * FROM student WHERE age >= 20 &&  age <=30;
SELECT * FROM student WHERE age >= 20 AND  age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
				
-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);

(퍼지 쿼리), 고유 (중복 값 제거 ) 와 같은  null ( null 값 아님 )

-- 查询英语成绩不为null
SELECT * FROM student WHERE english  IS NOT NULL;
	
 _:单个任意字符
 %:多个任意字符
-- 查询姓马的有哪些? like
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人			
SELECT * FROM student WHERE NAME LIKE "_化%";				
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';					
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';

-- 关键词 DISTINCT 用于返回唯一不同的值。
-- 语法:SELECT DISTINCT 列名称 FROM 表名称
SELECT DISTINCT NAME FROM  student ;

둘째, 쿼리 순서 정렬

구문 : order by 절

          정렬 필드 1 정렬 방법 1, 정렬 필드 2 정렬 방법 2 ...

참고 :
            정렬 조건이 여러 개인 경우 현재 조건 값이 동일한 경우에만 두 번째 조건이 판단됩니다.

-- 例子
SELECT * FROM person ORDER BY math; --默认升序
SELECT * FROM person ORDER BY math desc; --降序

3. 집계 기능 : 데이터 열 전체를 가져와 수직 계산을 수행합니다.

1. 카운트 : 숫자를 센다

2.max : 최대 값 계산

3.min : 최소값 계산

4.sum : 합계 계산

5.avg : 평균 계산

넷, 그룹 쿼리 그라우트

      구문 : group by group field;

      참고 : 그룹화 후 쿼리 할 필드 : 그룹화 필드, 집계 함수

-- 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;

-- 按照性别分组。分别查询男、女同学的平均分,人数
 SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;

--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

 --  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

다섯, 페이지 매김 쿼리

    1. 구문 : 제한 시작 인덱스, 페이지 당 항목 수
    2. 공식 : 시작 인덱스 = (현재 페이지 번호 -1) * 페이지 당 표시되는 항목 수
    3. 제한은 MySQL "방언"입니다. 

-- 每页显示3条记录 

SELECT * FROM student LIMIT 0,3; -- 第1页

SELECT * FROM student LIMIT 3,3; -- 第2页

SELECT * FROM student LIMIT 6,3; -- 第3页

여섯, 내부 조인 쿼리 :

   1. 데이터를 쿼리 할 테이블

   2. 조건은 무엇입니까

   3. 쿼리 할 필드

1. 암시 적 내부 연결 : where 조건을 사용하여 쓸모없는 데이터 제거

-- 查询员工表的名称,性别。部门表的名称
SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.`dept_id` = dept.`id`;

SELECT 
    t1.name, -- 员工表的姓名
    t1.gender,-- 员工表的性别
    t2.name -- 部门表的名称
FROM
    emp t1,
    dept t2
WHERE 
    t1.`dept_id` = t2.`id`;

 2. 명시 적 내부 조인

-- 语法: 
select 字段列表 from 表名1 [inner] join 表名2 on 条件
-- 例如:
SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`;   
SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`; 

 일곱, 외부 조인 쿼리

1. 왼쪽 외부 조인-왼쪽 테이블 및 해당 교차의 모든 데이터를 쿼리합니다.

-- 语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
-- 例子:
-- 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称
SELECT  t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;

 2. 오른쪽 외부 조인-오른쪽 테이블과 해당 교차의 모든 데이터를 쿼리합니다.

-- 语法:
select 字段列表 from 表1 right [outer] join 表2 on 条件;
-- 例子:
SELECT  * FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;

 8. 하위 쿼리 : 쿼리의 중첩 쿼리

-- 查询工资最高的员工信息
-- 1 查询最高的工资是多少 9000
SELECT MAX(salary) FROM emp;

-- 2 查询员工信息,并且工资等于9000的
SELECT * FROM emp WHERE emp.`salary` = 9000;

 -- 一条sql就完成这个操作。这就是子查询
SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);

   1. 하위 쿼리의 결과는 단일 행과 단일 열입니다.

연산자를  사용하여을 판단 하여 하위 쿼리를 조건으로 사용할 수 있습니다 . 연산자 :>> = << = =

-- 查询员工工资小于平均工资的人
SELECT * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);

   2. 하위 쿼리의 결과는 다중 행 및 단일 열입니다.

   하위 쿼리를 조건으로 사용할 수 있습니다. 연산자를 사용 하여 판단하십시오.

-- 查询'财务部'和'市场部'所有的员工信息
SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部';
SELECT * FROM emp WHERE dept_id = 3 OR dept_id = 2;

-- 子查询
SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部');

   3. 하위 쿼리의 결과는 다중 행 및 다중 열입니다.

   하위 쿼리는 쿼리 가상 테이블참여할 수 있습니다.

-- 查询员工入职日期是2011-11-11日之后的员工信息和部门信息
-- 子查询
SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2 WHERE t1.id = t2.dept_id;

-- 普通内连接
SELECT * FROM emp t1,dept t2 WHERE t1.`dept_id` = t2.`id` AND t1.`join_date` >  '2011-11-11'

 DCL (Data Control Language) 데이터 제어 언어

사용자 관리

사용자 추가

语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

사용자 삭제

语法:DROP USER '用户名'@'主机名';

권한 관리

쿼리 권한

-- 查询权限
SHOW GRANTS FOR '用户名'@'主机名';
SHOW GRANTS FOR 'lisi'@'%';

허가 된 권한

-- 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

-- 给张三用户授予所有权限,在任意数据库任意表上
GRANT ALL ON *.* TO 'zhangsan'@'localhost';

권한 취소

-- 撤销权限:
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';

  작성이 쉽지 않습니다.이 블로그가 도움이된다면 메시지 + 좋아요를 남겨주세요.  

추천

출처blog.csdn.net/promsing/article/details/112793260