MySQLデータベースオペレータの整理

14327 ワード

前言:
データベースは自分のショートボードで、2日間かけて基礎知識を補充しました.の
SQL
DDLデータベース定義言語Data Definition Language|create alter drop DCLデータベース制御言語Data Control Language|grant rollback commit.DMLデータベース操作言語Data Manipulation Language|insert update delete select DQLデータベースクエリー言語Data Query Language|select
//-------------------------------------------------------------------------------------------------------------------------------------------------------------
mysql -u root -p
ヒントに従ってパスワードを入力と、接続が確立する.
//----------------------------------------------------------------------------------------
データベース定義言語(ライブラリの操作)DDL
1.ライブラリcreate databaseライブラリ名を作成する[character setコードテーブル名collate文字校正セット名]
2.mysqlにどのライブラリがあるかを表示します.show databases;
3.データdrop databaseデータベース名を削除する.
drop database day15;

4.データベースコードテーブルと文字校正(常用しない)alter databaseデータベース名character setデータベースコードテーブル[collate校正セット名]を変更する.
alter database day15 character set utf8 collate utf8_bin;

5.現在使用するライブラリ(重要)useライブラリ名
use day15;

6.現在選択されているデータベースselect database()を表示します.
7.ライブラリを作成する文を表示します.show create databaseデータベース名;show create database day15;
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ライブラリdrop databaseライブラリ名を削除します.データベースコードテーブルalter databaseライブラリ名character setコードテーブルcollate文字校正セットを変更データベースuseライブラリ名を使用して現在使用されているライブラリselect database()を表示します.ライブラリ文show create databaseライブラリ名の表示
一.ディジタルタイプ
  
    TINYINT    1        byte
    SMALLINT   2        short
    MEDIUMINT  3     

(常用)INT 4バイトint BIGINT 8バイトlong浮動小数点型FLOAT単精度4バイトfloat**DOUBLE 8バイトdouble*DECIMAL精度損失なし======================================DOUBLEとDECIMALの違い?DOUBLEタイプは演算時に精度が欠けます.DECIMALは精度の欠落問題を解決するものである.(最下位では文字列を使用して数値を保存)
              ,  double。
               ,  decimal。

二.文字列タイプ
  :              .
      
        CHAR/VARCHAR  (    255  )        
        ====================================================
              :char varchar     ?
                char     .varchar       .
                       10。    abc
                char =》  'abc       '
                varchar => 'abc'
                  :    varchar    。 char              。   :  ( 01,02  )
        ====================================================        
      (   )
    *TEXT/CLOB     (   ) -->          255     .  java  writer   
    BLOB          (   ) -->                              java  stream   
    
    Character Large Object 
    binary Large Object
    
      :
        text:        .
        BLOB:            (        )

三.日付と時刻のタイプ
    date            2015-01-14
    time            11:36:25
    year             2015
    datatime                  2015-01-14 11:36:25
    **timestamp     2015-01-14 11:36:25
    
  : datatime   timestamp   ?
                   .
             ,    datatime   ,     ,          null;
                           timestamp   ,     ,              ;

//--------------------------------------------------------------------------;------------------ テーブル作成に関する文(DDL)CREATE TABLE table_name(field 1 datatype制約/プライマリキー制約auto_increment,field 2 datatype制約,field 3 datatype制約)[character set文字セットcollate校正規則]
1.   
    create table t_user(
        id int,
        name varchar(20),
        sal double(4,3),
        birthday datetime,
        hiredate timestamp
    );
    
    varchar      
           .
    
2.          
        show tables;
    
3.      
        desc   ;     description
        desc t_user;
4.   
        drop table   ;
        drop table t_user;
5.    
        alter table    add      ;
        alter table t_user add photo blob;
6.      
        
        alter table    modify      ;
        
        alter table t_user modify photo varchar(20);
        
7.      
        
        alter table    change               ;
        
          photo        image
        alter table t_user change photo image varchar(20);
        
    8.    
        
        alter table    drop   ;
        
        alter table t_user drop image;
        
    9.      
        
        rename table     to   ;
        
        rename table t_user to user;
        
    10(    )       . (         ,           )
        
        alter table    character set     collate    ;
        
        alter table t_user character set utf8 collate utf8_bin;

//-----------------------------------------------------------------------------------------------
列の拘束(把握)
         .

1.    (not null)          ,             .
2.    (unique)          .      .
3.    (primary key)           ,           ,        (            ).                .
                     ,         +  . 
              :                .
        
           .
    
  :        

    create table t_user2(
        id int primary key auto_increament,                 --     
        name varchar(10) not null,      --     
        loginname varchar(10) not null unique,  --     
        password varchar(20) not null,  --   
        age int(3) not null,                --   
        birthday datetime not null,     --   
        hiredate timestamp not null     --     
    );

プライマリ・キーの自動成長(把握)
  :
    1.           .              . 
    2.                。
    3.mysql,sqlserver,sqllite           .
    4.              。
                  .            .

         1;

  :
    
create table t_user(
            id  int primary key auto_increment,
            password varchar(30) not null,
            age     int not null,
            birthday datetime not null,
            hiredate timestamp not null,
            number int unique
        );

表中のデータに対する添削(DML)
テーブルにレコードを追加(把握する必要があります)
Insert intoテーブル名[(カラム名1,カラム名2...)]values(値1、値2...);
1.データの挿入
1>        
    insert into  t_user(name,email) values('tom','[email protected]');

    ****  :            .         .
2>        ,          
    insert into  t_user values(null,'jerry','[email protected]');
    
    insert into  t_user(name,email) values('  ','[email protected]');

レコードを修正する(把握しなければならない)
update    set   1 =   ,   2 =   ....[where   1,  2...]
create table t_user(
        id int primary key auto_increment,
        name varchar(20) not null,
        email varchar(20) unique
    )

1.表中のidが3のレコードを変更し、nameをroseに変更する.
update t_user set name='rose' where id=3;
update t_user set name='rose';

テーブルレコード関連の削除
DELETE FROM表名[WHERE条件];
1.        ’rose’   。

    DELETE FROM employee WHERE NAME='rose';


2.         。

    DELETE FROM employee ;

3.  truncate      。

    TRUNCATE TABLE employee;

DELETE削除とTRUNCATE削除(了解)の違いは何ですか?まず、いずれも削除テーブルのレコードである.
        :
        1. delete        . TRUNCATE              ,        .
        2. delete DML  。 TRUNCATE DDL  。
        3。delete           ,TRUNCATE     。
        4. delete      ,TRUNCATE     .
        5.  TRUNCATE       . (   )

以上、削除テーブルレコード関連文の変更(DML)を追加しました.
DQL文(DML)クエリ文.(把握しなければならない)
文法:SELECT selection_リスト/クエリーするカラム名/FROM table_リスト/クエリーするテーブル名/WHERE condition/行条件/GROUP BYグループ_columns/対結果パケット/HAVING condition/パケット後の行条件/ORDER BY sorting_columns/結果のソート/LIMIT offset_start, row_count/結果限定/
CREATE TABLE emp(   --    
    empno       INT,    --     
    ename       VARCHAR(50), --     
    job     VARCHAR(50),    --   
    mgr     INT,            --        
    hiredate    DATE,       --     
    sal     DECIMAL(7,2),   --   
    comm        DECIMAL(7,2), --   
    deptno      INT     --     
);

1.1すべての行のすべての列を問い合わせる
    select * from stu;
*      .     .              
    select  sid,sname,age,gender from stu;
      ? 
           . *    .

1.2すべての行指定列select sname from stuをクエリーする.
2.1条件照会紹介条件照会とは、照会時にWHERE句を与えることであり、WHERE句では、以下の演算子およびキーワードを用いることができる:?=、!=、<>、>=;BETWEEN…AND; ? IN(SET)/NOT IN(SET) ? IS NULL/IS NOT NULL/---条件コネクタ?AND; && ? OR; || ? NOT; ! 2.2性別が女性で、年齢が50未満の記録を調べる
select * from stu where gender='female'  and age<50;

2.3照会学号はS_1001、または名前がliSiの記録
select * from stu where sid='S_1001' or sname='liSi';

    ,sql         ,          .

2.4照会学号はS_1001,S_1002,S_1003のレコード
select * from stu where sid='S_1001' or  sid='S_1002' or  sid='S_1003';

select * from stu where sid in('S_1001','S_1002','S_1003');

2.5照会学号はS_ではありません1001,S_1002,S_1003のレコード
select * from stu where not (sid='S_1001' or  sid='S_1002' or  sid='S_1003');

select * from stu where sid not in('S_1001','S_1002','S_1003');

2.6クエリ年齢nullのレコード
select * from stu where age=null;

null   : null   null           :

select * from stu where age is null;

2.7年齢が20~40の学生記録select*from stu where age>=20 and age<=40を照会する.
select * from stu where age between 20 and 40;

2.8性別非男性学生の記録を調べる
select * from stu where gender!= 'male';

select * from stu where not gender='male';

select * from stu where gender not in ('male');

2.9名前がnullでない学生の記録を調べる
select * from stu where  sname is not null;

select * from stu where not  sname is  null;

whereフィールドlike'式';%=>任意の文字を割り当てます.単一の文字を共通に配置する.説明:LIKE条件後ルートブラークエリ式、""=>任意の文字を表す
3.1氏名の5文字からなる学生の記録を調べる
select * from stu where sname like '_____';

3.2クエリ名は5文字で構成され、5文字目が「i」の学生レコード
select * from stu where sname like '____i';

3.3照会名が「z」で始まる学生記録説明:「%」このワイルドカードは任意の長さの文字に一致する.select * from stu where sname like 'z%';
3.4名前の2番目の文字が「i」の学生記録を調べる
select * from stu where sname like '_i%';
3.5名前に「a」文字が含まれている学生レコードの照会
select * from stu where sname like '%a%';
4.1重複記録キーワードの除去:distinct=>重複照会結果記録の除去.select gender from stu; ==> 大量の重複記録が発生
 select distinct gender from stu; =>       

4.2従業員の月給とコミッションの合計を表示する
    select sal*12+comm from emp; 
    
    null           null.         .
      IFNULL(  1,  2)     .     1     null,   null    2  .
    
    select sal*12 + IFNULL(comm,0) from emp;
    
    *             ?
           .

4.3列名に別名を追加する
select sal*12 + IFNULL(comm,0) as '   ' from emp;

** select sal*12 + IFNULL(comm,0)  '   ' from emp;

select sal*12 + IFNULL(comm,0)      from emp;

5.1すべての学生記録を調べ、年齢昇順でasc:昇順desc:降順
select * from stu order by age asc;

      

select * from stu order by age;

5.2すべての学生記録を調べ、年齢降順で並べ替える
select * from stu order by age desc;

5.3すべての従業員を照会し、月給降順で並べ替え、月給が同じ場合、番号昇順で並べ替える
select * from emp order by sal desc , empno asc;

集約関数集約関数は、縦方向の演算に使用される関数です:?COUNT():指定列がNULLでないレコード行の数を統計します.MAX():指定されたカラムの最大値を計算し、指定されたカラムが文字列タイプである場合、文字列ソート演算を使用します.MIN():指定された列の最小値を計算し、指定された列が文字列タイプである場合、文字列ソート演算を使用します.SUM():指定された列の数値と、指定された列タイプが数値タイプでない場合、計算結果は0です.AVG():指定されたカラムの平均値を計算し、指定されたカラムタイプが数値タイプでない場合、計算結果は0とする.
6.1 COUNT縦統計が必要な場合COUNT()
     1>  emp     :
     select count(*) from emp;
    2>  emp        :
        
        select count(*) from emp where comm is not null and comm >0;
    
    3>  emp      2500   :
    
        select count(*) from emp where sal > 2500;
    
    4>           2500    :
        
        select count(*) from emp where sal+IFNULL(comm,0) > 2500;
        
    5>                :

        select count(*) from emp where comm > 0 and  mgr is not null;

6.2 SUM(合計計算)とAVG(平均計算)縦加算が必要な場合sum()関数を使用します.1>すべての従業員の月給と:select sum(sal)from emp;
2>         ,         :
        select sum(sal),sum(comm) from emp;

3>        +   :
        select sum(sal+IFNULL(comm,0)) from emp;

4>          :
        
        select avg(sal) from emp;

6.3 MAXとMINは最高賃金と最低賃金を照会する:select max(sal)、min(sal)from emp;
グループクエリー
グループ化クエリーが必要な場合は、各部門の給与合計などのGROUP BY句を使用します.これは、部分を使用してグループ化することを意味します.
? 1>各部門の部門番号と各部門の給与合計を照会します.
    select deptno,sum(sal) from emp group by deptno;
    

2>                    :

    select deptno,count(ename) from emp group by deptno;


3>                     1500   :

    select deptno,count(ename) from emp where sal>1500 group by deptno ;

HAVING句4>給与合計が9000より大きい部門番号および給与合計を問い合せます.
    select deptno,sum(sal) from emp group by deptno having sum(sal)>9000;
    
  having        .

where having      ?
    
    1.where        .
    2.having        .

    where        having.            .

LIMIT(MySQL方言)(マスターしなければならない)
LIMITは、クエリ結果の開始ローと合計ローの数を定義します.
1>クエリー5行レコード、開始行0から開始
select * from emp limit 0,5;
2>クエリー10行レコード、開始行3から開始
select * from emp limit 3,10;

3>1ページに5つのレコードがある場合、3ページ目のレコードを表示するにはどうすればいいですか??最初のページには、開始動作0が記録され、合計5行がクエリーされます.select * from emp limit 0,5; ? 2ページ目は開始動作5を記録し、合計5行をクエリーする.select * from emp limit 5,5; ? 3ページ目は開始動作10を記録し、合計5行を照会する.select * from emp limit 10,5;