SQL:mysql共通文
12390 ワード
RDBMSすなわちリレーショナル・データベース管理システムoracle mysql sqlserver db 2 postgresql sqlite excel
データベース(Database)データテーブルtable列column行row冗長プライマリキーprimary key外部キーforeign key複合キーインデックス参照整合性
MySQLデータ型
3種類:数値、日付/時間および文字列(文字)数値TINYINT 1バイト(0255)SMALLINT 2バイト(0,65,535)MEDIUMINT 3バイトINTまたはINTEGER 4バイトBIGINT 8バイトFLOAT 4バイトDOUBLE 8バイトDECIMAL
日時DATE日付値TIME時間値または期間YEAR年値DATETIMEミックス日付と時刻値TIMESTAMPタイムスタンプ
文字列CHAR 0-255バイト、VARCHAR 0-65535バイトBINARY、VARBIINARY、BLOB、TEXT、ENUM、SET
トランザクションは、4つの条件(ACID):Atomicity(原子性)、Consistency(安定性)、Isolation(隔離性)、Durability(信頼性)を満たす必要があります.
1、トランザクションの原子性:トランザクションのセット、または成功;撤回するか.2、安定性:不正なデータ(外部キー制約など)があり、トランザクションが撤回される.3、独立性:トランザクションは独立して実行されます.1つのトランザクションが処理された結果、他のトランザクションに影響を及ぼすと、他のトランザクションは撤回されます.トランザクションの100%分離には、速度を犠牲にする必要があります.4、信頼性:ソフト、ハードウェアがクラッシュした後、InnoDBデータテーブル駆動はログファイルを利用して修正を再構築する.信頼性と高速性は両立できませんinnodb_flush_log_at_trx_commitオプションは、トランザクションをログに保存するタイミングを決定します.
コマンド:
データベース(Database)データテーブルtable列column行row冗長プライマリキーprimary key外部キーforeign key複合キーインデックス参照整合性
MySQLデータ型
3種類:数値、日付/時間および文字列(文字)数値TINYINT 1バイト(0255)SMALLINT 2バイト(0,65,535)MEDIUMINT 3バイトINTまたはINTEGER 4バイトBIGINT 8バイトFLOAT 4バイトDOUBLE 8バイトDECIMAL
日時DATE日付値TIME時間値または期間YEAR年値DATETIMEミックス日付と時刻値TIMESTAMPタイムスタンプ
文字列CHAR 0-255バイト、VARCHAR 0-65535バイトBINARY、VARBIINARY、BLOB、TEXT、ENUM、SET
トランザクションは、4つの条件(ACID):Atomicity(原子性)、Consistency(安定性)、Isolation(隔離性)、Durability(信頼性)を満たす必要があります.
1、トランザクションの原子性:トランザクションのセット、または成功;撤回するか.2、安定性:不正なデータ(外部キー制約など)があり、トランザクションが撤回される.3、独立性:トランザクションは独立して実行されます.1つのトランザクションが処理された結果、他のトランザクションに影響を及ぼすと、他のトランザクションは撤回されます.トランザクションの100%分離には、速度を犠牲にする必要があります.4、信頼性:ソフト、ハードウェアがクラッシュした後、InnoDBデータテーブル駆動はログファイルを利用して修正を再構築する.信頼性と高速性は両立できませんinnodb_flush_log_at_trx_commitオプションは、トランザクションをログに保存するタイミングを決定します.
コマンド:
> mysql -uroot -p123456
mysql> grant all on test.* to 'pengshiyu'@'localhost'
-> identified by '123456';
mysql> quit
mysql> show databases;
mysql> create database test;
mysql> create database test charset utf8;
mysql> show create database test;
mysql> drop database test;
mysql> use test;
mysql> create table student(
-> id int auto_increment,
-> name char(32) not null,
-> age int not null,
-> register_data date not null,
-> primary key (id)
-> );
mysql> show tables;
mysql> desc student;
mysql> describe student;
mysql> show columns from student;
mysql> insert into student(name, age, register_data)
-> values('tom', 27, '2018-06-25');
mysql> select * from student;
mysql> select * from student\G
mysql> select * from student limit 3;
mysql> select * from student limit 3 offset 5; 5
mysql> select * from student where id > 3;
mysql> select * from student where register_data like "2018-06%";
mysql> update student set name = 'cxx' where id = 10;
mysql> delete from student where id = 10;
mysql> select * from student order by age; ascend
mysql> select * from student order by age desc; descend
mysql> select age,count(*) as num from student group by age;
mysql> select name, sum(age) from student group by name with rollup;
mysql> select coalesce(name,'sum'), sum(age) from student
-> group by name with rollup;
mysql> alter table student add sex enum('M','F');
mysql> alter table student drop sex;
mysql> alter table student modify sex enum('M','F') not null;
mysql> alter table student modify sex
-> enum('M','F') not null default 'M';
mysql> alter table student change sex gender
-> enum('M','F') not null default 'M';
mysql> create table study_record(
-> id int not null primary key auto_increment,
-> day int not null,
-> stu_id int not null,
-> constraint fk_student_key foreign key (stu_id) references student(id)
-> );
mysql> create table A(a int not null);
mysql> create table B(b int not null);
mysql> insert into A(a) values (1);
mysql> insert into A(a) values (2);
mysql> insert into A(a) values (3);
mysql> insert into A(a) values (4);
mysql> insert into B(b) values (3);
mysql> insert into B(b) values (4);
mysql> insert into B(b) values (5);
mysql> insert into B(b) values (6);
mysql> insert into B(b) values (7);
mysql> select * from A inner join B on A.a = B.b;
mysql> select a.*, b.* from A inner join B on A.a = B.b;
mysql> select * from A left join B on A.a =B.b;
mysql> select * from A right join B on A.a =B.b;
mysql> select * from a left join b on a.a=b.b union
-> select * from a right join b on a.a = b.b;
mysql> begin;
mysql> rollback;
mysql> commit;
mysql> show index from student;
mysql> create index name_index on student(name(10));
mysql> drop index name_index on student;