20 분 MySQL 기초 입문
MySQL 은 관계 형 데이터베이스(Relational Database Management System)로 하나의 관계 형 데이터 베 이 스 는 하나 또는 여러 개의 표 로 구성 되 어 있 습 니 다.그림 과 같은 표 입 니 다.
![](https://s1.md5.ltd/image/a0c45de73427345367925a03c3b0d3df.jpg)
헤더(header):열 마다 이름;
열(row):같은 데이터 형식의 데이터 집합 을 가지 고 있 습 니 다.
줄(col):모든 줄 은 특정한 사람/사물 의 구체 적 인 정 보 를 묘사 하 는 데 사 용 됩 니 다.
값(value):줄 의 구체 적 인 정 보 는 각 값 이 이 열의 데이터 형식 과 같 아야 합 니 다.
MySQL 로그 인
mysql -h 127.0.0.1 -u -p
mysql -D -h -u -p
mysql> exit #
mysql> quit #
데이터베이스 만 들 기표 의 조작 에 대해 서 는 먼저 use 라 이브 러 리 이름 을 입력 해 야 합 니 다.
-- samp_db , gbk
create database samp_db character set gbk;
drop database samp_db; -- samp_db
show databases; -- 。
use samp_db; -- samp_db
show ; -- samp_db
describe ; --
delete from ; --
데이터베이스 시트 만 들 기create table 문 구 를 사용 하면 표 의 생 성 을 완성 할 수 있 습 니 다.create table 의 일반적인 형식:문법:create table 표 이름(열 설명);
CREATE TABLE `user_accounts` (
`id` int(100) unsigned NOT NULL AUTO_INCREMENT primary key,
`password` varchar(32) NOT NULL DEFAULT '' COMMENT ' ',
`reset_password` tinyint(32) NOT NULL DEFAULT 0 COMMENT ' :0- ;1- ',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT ' ',
`create_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`update_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
-- ,
UNIQUE INDEX idx_user_mobile(`mobile`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8
COMMENT=' ';
데이터 형식의 속성 해석NULL:데이터 열 은 NULL 값 을 포함 할 수 있 습 니 다.
NOT NULL:데이터 열 에 NULL 값 을 포함 할 수 없습니다.
DEFAULT:기본 값;
PRIMARY:키 메 인 키;
AUTO_INCREMENT:자동 으로 증가 하여 정수 유형 에 적 용 됩 니 다.
UNSIGNED:지수 값 유형 은 정수 일 수 있 습 니 다.
CHARACTER SET name:문자 집합 을 지정 합 니 다.
COMMENT:테이블 이나 필드 에 대한 설명;
첨삭 하 다.
SELECT
SELECT 문 구 는 표 에서 데 이 터 를 선택 하 는 데 사 용 됩 니 다.
SELECT 열 이름 FROM 표 이름
SELECT*FROM 표 이름
--표 abc 두 id 표 abc 에는 필드 a=b 를 포함 하지 않 고 id 만 표시 합 니 다.
SELECT s.id from station s WHERE id in (13,14) and user_id not in (4);
--표 Persons 에서 LastName 열 을 선택 한 데이터
SELECT LastName FROM Persons
--결과 집 중 된 데 이 터 는 자동 으로 반복 된다
SELECT DISTINCT Company FROM Orders
UPDATEUpdate 문 구 는 표 의 데 이 터 를 수정 하 는 데 사 용 됩 니 다.
문법:UPDATE 표 이름 SET 열 이름=새 값 WHERE 열 이름=어떤 값
--update 문 구 는 필드 값 을 다른 결과 로 추출 한 필드 로 설정
update user set name = (select name from user1 where user1 .id = 1 )
where id = (select id from user2 where user2 .name=' ')
INSERTINSERT INTO 문 구 는 표 에 새 줄 을 삽입 하 는 데 사 용 됩 니 다.
문법:INSERT INTO 표 이름 VALUES(값 1,값 2,...)
문법:INSERT INTO 표 이름(열 1,열 2,...)VALUES(값 1,값 2,...)
--표 Persons 에 필드 를 삽입 LastName=Wilson 필드 Address=shanghai
INSERT INTO Persons (LastName, Address) VALUES ('JSLite', 'shanghai');
INSERT INTO meeting SET a=1,b=2;
DELETEDELETE 문 구 는 표 의 줄 을 삭제 하 는 데 사 용 됩 니 다.
문법:DELETE FROM 표 이름 WHERE 열 이름=값
-- table_name , 。
DELETE FROM table_name
--
DELETE * FROM table_name
-- Person LastName = 'Wilson'
DELETE FROM Person WHERE LastName = 'Wilson'
-- meeting id 2 3
DELETE from meeting where id in (2,3);
-- Persons Id_P Orders Id_P ,
-- Persons LastName、FirstName ,Orders OrderNo
SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p, Orders o WHERE p.Id_P = o.Id_P
WHEREWHERE 자 구 는 선택의 기준 을 규정 하 는 데 쓰 인 다.
문법:SELECT 열 이름 FROM 표 이름 WHERE 열 연산 자 값
--표 퍼 슨 스에 서 Year 필드 가 1965 이상 인 데 이 터 를 선정
SELECT * FROM Persons WHERE Year>1965
AND 와 ORAND-첫 번 째 조건 과 두 번 째 조건 이 모두 성립 된다 면;OR-첫 번 째 조건 과 두 번 째 조건 중 하나 만 성립 되면;
AND
-- meeting
-- id=2 user_id=5
-- id=3 user_id=6
DELETE from meeting where id in (2,3) and user_id in (5,6);
-- AND "Carter" "Thomas" :
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter';
OR
-- OR "Carter" "Thomas" :
SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'
ORDER BY문 구 는 기본적으로 오름차 순 에 따라 기록 을 정렬 합 니 다.
ORDER BY-문 구 는 지정 한 열 에 따라 결과 집합 을 정렬 하 는 데 사 용 됩 니 다.
DESC-내림차 순 으로 기록 을 정렬 합 니 다.
ASC-순서대로 기록 을 정렬 합 니 다.
-- Company Orders ,
SELECT Company, OrderNumber FROM Orders ORDER BY Company
-- DESC
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
-- Company , OrderNumber
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
ININ-조작 부 호 는 WHERE 자구 에 여러 개의 값 을 규정 할 수 있 도록 합 니 다.
IN-조작 부 호 는 범 위 를 지정 하고 범위 의 모든 항목 을 일치 시 킵 니 다.IN 수치 규칙,쉼표 로 나 누 어 괄호 안에 모두 놓 습 니 다.
문법:SELECT"필드 이름"from"표 이름"WHERE"필드 이름"IN("값 1","값 2",...);
--표 Persons 에서 필드 를 선택 합 니 다 LastName 은 Adams,Carter 와 같 습 니 다.
SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')
NOTNOT-연산 자 는 항상 다른 연산 자 와 함께 사용 되 며 걸 러 낼 앞 에 사 용 됩 니 다.
SELECT vend_id, prod_name FROM Products WHERE NOT vend_id = 'DLL01' ORDER BY prod_name;
ASas-로 이해 할 수 있다.별명
일반적으로 열 이름 이나 표 이름 을 바 꿉 니 다.
문법:select column1 as 열 1,column2 as 열 2 from table as 표
SELECT * FROM Employee AS emp
-- Employee , Employee emp。
-- , emp Employee.
-- SELECT * FROM emp.
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders
-- Orders OrderPrice ,
-- OrderPrice LargestOrderPrice
-- users_profile name
SELECT t.name from (SELECT * from users_profile a) AS t;
-- user_accounts ua, users_profile up
-- user_accounts id users_profile user_id
-- mobile、name
SELECT ua.mobile,up.name FROM user_accounts as ua INNER JOIN users_profile as up ON ua.id = up.user_id;
JOIN두 개 이상 의 표 의 열 간 의 관계 에 따라 이 표 에서 데 이 터 를 조회 하 는 데 사용 된다.
JOIN:표 에 일치 하 는 것 이 하나 이상 있 으 면 줄 을 되 돌려 줍 니 다.
INNER JOIN:표 에 최소한 일치 하 는 것 이 존재 할 때 INNER JOIN 키 워드 는 줄 로 돌아 갑 니 다.
LEFT JOIN:오른쪽 표 에 일치 하지 않 더 라 도 왼쪽 표 에서 모든 줄 을 되 돌려 줍 니 다.
Right JOIN:왼쪽 표 에 일치 하지 않 더 라 도 오른쪽 표 에서 모든 줄 을 되 돌려 줍 니 다.
FULL JOIN:표 중 하나 에 일치 하 는 것 만 있 으 면 되 돌아 갑 니 다.
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName;
SQL 함수COUNT
COUNT 는 우리 로 하여 금 표 에서 몇 건의 자료 가 선택 되 었 는 지 셀 수 있 게 한다.
문법:SELECT COUNT("필드 이름")FROM"표 이름";
-- Store_Information store_name 。
-- "IS NOT NULL" " " 。
SELECT COUNT (Store_Name) FROM Store_Information WHERE Store_Name IS NOT NULL;
-- Persons
SELECT COUNT(1) AS totals FROM Persons;
-- station user_id
select user_id, count(*) as totals from station group by user_id;
MAXMAX 함 수 는 열 에서 최대 값 을 되 돌려 줍 니 다.NULL 값 은 계산 에 포함 되 지 않 습 니 다.
문법:SELECT MAX("필드 이름")FROM"표 이름"
--목록 표 Orders 필드 OrderPrice 열 최대 치,
--결과 집 열 에 OrderPrice 가 표시 되 지 않 음 Largest OrderPrice
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders
색인 추가일반 색인(INDEX)
문법:ALTER TABLE 표 이름 ADD INDEX 색인 이름(필드 이름)
-- C
CREATE INDEX index_user ON user(title)
-- C
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
-- user name (INDEX)
ALTER TABLE `table` ADD INDEX index_name (name)
-- C
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
`time` int(10) NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
INDEX index_name (title(length))
)
-- C
DROP INDEX index_name ON table
홈 키 인덱스(PRIMARY key)문법:ALTER TABLE 표 이름 ADD PRIMARY KEY(필드 이름)
-- user id (PRIMARY key)
ALTER TABLE `user` ADD PRIMARY key (id);
유일한 색인(UNIQUE)문법:ALTER TABLE 표 이름 ADD UNIQUE(필드 이름)
-- user creattime (UNIQUE)
ALTER TABLE `user` ADD UNIQUE (creattime);
전체 텍스트 인덱스(FULLTEXT)문법:ALTER TABLE 표 이름 ADD FULLTEXT(필드 이름)
-- user description (FULLTEXT)
ALTER TABLE `user` ADD FULLTEXT (description);
다 중 인덱스 추가문법:ALTER TABLE tablename ADD INDEX index_name ( column1, column2, column3)
-- user name、city、age name_city_age (INDEX)
ALTER TABLE user ADD INDEX name_city_age (name(10),city,age);
색인 생 성 시기WHERE 와 JOIN 에 나타 나 는 열 은 색인 을 만들어 야 하지만 완전히 그렇지 는 않 습 니 다.
MySQL 은<,<=,=,>,=,BETWEEN,IN 에 대해 서 만 색인 을 사용 합 니 다
-- city age ,
-- mytable userame JOIN , 。
SELECT t.Name
FROM mytable t LEFT JOIN mytable m ON t.Name=m.username
WHERE m.age=20 AND m.city=' ';
SELECT * FROM mytable WHERE username like'admin%'; -- :
SELECT * FROM mytable WHEREt Name like'%admin'; -- , LIKE 。
색인 주의사항생 성 후 표 의 수정
추가 열
문법:alter 테이블 이름 add 열 데이터 형식[after 삽입 위치];
예시:
-- students address:
alter table students add address char(60);
-- age birthday:
alter table students add birthday date after age;
수정 열문법:alter table 표 이름 change 열 이름 이름 새 데이터 형식;
-- tel telphone:
alter table students change tel telphone char(13) default "-";
-- name char(16):
alter table students change name name char(16) not null;
열 삭제문법:alter table 표 이름 drop 열 이름;
-- students birthday :
alter table students drop birthday;
이름 바 꾸 기문법:alter table 표 이름 을 새 표 이름 으로 바 꿉 니 다.
-- students workmates:
alter table students rename workmates;
테이블 데이터 비우 기문법:표 이름 에서 delete;
-- workmates , 。
delete from workmates;
전체 테이블 삭제문법:drop table 표 이름;
-- workmates :
drop table workmates;
데이터베이스 전체 삭제문법:drop database 데이터베이스 이름;
-- samp_db :
drop database samp_db;
수첩 을 참고 하 다//www.jb51.net/w3school/sql/index.asp.htm
http://www.1keydata.com/cn/sq ...
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.