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データベース名を削除する.
4.データベースコードテーブルと文字校正(常用しない)alter databaseデータベース名character setデータベースコードテーブル[collate校正セット名]を変更する.
5.現在使用するライブラリ(重要)useライブラリ名
6.現在選択されているデータベースselect database()を表示します.
7.ライブラリを作成する文を表示します.show create databaseデータベース名;show create database day15;
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ライブラリdrop databaseライブラリ名を削除します.データベースコードテーブルalter databaseライブラリ名character setコードテーブルcollate文字校正セットを変更データベースuseライブラリ名を使用して現在使用されているライブラリselect database()を表示します.ライブラリ文show create databaseライブラリ名の表示
一.ディジタルタイプ
(常用)INT 4バイトint BIGINT 8バイトlong浮動小数点型FLOAT単精度4バイトfloat**DOUBLE 8バイトdouble*DECIMAL精度損失なし======================================DOUBLEとDECIMALの違い?DOUBLEタイプは演算時に精度が欠けます.DECIMALは精度の欠落問題を解決するものである.(最下位では文字列を使用して数値を保存)
二.文字列タイプ
三.日付と時刻のタイプ
//--------------------------------------------------------------------------;------------------ テーブル作成に関する文(DDL)CREATE TABLE table_name(field 1 datatype制約/プライマリキー制約auto_increment,field 2 datatype制約,field 3 datatype制約)[character set文字セットcollate校正規則]
//-----------------------------------------------------------------------------------------------
列の拘束(把握)
プライマリ・キーの自動成長(把握)
表中のデータに対する添削(DML)
テーブルにレコードを追加(把握する必要があります)
Insert intoテーブル名[(カラム名1,カラム名2...)]values(値1、値2...);
1.データの挿入
レコードを修正する(把握しなければならない)
1.表中のidが3のレコードを変更し、nameをroseに変更する.
テーブルレコード関連の削除
DELETE FROM表名[WHERE条件];
DELETE削除とTRUNCATE削除(了解)の違いは何ですか?まず、いずれも削除テーブルのレコードである.
以上、削除テーブルレコード関連文の変更(DML)を追加しました.
DQL文(DML)クエリ文.(把握しなければならない)
文法:SELECT selection_リスト/クエリーするカラム名/FROM table_リスト/クエリーするテーブル名/WHERE condition/行条件/GROUP BYグループ_columns/対結果パケット/HAVING condition/パケット後の行条件/ORDER BY sorting_columns/結果のソート/LIMIT offset_start, row_count/結果限定/
1.1すべての行のすべての列を問い合わせる
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未満の記録を調べる
2.3照会学号はS_1001、または名前がliSiの記録
2.4照会学号はS_1001,S_1002,S_1003のレコード
2.5照会学号はS_ではありません1001,S_1002,S_1003のレコード
2.6クエリ年齢nullのレコード
2.7年齢が20~40の学生記録select*from stu where age>=20 and age<=40を照会する.
2.8性別非男性学生の記録を調べる
2.9名前がnullでない学生の記録を調べる
whereフィールドlike'式';%=>任意の文字を割り当てます.単一の文字を共通に配置する.説明:LIKE条件後ルートブラークエリ式、""=>任意の文字を表す
3.1氏名の5文字からなる学生の記録を調べる
3.2クエリ名は5文字で構成され、5文字目が「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; ==> 大量の重複記録が発生
4.2従業員の月給とコミッションの合計を表示する
4.3列名に別名を追加する
5.1すべての学生記録を調べ、年齢昇順でasc:昇順desc:降順
5.2すべての学生記録を調べ、年齢降順で並べ替える
5.3すべての従業員を照会し、月給降順で並べ替え、月給が同じ場合、番号昇順で並べ替える
集約関数集約関数は、縦方向の演算に使用される関数です:?COUNT():指定列がNULLでないレコード行の数を統計します.MAX():指定されたカラムの最大値を計算し、指定されたカラムが文字列タイプである場合、文字列ソート演算を使用します.MIN():指定された列の最小値を計算し、指定された列が文字列タイプである場合、文字列ソート演算を使用します.SUM():指定された列の数値と、指定された列タイプが数値タイプでない場合、計算結果は0です.AVG():指定されたカラムの平均値を計算し、指定されたカラムタイプが数値タイプでない場合、計算結果は0とする.
6.1 COUNT縦統計が必要な場合COUNT()
6.2 SUM(合計計算)とAVG(平均計算)縦加算が必要な場合sum()関数を使用します.1>すべての従業員の月給と:select sum(sal)from emp;
6.3 MAXとMINは最高賃金と最低賃金を照会する:select max(sal)、min(sal)from emp;
グループクエリー
グループ化クエリーが必要な場合は、各部門の給与合計などのGROUP BY句を使用します.これは、部分を使用してグループ化することを意味します.
? 1>各部門の部門番号と各部門の給与合計を照会します.
HAVING句4>給与合計が9000より大きい部門番号および給与合計を問い合せます.
LIMIT(MySQL方言)(マスターしなければならない)
LIMITは、クエリ結果の開始ローと合計ローの数を定義します.
1>クエリー5行レコード、開始行0から開始
select * from emp limit 0,5;
2>クエリー10行レコード、開始行3から開始
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;
データベースは自分のショートボードで、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;