02 . Mysql 기초 조작 및 삭제 수정
SQL(Structured Query Language )
SQL 、 、 ,SQL IBM 。
SQL문 4대 분류
SQL 3 :
DDL (Create,Alter,Drop,DECLARE)
DML (Select,Delete,Update,Insert)
DCL (GRANT,REVOKE,COMMIT,ROLLBACK)
DQL (select)
DML(data manipulation language):
, 4
DDL(data definition language):
, , ,
DCL(Data Control Language):
, , sysadmin,dbcreator,db_owner db_securityadmin
SQL 문의 고려 사항
# 1. SQL ; , \G .( use )
# 2. SQL ( )
# 3. \#
# 4. \c
# 5. , \q exit,ctrl+d
# 6. sql , mysql -e
# mysql -e "show databases \G" shell
# 7. SQL help
# :help create
# , help
# :help create database
MySQL 라이브러리 작업
시스템 자체 데이터베이스
#
information_schema:
# , , , , , ,
performance_schema:
#
mysql:
# ,
test:
# , ,Mysql
sys:
# , DBA ,
공통 라이브러리 작업
# create database character set = 'utf8' collate=utf8_general_ci;
# :
# 1 > , , ,@,#,$
# 2 >
# 3 >
# 4 > create select
# 5 >
# 6 > 128
#
use ;
#
select database();
# OR
status;
#
drop database database_name;
# : gb2312 gbk: utf8
show character set; # Mysql
show collation; # ,utfs-generic
create database db character set = 'utf8mb4' collate=utf8_general_ci;
#
show create database db\G; # db
alter database db character set = latin1 #
데이터베이스 스토리지 엔진
데이터베이스 하단에 위치하고 하부 구성 요소에 속하며 DBMS는 저장 엔진을 통해 삭제 수정 작업을 하고 서로 다른 저장 엔진은 서로 다른 기능을 가진다.서로 다른 인덱스, 서로 다른 저장 방식 등을 지원하며 mysql 핵심에 속합니다
mysql
mysql> show engines\G;
*************************** 1. row ***************************
Engine: InnoDB #
Support: DEFAULT # mysql
Comment: Supports transactions, row-level locking, and foreign keys
# mysql
Transactions: YES #
XA: YES #
Savepoints: YES #
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 9. row ***************************
Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
Transactions: NULL
XA: NULL
Savepoints: NULL
9 rows in set (0.00 sec)
스토리지 엔진
데이터 저장소에 속하는 형식, 서로 다른 저장 엔진의 기능이 같지 않고, 차지하는 공간이 같지 않으며, 읽기 성능이 같지 않으며, 표마다 하나의 저장 엔진에 대응한다.
MyISAM
# MyISAM
(1) 5.5 , 5.5 lnnoDB
(2) , , , ,
(3)
(4)
# MyISAM
(1)
(2)
(3) 。
(4)
InnoDB
# InnoDB
(1) , , ** **( ) , mysql5.5
(2) 、 , ,
(3) ,
(4) InnoDB 10MB ibdata1 5MB ib_logfile0 ib_logfile1
ibdata1 innodb
# InnoDB
(1) ,
(2)
(3) ,
Memory
# (1) Memory ,
# (2) Memory hash btree , blob text
# (3) Memory , ,
Mysql에서 흔히 볼 수 있는 데이터 형식
Mysql 데이터베이스 관리 시스템에서 저장 엔진을 통해 표의 유형을 결정할 수 있다. 또한 Mysql 데이터베이스 관리 시스템도 데이터 유형을 제공하여 표에 저장된 데이터의 유형을 결정한다. 수치 유형이 클수록 메모리의 소모가 많고 적당한 데이터 유형은 어느 정도에 데이터베이스의 효율을 높일 수 있다.
Mysql 데이터베이스 관리 시스템에서 제공하는 데이터 형식
# 1. : TINYINT SMALLINT MEDIUMINT INT BIGINT
# 2. : FLOAT (7 ) DOUBLE (15 )
# 3. : CHAR VARCHAR
# 4. : DATE TIME DATETIME TIMESTAMP YEAR
# 5. : ENUM
#6. : SET
데이터 형식의 상용 장면
사용자의 나이, 게임을 저장하는 데 사용되는 Level, 경험치 등.기호 있음(기본값)과 기호 없음으로 나뉘어 있음
사용자의 키, 몸무게, 월급 등을 저장하는 데 쓰인다.부동 소수점 유형은 이름 뒤에 덧셈(M, D)을 사용하여 모두 소수점 뒤의 자릿수를 나타내는 M자리 숫자(정수 자리 + 소수 자리)를 나타낼 수 있으며, M과 D는 정밀도와 눈금이라고도 부른다.
사용자의 등록 시간, 온라인 시간, 기사 게시 시간, 직원의 입사 시간 등을 저장할 수 있습니다.
date
하이픈을 사용하여 구분 기호로 구분하기 (년 월 일 표시)
time
짝퉁을 구분자로 사용하고 따옴표를 붙여야 하거나 구체적인 숫자를 직접 사용해야 한다(시간 표시 분초)
year
년과 관련된 시간의 경계선이 있는 것은 1970년이다. 0069 범위 내의 값을 20002069 범위 내로 바꾸고 7099 범위 내의 값을 19701999 이내로 바꾸면 이런 현상이 발생하지 않도록 완전하게 쓰는 것이 가장 좋다.
datetime timestamp
현재 날짜와 시간을 포함하는 시간 스탬프를 저장하는 데 사용됩니다
필드에 값이 없거나 비어 있을 때 타임스탬프는 현재 시스템 시간을 타임스탬프로 사용하고datetime는 NULL만 표시합니다.
이미 필드 업데이트가 있을 때datetime 형식에 대응하는 시간은 변하지 않으며,timestamp 형식에 대응하는 시간은 최신 시간으로 업데이트됩니다.
사용자의 이름, 취미, 게시 글 등을 저장하는 데 쓰인다
# 1. char: , , 0-255
# 2. varchar: , , 0-65535
ENUM
SET
# 1. : , ,
# 2. set : , , , set 64 。
MySQL의 테이블 작업
Mysql 테이블의 기본 관리
MySQL 테이블에는 실제 데이터가 저장됩니다.
표는 대체적으로 표두와 표체로 나눌 수 있는데 한 장의 표는 단지 하나의 표두, 즉 한 줄의 데이터만 있고 이 줄의 데이터의 매 열의 값은 필드가 된다.
표체는 여러 줄의 데이터로 구성될 수 있고 각 줄은 표현하고자 하는 실제 대상을 대표한다.
모든 필드는 하나의 데이터에 그 속성이 있다는 것을 대표한다. 예를 들어 한 학생의 정보를 저장하려면 이름, 나이, 학번 등이 필요하다.
이러한 속성에 대해 당신은 그것들이 서로 다른 유형의 데이터라는 것을 발견할 수 있다. 예를 들어 이름은 일반적인 텍스트, 즉 문자열, 나이는 숫자, 즉 정형이다.
이러한 데이터를 데이터베이스에 저장할 때 유형의 오류가 발생하지 않아 나중에 사용에 영향을 미치지 않도록 하기 위해 표를 만들 때 각 필드에 데이터를 저장할 데이터 유형을 지정해야 한다.
id
name
age
phone
1
youmen
18
13143234323
2
flying
19
12823486853
3
zhou
20
13123345568
4
jian
21
15723427563
Mysql 테이블 작업
테이블(TABLE)의 구조, 데이터 유형, 테이블 간의 링크와 제약 등을 정의하거나 바꾸는 초기화 작업에 사용되는 이들은 대부분 테이블을 만들 때 사용한다.
DDL은 commit이 필요하지 않습니다 (DDL은 모두 은밀하게 제출되며 DDL 문장에 ROLLBACK 명령을 사용할 수 없습니다)
# CREATE ,
# ALTER , ( )
# DROP ,
# TRUNCATE ( )
# COMMENT ( )
# RENAME ( )
mysql> show tables;
+------------------+
| Tables_in_youmen |
+------------------+
| student |
| student2 |
+------------------+
2 rows in set (0.00 sec)
desc ;
# OR
desc . ;
,
delete from /* , where */
truncate table /* 1 */
/* , */
delete from tb1;
/* , , */
delete from tb1 where id < 20;
mysql> drop table , ;
mysql> drop table IF EXISTS student2; # , ,
# /
delete FROM [where condtion];
mysql> alter table student2 drop id;
mysql> delete from student2;
mysql> delete from mysql.user where authentication_string=''; #
mysql> delete from student2 where id=2 and name='flying'; # id=2 name=flying
테이블 생성
create table (
1 [( ) ]
2 [( ) ]
...
)[ ];
# : , , ;
# , , , 。
create table (
,
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
# .
# ENGING=InnoDB DEFAULT CHARSET=utf8
# , , ,
create table tb1(
id int not null,
age int not null default 2
)
# ,null ,
not null # ,
null # ( )
메인 키
# , , ,
# :
# primary key
create table tb1(
id int primary key,
age int null
)
# OR
create table tb1(
id int not null,
age int not null,
primary key(id,age)
)
#
# 1. , , , , .
# , , , .
# [constraint ] foreign key ( ) references ( )
# :
# constraint foreign key ( ) references ( )
Example1
create table student(
nid int auto_increment primary key,
name varchar(12) not null,
age int not null,
phone char(11)
);
create table student2(
id int auto_increment primary key,
class_id int,
foreign key(class_id) REFERENCES student(nid)
);
#
# 1.
# 2. ,
# 3.
# 4.
# 5. innodb , ,
# truncate table delete
# , , ,
# ,
# , , , ( )
create table tb1(
id int auto_increment primary key,
age int not null
)
show variables like '%auto_increment_%';
auto_increment_increment | 1 #
auto_increment_offset | 1 #
set auto_increment_increment=2;
create table student(
id1 int auto_increment primary key,
name varchar(12) not null,
age int not null,
phone char(11)
);
create table student2(
id int auto_increment primary key,
class_id int,
foreign key(class_id) REFERENCES student(id1)
);
테이블 구조 수정
alter table student1 rename student2;
# to
alter table tb10 rename to test1.tb10;
alter table tb10 modify name int(10);
alter table student modify column age varchar(10);
alter table student change age ages int(20);
alter table add
# :
alter table stadent add gender Enum(" ", " ");
alter table stadent add hobby set("girl","car","yacht");
update student set hobby = "girl,car";
alter table drop column
alter table add primary key( );
alter table students add id int not null auto_increment, add primary key (id);
alter table drop primary key;
# ,
alter table modify int, drop primary key;
alter table student2 modify column email varchar(32) unique;
# , 。
alter table modify column id int AUTO_INCREMENT;
# , , 。
# :
alter table add constraint ( :FK_ _ ) foreign key ( ) references ( );
# :
alter table drop foreign key
#
#
# :
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
# :
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
테이블 데이터 삽입
DML( )
DML ,DML commit.
mysql , , commit
# school.student1
id name sex age
1 tom male 23
2 jack male 21
3 alice female 19
#
create table student1
(id int,name varchar(50),sex enum('male','female'),age int);
# :
# 1. , , ;
# 2. " " ," " “ ”
# 3. : , , ,
# 4. auto_increment,timestamp
# : insert into ( 1, 2...) values( ...)
# , , id , ;
mysql> insert into student1 values
(1,'tom','male',23),
(2,'jack','male',21),
(3,'alice','female',19);
# 1. ( )
# : insert into ( 1, 2, 3.. n) values( 1, 2, 3);
# : insert into values ( 1, 2, 3.. n);
# 2.
# : insert into ( 1, 2) values ( 1, 2);
# 3.
# : insert into values( 1, 2, 3),( 1, 2, 3.. n),( 1, 2, 3 );
# 4.
# : insert into 1( 1, 2, 3... n)
# select ( 1, 2, 3) FROM 2 WHERE ...;
Mysql 데이터베이스 조회
테이블 보기
mysql> show table;
#
#
mysql> desc student1;
mysql> show create table student1;
#
mysql> select id,name,sex from student1\G;
mysql> select * from student1;
# , ,
#
# , SQL count() ~~~~
select count(*) from students;
인스턴스 테이블 생성
# employee :
create table employee
( e_no int(11) not null unique,
e_name varchar(50) not null,
e_gender char(2),
dept_no int(11) not null,
e_job varchar(50) not null,
e_salary int(11) not null,
hiredate date not null,primary key (dept_no,e_no));
#
insert into employee values
(1001,'SMITH','m',20,'CLERK',800,'2005/11/12'),
(1002,'ALLEN','f',30,'SALESMAN',1600,'2003/5/12'),
(1003,'WARD','f',30,'SALESMAN',1250,'2003/5/12'),
(1004,'JONES','m',20,'MANAGER',2975,'1998/5/18'),
(1005,'MARTIN','m',30,'SALESMAN',1250,'2001/6/12'),
(1006,'BLAKE','f',30,'MANAGER',2850,'1997/2/15'),
(1007,'CLARK','m',10,'MANAGER',2450,'2002/9/12'),
(1008,'SCOTT','m',20,'ANALYSE',3000,'2003/5/12'),
(1009,'KING','f',10,'PRESIDENT',5000,'1995/1/1'),
(1010,'TURNER','f',30,'SALESMAN',1500,'1997/10/12'),
(1011,'ADAMS','m',20,'CLERK',1100,'1999/10/5'),
(1012,'JAMES','f',30,'CLERK',950,'2008/6/15');
# dept :
create table dept
(d_no int(11) primary key not null unique auto_increment,
d_name varchar(50) not null,
d_location varchar(100));
#
insert into dept values
(10,'ACCOUNTING','ShangHai'),
(20,'RESEARCH','BeiJing'),
(30,'SALES','ShenZhen'),
(40,'OPERATIONS','FuJian');
단표 조회
# 1. employee , e_no,e_name e_salary
mysql>select e_no,e_name,e_salary from employee;
+------+--------+----------+
| e_no | e_name | e_salary |
+------+--------+----------+
| 1007 | CLARK | 2450 |
| 1009 | KING | 5000 |
| 1001 | SMITH | 800 |
| 1004 | JONES | 2975 |
| 1008 | SCOTT | 3000 |
| 1011 | ADAMS | 1100 |
| 1002 | ALLEN | 1600 |
| 1003 | WARD | 1250 |
| 1005 | MARTIN | 1250 |
| 1006 | BLAKE | 2850 |
| 1010 | TURNER | 1500 |
| 1012 | JAMES | 950 |
+------+--------+----------+
# 2、 employee , dept_no 10 20
mysql> select * from employee where dept_no =10 or dept_no=20;
+------+--------+----------+---------+-----------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+-----------+----------+------------+
| 1007 | CLARK | m | 10 | MANAGER | 2450 | 2002-09-12 |
| 1009 | KING | f | 10 | PRESIDENT | 5000 | 1995-01-01 |
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 |
| 1004 | JONES | m | 20 | MANAGER | 2975 | 1998-05-18 |
| 1008 | SCOTT | m | 20 | ANALYSE | 3000 | 2003-05-12 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
+------+--------+----------+---------+-----------+----------+------------+
# 3、 employee , 800~2500
select * from employee where e_salary between 800 and 2500;
+------+--------+----------+---------+----------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+----------+----------+------------+
| 1007 | CLARK | m | 10 | MANAGER | 2450 | 2002-09-12 |
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
| 1002 | ALLEN | f | 30 | SALESMAN | 1600 | 2003-05-12 |
| 1003 | WARD | f | 30 | SALESMAN | 1250 | 2003-05-12 |
| 1005 | MARTIN | m | 30 | SALESMAN | 1250 | 2001-06-12 |
| 1010 | TURNER | f | 30 | SALESMAN | 1500 | 1997-10-12 |
| 1012 | JAMES | f | 30 | CLERK | 950 | 2008-06-15 |
+------+--------+----------+---------+----------+----------+------------+
# 4、 employee , 20
select * from employee where dept_no=20;
+------+--------+----------+---------+---------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+---------+----------+------------+
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 |
| 1004 | JONES | m | 20 | MANAGER | 2975 | 1998-05-18 |
| 1008 | SCOTT | m | 20 | ANALYSE | 3000 | 2003-05-12 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
+------+--------+----------+---------+---------+----------+------------+
# 5、 employee ,
select * from employee where e_salary in (select max(e_salary) from employee group by dept_no);
+------+--------+----------+---------+-----------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+-----------+----------+------------+
| 1009 | KING | f | 10 | PRESIDENT | 5000 | 1995-01-01 |
| 1008 | SCOTT | m | 20 | ANALYSE | 3000 | 2003-05-12 |
| 1006 | BLAKE | f | 30 | MANAGER | 2850 | 1997-02-15 |
+------+--------+----------+---------+-----------+----------+------------+
다중 테이블 조건 질의
# 1、 BLAKE
select d_name,d_location from dept where d_no in (select dept_no from employee WHERE e_name='BLAKE');
+--------+------------+
| d_name | d_location |
+--------+------------+
| SALES | ShenZhen |
+--------+------------+
# 2、 、
select dept_no,d_name,d_location from employee,dept where employee.dept_no=dept.d_no;
+---------+------------+------------+
| dept_no | d_name | d_location |
+---------+------------+------------+
| 10 | ACCOUNTING | ShangHai |
| 10 | ACCOUNTING | ShangHai |
| 20 | RESEARCH | BeiJing |
| 20 | RESEARCH | BeiJing |
| 20 | RESEARCH | BeiJing |
| 20 | RESEARCH | BeiJing |
| 30 | SALES | ShenZhen |
| 30 | SALES | ShenZhen |
| 30 | SALES | ShenZhen |
| 30 | SALES | ShenZhen |
| 30 | SALES | ShenZhen |
| 30 | SALES | ShenZhen |
+---------+------------+------------+
# 3、 employee ,
select dept_no,count(e_name)as peoples from employee group by dept_no ;
+---------+---------+
| dept_no | peoples |
+---------+---------+
| 10 | 2 |
| 20 | 4 |
| 30 | 6 |
+---------+---------+
# 4、 employee ,
select e_job,sum(e_salary)as total from employee group by e_job ;
+-----------+-------+
| e_job | total |
+-----------+-------+
| ANALYSE | 3000 |
| CLERK | 2850 |
| MANAGER | 8275 |
| PRESIDENT | 5000 |
| SALESMAN | 5600 |
+-----------+-------+
# 5、 employee ,
select dept_no,avg(e_salary)as total from employee group by dept_no ;
+---------+-----------+
| dept_no | total |
+---------+-----------+
| 10 | 3725.0000 |
| 20 | 1968.7500 |
| 30 | 1566.6667 |
+---------+-----------+
# 6、 employee , 1500
select * from employee where e_salary<1500;
+------+--------+----------+---------+----------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+----------+----------+------------+
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
| 1003 | WARD | f | 30 | SALESMAN | 1250 | 2003-05-12 |
| 1005 | MARTIN | m | 30 | SALESMAN | 1250 | 2001-06-12 |
| 1012 | JAMES | f | 30 | CLERK | 950 | 2008-06-15 |
+------+--------+----------+---------+----------+----------+------------+
# 7、 employee , ,
select * from employee order by dept_no,e_salary desc ;
+------+--------+----------+---------+-----------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+-----------+----------+------------+
| 1009 | KING | f | 10 | PRESIDENT | 5000 | 1995-01-01 |
| 1007 | CLARK | m | 10 | MANAGER | 2450 | 2002-09-12 |
| 1008 | SCOTT | m | 20 | ANALYSE | 3000 | 2003-05-12 |
| 1004 | JONES | m | 20 | MANAGER | 2975 | 1998-05-18 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 |
| 1006 | BLAKE | f | 30 | MANAGER | 2850 | 1997-02-15 |
| 1002 | ALLEN | f | 30 | SALESMAN | 1600 | 2003-05-12 |
| 1010 | TURNER | f | 30 | SALESMAN | 1500 | 1997-10-12 |
| 1003 | WARD | f | 30 | SALESMAN | 1250 | 2003-05-12 |
| 1005 | MARTIN | m | 30 | SALESMAN | 1250 | 2001-06-12 |
| 1012 | JAMES | f | 30 | CLERK | 950 | 2008-06-15 |
+------+--------+----------+---------+-----------+----------+------------+
# 8、 employee , A S
select * from employee WHERE e_name like 'A%' OR e_name LIKE 'S%';
+------+--------+----------+---------+----------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+----------+----------+------------+
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 |
| 1008 | SCOTT | m | 20 | ANALYSE | 3000 | 2003-05-12 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
| 1002 | ALLEN | f | 30 | SALESMAN | 1600 | 2003-05-12 |
+------+--------+----------+---------+----------+----------+------------+
# 9、 employee , , 10
select * from employee where (year(now())-year(hireDate))>= 10;a
select * from employee where year(now())-year(hiredate) >=10;
select * from employee where adddate(hiredate,interval 10 year)>=2009;
select * from employee where adddate(hiredate,interval 10 year)<=date(now());
+------+--------+----------+---------+-----------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+-----------+----------+------------+
| 1007 | CLARK | m | 10 | MANAGER | 2450 | 2002-09-12 |
| 1009 | KING | f | 10 | PRESIDENT | 5000 | 1995-01-01 |
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 |
| 1004 | JONES | m | 20 | MANAGER | 2975 | 1998-05-18 |
| 1008 | SCOTT | m | 20 | ANALYSE | 3000 | 2003-05-12 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
| 1002 | ALLEN | f | 30 | SALESMAN | 1600 | 2003-05-12 |
| 1003 | WARD | f | 30 | SALESMAN | 1250 | 2003-05-12 |
| 1005 | MARTIN | m | 30 | SALESMAN | 1250 | 2001-06-12 |
| 1006 | BLAKE | f | 30 | MANAGER | 2850 | 1997-02-15 |
| 1010 | TURNER | f | 30 | SALESMAN | 1500 | 1997-10-12 |
| 1012 | JAMES | f | 30 | CLERK | 950 | 2008-06-15 |
+------+--------+----------+---------+-----------+----------+------------+
# 10、 (F)
select e_gender,e_name, year(now())-year(hiredate) as gongling from employee where e_gender='f';
+----------+--------+----------+
| e_gender | e_name | gongling |
+----------+--------+----------+
| f | KING | 25 |
| f | ALLEN | 17 |
| f | WARD | 17 |
| f | BLAKE | 23 |
| f | TURNER | 23 |
| f | JAMES | 12 |
+----------+--------+----------+
# 11、 LIMIT 3 6
select * from employee limit 2,4;
# 12、 (SALSEMAN)
select min(e_salary) as zuidigongzi from employee group by e_job having
+------+--------+----------+---------+---------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+---------+----------+------------+
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 |
| 1004 | JONES | m | 20 | MANAGER | 2975 | 1998-05-18 |
| 1008 | SCOTT | m | 20 | ANALYSE | 3000 | 2003-05-12 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
+------+--------+----------+---------+---------+----------+------------+
# 13、 N S
select e_name from employee where e_name like '%N' or e_name like '%S';
+--------+
| e_name |
+--------+
| JONES |
| ADAMS |
| ALLEN |
| MARTIN |
| JAMES |
+--------+
# 14、 BeiJing
select e_name,e_job from employee where dept_no in (select d_no from dept where d_location='BEIJING');
+--------+---------+
| e_name | e_job |
+--------+---------+
| SMITH | CLERK |
| JONES | MANAGER |
| SCOTT | ANALYSE |
| ADAMS | CLERK |
+--------+---------+
# 15、 employee dept
select * from employee left join dept on employee.e_no = dept.d_no;
+------+--------+----------+---------+-----------+----------+------------+------+--------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate | d_no | d_name | d_location |
+------+--------+----------+---------+-----------+----------+------------+------+--------+------------+
| 1007 | CLARK | m | 10 | MANAGER | 2450 | 2002-09-12 | NULL | NULL | NULL |
| 1009 | KING | f | 10 | PRESIDENT | 5000 | 1995-01-01 | NULL | NULL | NULL |
| 1001 | SMITH | m | 20 | CLERK | 800 | 2005-11-12 | NULL | NULL | NULL |
| 1004 | JONES | m | 20 | MANAGER | 2975 | 1998-05-18 | NULL | NULL | NULL |
| 1008 | SCOTT | m | 20 | ANALYSE | 3000 | 2003-05-12 | NULL | NULL | NULL |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 | NULL | NULL | NULL |
| 1002 | ALLEN | f | 30 | SALESMAN | 1600 | 2003-05-12 | NULL | NULL | NULL |
| 1003 | WARD | f | 30 | SALESMAN | 1250 | 2003-05-12 | NULL | NULL | NULL |
| 1005 | MARTIN | m | 30 | SALESMAN | 1250 | 2001-06-12 | NULL | NULL | NULL |
| 1006 | BLAKE | f | 30 | MANAGER | 2850 | 1997-02-15 | NULL | NULL | NULL |
| 1010 | TURNER | f | 30 | SALESMAN | 1500 | 1997-10-12 | NULL | NULL | NULL |
| 1012 | JAMES | f | 30 | CLERK | 950 | 2008-06-15 | NULL | NULL | NULL |
+------+--------+----------+---------+-----------+----------+------------+-----
# 16、 LIKE a
select * from employee where e_name like '%a%';
+------+--------+----------+---------+----------+----------+------------+
| e_no | e_name | e_gender | dept_no | e_job | e_salary | hiredate |
+------+--------+----------+---------+----------+----------+------------+
| 1007 | CLARK | m | 10 | MANAGER | 2450 | 2002-09-12 |
| 1011 | ADAMS | m | 20 | CLERK | 1100 | 1999-10-05 |
| 1002 | ALLEN | f | 30 | SALESMAN | 1600 | 2003-05-12 |
| 1003 | WARD | f | 30 | SALESMAN | 1250 | 2003-05-12 |
| 1005 | MARTIN | m | 30 | SALESMAN | 1250 | 2001-06-12 |
| 1006 | BLAKE | f | 30 | MANAGER | 2850 | 1997-02-15 |
| 1012 | JAMES | f | 30 | CLERK | 950 | 2008-06-15 |
+------+--------+----------+---------+----------+----------+------------+
업데이트 데이터 업데이트
# : update SET 1= 1, 2= 2... WHERE CONDITION;
#
# not null
# default
mysql> update student2 set name='flying' where id=2; # id=2 , name flying;
mysql> update student2 set name='flying' where d=3 and sex='female'; # and or
#
mysql> alter table student2 add id int(3) not null default 22, add gender enum('M','WW');
1、 :where
select from where ;
select from where and ;
select from where (between A and B); -->
eg: select name from haha where id between 0 and 2;
+------+
| name |
+------+
| ljt |
+------+
1 row in set (0.00 sec)
SELECT name, salary FROM employee5 WHERE salary NOT IN (4000,5000,6000,9000) ;
SELECT name,job_description from employee5 where job_description is null;( )
SELECT * FROM employee5 WHERE name LIKE 'al%'; %
SELECT * FROM employee5 WHERE name LIKE 'al___'; --> "_"
:' = ' ;'like' ; ' regexp '
select * from student where register_date > '2020-02-13';
# WHERE .
2. 정렬:order by 필드(일반적으로 이 필드는 숫자, 성적 등등) 단열: 기본 승차순, 끝에DESC를 추가하면 강차순으로 변경;
mysql> select id from haha order by id DESC;
+----+
| id |
+----+
| 4 |
| 3 |
| 2 |
| 1 |
+----+
4 rows in set (0.00 sec)
: ,
eg: mysql> select id from haha order by money,id;
, null
:SELECT FROM 1 , 2 WHERE 1. = 2. ;
eg:select info.name,info.age,info.dep_num,department.dep_num from info,department where info.dep__num = department.dep_num;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.