20 분 MySQL 기초 입문

12130 단어 MySQL기초 입문
사용 시작
MySQL 은 관계 형 데이터베이스(Relational Database Management System)로 하나의 관계 형 데이터 베 이 스 는 하나 또는 여러 개의 표 로 구성 되 어 있 습 니 다.그림 과 같은 표 입 니 다.

헤더(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 
UPDATE
Update 문 구 는 표 의 데 이 터 를 수정 하 는 데 사 용 됩 니 다.
문법: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='  ')
INSERT
INSERT 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;
DELETE
DELETE 문 구 는 표 의 줄 을 삭제 하 는 데 사 용 됩 니 다.
문법: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 
WHERE
WHERE 자 구 는 선택의 기준 을 규정 하 는 데 쓰 인 다.
문법:SELECT 열 이름 FROM 표 이름 WHERE 열 연산 자 값
--표 퍼 슨 스에 서 Year 필드 가 1965 이상 인 데 이 터 를 선정

SELECT * FROM Persons WHERE Year>1965
AND 와 OR
AND-첫 번 째 조건 과 두 번 째 조건 이 모두 성립 된다 면;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

IN
IN-조작 부 호 는 WHERE 자구 에 여러 개의 값 을 규정 할 수 있 도록 합 니 다.
IN-조작 부 호 는 범 위 를 지정 하고 범위 의 모든 항목 을 일치 시 킵 니 다.IN 수치 규칙,쉼표 로 나 누 어 괄호 안에 모두 놓 습 니 다.
문법:SELECT"필드 이름"from"표 이름"WHERE"필드 이름"IN("값 1","값 2",...);
--표 Persons 에서 필드 를 선택 합 니 다 LastName 은 Adams,Carter 와 같 습 니 다.

SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')
NOT
NOT-연산 자 는 항상 다른 연산 자 와 함께 사용 되 며 걸 러 낼 앞 에 사 용 됩 니 다.

SELECT vend_id, prod_name FROM Products WHERE NOT vend_id = 'DLL01' ORDER BY prod_name;
AS
as-로 이해 할 수 있다.별명
일반적으로 열 이름 이나 표 이름 을 바 꿉 니 다.
문법: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;
MAX
MAX 함 수 는 열 에서 최대 값 을 되 돌려 줍 니 다.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 에 대해 서 만 색인 을 사용 합 니 다
  • 어떤 때 는 LIKE 도 색인 을 사용 합 니 다
  • LIKE 에서 마스크%와검색 을 시작 할 때 MySQL 은 색인 을 사용 하지 않 습 니 다.
  • 
    --       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         。
    
    
    색인 주의사항
  • 색인 에는 NULL 값 이 있 는 열 이 포함 되 지 않 습 니 다
  • 짧 은 색인 사용4.567917.열 에서 연산 색인 을 하지 않 으 면 효력 을 잃 습 니 다.
    생 성 후 표 의 수정
    추가 열
    문법: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 ...
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기