A:MySQLの基本的な導入:
MySQLはリレーショナルデータベースである
MySQLはOracleのデータベース製品の一部です。
ビジネスとコミュニティ版に分け
MySQLはリレーショナルデータベースである
MySQLはOracleのデータベース製品の一部です。
ビジネスとコミュニティ版に分け
技術的な観点:
MySQLデータベースである C / S(クライアント/サーバ) モデルサービスB / S(ブラウザ/サーバ)
MySQLのネットワーク通信モデル:NIO +シナリオ接続プールを達成するためには、高い並行性をサポート
MySQLデータベースである C / S(クライアント/サーバ) モデルサービスB / S(ブラウザ/サーバ)
MySQLのネットワーク通信モデル:NIO +シナリオ接続プールを達成するためには、高い並行性をサポート
MySQLの専門用語を説明
:
エンティティ :現実の世界は客観的に存在すると物事の間に違いがあることができます。例えば、「学生」、「ブック」、「レッスン」のように。それは価値がある「もの」がちょうど有形「もの」ではありません、ここで強調している、それはまた、仮想ではなく、ということができ、「教師と学校との関係。」
プロパティ :教科書の説明:「エンティティが特定の特性を持っている、」プロパティは、論理的な概念として始まったことを示しているが、例えば、「性別」の属性として「人」です。リレーショナルデータベースでは、物理的性質の概念は、プロパティは、と見ることができている「テーブル。」
タプル: 表の行はタプルです。
コンポーネント: プロパティ値のタプル。属性があるときに、リレーショナル・データベースでは、それはすなわち、何もして、リレーショナル・データベースで、アトミック操作である「切っても切れない。」それ以外の場合は、リレーショナルデータベースではありません。
コード: テーブルは、一意性(またはプロパティ・グループ)の組を識別することができ、そのようなコードは、複数を持っている場合、我々は、候補コードを呼び出して、我々は、候補からコードを取り出すボスを行い、それが呼び出され 、一次コード 。
完全なコードは: 1ヤードはすべての属性が含まれている場合、このコードは、完全なコードです。
主なプロパティ(主キー) :このプロパティは、長い主な属性は、候補コードのいずれかに登場したようような特性です。
非プライマリプロパティ(非プライマリキー属性) :このプロパティは、プライマリ以外の財産である前に、逆に、上記候補コードのいずれにも表示されません。
外符号(外部キー) :属性(または属性グループ)が、それはコードではなく、他のコード・テーブルは、それが外符号です。
エンティティ :現実の世界は客観的に存在すると物事の間に違いがあることができます。例えば、「学生」、「ブック」、「レッスン」のように。それは価値がある「もの」がちょうど有形「もの」ではありません、ここで強調している、それはまた、仮想ではなく、ということができ、「教師と学校との関係。」
プロパティ :教科書の説明:「エンティティが特定の特性を持っている、」プロパティは、論理的な概念として始まったことを示しているが、例えば、「性別」の属性として「人」です。リレーショナルデータベースでは、物理的性質の概念は、プロパティは、と見ることができている「テーブル。」
タプル: 表の行はタプルです。
コンポーネント: プロパティ値のタプル。属性があるときに、リレーショナル・データベースでは、それはすなわち、何もして、リレーショナル・データベースで、アトミック操作である「切っても切れない。」それ以外の場合は、リレーショナルデータベースではありません。
コード: テーブルは、一意性(またはプロパティ・グループ)の組を識別することができ、そのようなコードは、複数を持っている場合、我々は、候補コードを呼び出して、我々は、候補からコードを取り出すボスを行い、それが呼び出され 、一次コード 。
完全なコードは: 1ヤードはすべての属性が含まれている場合、このコードは、完全なコードです。
主なプロパティ(主キー) :このプロパティは、長い主な属性は、候補コードのいずれかに登場したようような特性です。
非プライマリプロパティ(非プライマリキー属性) :このプロパティは、プライマリ以外の財産である前に、逆に、上記候補コードのいずれにも表示されません。
外符号(外部キー) :属性(または属性グループ)が、それはコードではなく、他のコード・テーブルは、それが外符号です。
データベースパラダイムの利点:
1は、データの冗長性削減
2を、異常解消
のデータのように、より合理的な組織で、2
表の学生(学生証、学生の名前、学生の年齢)
転写物(学生ID、プログラムID、生徒の名前、生徒の年齢、実績)
転写物(学生ID、プログラムID、生徒の名前、生徒の年齢、実績)
図1は、第一のパラダイム(1NF):各列の原子の性質維持
列は基本的なデータ列を解決することができない
、1NFない場合、多くの関係エンティティに分割される
注:最初のパラダイムを満たしていないと呼ばれることができませんリレーショナルデータベース
列は基本的なデータ列を解決することができない
、1NFない場合、多くの関係エンティティに分割される
注:最初のパラダイムを満たしていないと呼ばれることができませんリレーショナルデータベース
:(学生テーブル学生ID、名前、年齢、自宅の住所)
EG:7つのマンションの18 1張西安、陝西省、西安大学
西安、陝西省未央区、西安工科大学、陝西省西安市未央区7つのマンションマーシュストリート西安大学
:分割後の
学生テーブル:(学生のID、名前、年齢、住所、ID)
アドレステーブル:(アドレスID、州、市、区、ストリート)
EG:7つのマンションの18 1張西安、陝西省、西安大学
西安、陝西省未央区、西安工科大学、陝西省西安市未央区7つのマンションマーシュストリート西安大学
:分割後の
学生テーブル:(学生のID、名前、年齢、住所、ID)
アドレステーブル:(アドレスID、州、市、区、ストリート)
図2に示すように、第二のパラダイム(2NF):主キー属性に完全に依存1NF、(依存逃げ部)
非プライマリキー属性が主に完全に依存しているプライマリ・キーに依存していない場合、それは新たな本体、に分割されるべき
多くで設計します関係
非プライマリキー属性が主に完全に依存しているプライマリ・キーに依存していない場合、それは新たな本体、に分割されるべき
多くで設計します関係
生徒の成績表:(学生ID、プログラムID、生徒の名前、生徒の年齢、コース名、コースグレード)
主キー(学生ID、プログラムID)
生徒の名前は- >学生ID、部分的に依存する
すべての年齢の学生が- >学生IDはに部分的に依存
コース名- >コースIDがに部分的に依存
コースのグレード- >学生のID、プログラムID完全に依存
主キー(学生ID、プログラムID)
生徒の名前は- >学生ID、部分的に依存する
すべての年齢の学生が- >学生IDはに部分的に依存
コース名- >コースIDがに部分的に依存
コースのグレード- >学生のID、プログラムID完全に依存
:分割後
- >プライマリキーテーブルの学生(学生証、学生の名前、生徒の年齢):学生IDの
カリキュラム(コースID、コース名) - >主キー:コースID
生徒の成績表(学生証、コースID、コースグレード) - >主キー:学生ID、プログラムID
- >プライマリキーテーブルの学生(学生証、学生の名前、生徒の年齢):学生IDの
カリキュラム(コースID、コース名) - >主キー:コースID
生徒の成績表(学生証、コースID、コースグレード) - >主キー:学生ID、プログラムID
図3に示すように、第三のパラダイム(3NF):2NFベースで、非プライマリ性の他の特性に依存しない(転送依存性を排除します)
学生情報表(学生証、学生名、大学名、電話の大学、大学のアドレス)
プライマリキー:学生ID
学生名- >学生ID
学校名- >学生ID
スクール電話- >カレッジ- >学生ID
プライマリキー:学生ID
学生名- >学生ID
学校名- >学生ID
スクール電話- >カレッジ- >学生ID
:分割した後、
表の学生(学生証、学生の名前、大学のID)プライマリキー:学生ID
学校テーブル(大学のID、大学の名前、大学の電話学校のアドレス)プライマリキー:大学ID
表の学生(学生証、学生の名前、大学のID)プライマリキー:学生ID
学校テーブル(大学のID、大学の名前、大学の電話学校のアドレス)プライマリキー:大学ID
その上に第3正規形で一般的なリレーショナルデータベース
高いパラダイムは、より多くのテーブル、多くの問題がテーブルにもたらす::という分析が示す
1、クエリ操作は、複数のテーブルを接続するには、クエリは、読書の祝福増加し
、クエリのパフォーマンスが低下し、複数のテーブルを接続するためのクエリの必要性を2
1、クエリ操作は、複数のテーブルを接続するには、クエリは、読書の祝福増加し
、クエリのパフォーマンスが低下し、複数のテーブルを接続するためのクエリの必要性を2
2:ライブラリの簡単な操作(CMD上で実行されています)
データベースへのコマンド接続:mysqlの-uroot -p(入力したパスワードを入力してください)
終了データベース:終了;(セミコロン)
すべてのライブラリを参照してください:ショーのデータベースを、
SQLのデータベースを作成します:データベースdatabase_nameを作成します。
削除データのSQL:ドロップデータベースdatabase_name。
SQLのデータベースを選択:使用するデータベース名を、
現在のライブラリ表示の下にあるすべてのテーブルSQL:ショーのテーブル。
3:テーブル関連の操作
1、表を作成します
テーブルTABLE_NAMEを作成します
属性名データ型[整合性制約]、
属性名データ型[整合性制約]、
...
属性名 数据类型[完整性约束]
)
注意:在数据库创建的时候要选取合适的数据类型,而且还要添加完整性约束
完整性约束条件有:
-------------------------------------
约束条件 | 说明
-------------------------------------
primary key | 修饰的属性是该表的主键
-------------------------------------
foreign key | 修饰的数据是该表的外键
-------------------------------------
not null |表示该字段不能为null
-------------------------------------
unique |修饰的属性值是唯一的
-------------------------------------
auto_increment |mysql的特色,表示该属性是自增的
-------------------------------------
default | 设置属性默认值
-------------------------------------
属性名 数据类型[完整性约束]
)
注意:在数据库创建的时候要选取合适的数据类型,而且还要添加完整性约束
完整性约束条件有:
-------------------------------------
约束条件 | 说明
-------------------------------------
primary key | 修饰的属性是该表的主键
-------------------------------------
foreign key | 修饰的数据是该表的外键
-------------------------------------
not null |表示该字段不能为null
-------------------------------------
unique |修饰的属性值是唯一的
-------------------------------------
auto_increment |mysql的特色,表示该属性是自增的
-------------------------------------
default | 设置属性默认值
-------------------------------------
eg:create table t2(id int primary key, name varchar(5));
2.1、查看表
2.1.1、 desc table_name;
用desc可以查看表的字段名称(Fileld)、类型(Type)、是否为空(Null)、约束条件(Key)、默认值(Default)、备注信息(Extra)
2.1.1、 desc table_name;
用desc可以查看表的字段名称(Fileld)、类型(Type)、是否为空(Null)、约束条件(Key)、默认值(Default)、备注信息(Extra)
2.1.2 show create table table_name;
show create table可以打印创建的表的SQL,
并且显示该表的 存储引擎和字符集编码(截图不方便,这样显示)
show create table可以打印创建的表的SQL,
并且显示该表的 存储引擎和字符集编码(截图不方便,这样显示)
mysql> show create table t2;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------+
| t2 | CREATE TABLE `t2` (
`id` int(11) NOT NULL,
`name` varchar(6) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
+-------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------+
| t2 | CREATE TABLE `t2` (
`id` int(11) NOT NULL,
`name` varchar(6) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
3.1 修改表
在使用的过程中不满足使用情况时,进行修改
3.1.1 修改表名SQL
alter table old_table_name rename [to] new_table_name;
3.1.2、修改表中字段类型SQL:
alter table table_name modify 属性名 数据类型;
eg:alter table t1 id bigint;
3.1.3、修改表中属性名SQL:
alter table table_name change 旧属性名 新属性名 新数据类型;
eg:alter table t1 change id idd int;
3.1.4、增加新的字段SQL:
alter table table_name add 属性名 数据类型 [完整性约束] [first|after 属性名2]
eg:alter table t1 add age int;
在使用的过程中不满足使用情况时,进行修改
3.1.1 修改表名SQL
alter table old_table_name rename [to] new_table_name;
3.1.2、修改表中字段类型SQL:
alter table table_name modify 属性名 数据类型;
eg:alter table t1 id bigint;
3.1.3、修改表中属性名SQL:
alter table table_name change 旧属性名 新属性名 新数据类型;
eg:alter table t1 change id idd int;
3.1.4、增加新的字段SQL:
alter table table_name add 属性名 数据类型 [完整性约束] [first|after 属性名2]
eg:alter table t1 add age int;
显示该表的存储引擎和字符集编码
3.1.5、删除属性SQL:alter table table_name drop 属性名;
eg:alter table t1 drop age2;
3.1.6、修改属性的排列顺序SQL:
alter table table_name modify 属性名1 数据类型 first | after 属性名2;
4. 查询表SQL
SQL基本的结构如下:
select 属性列表 from table_name [where 条件表达式1]
[group by 属性1 [having 条件表达式2]]
[order by 属性2 [asc | desc]]
4.1 带in的子查询
[not] in(元素1,元素2...元素n)
eg:select * from Student where SID in (1,3,5);
[not] in(元素1,元素2...元素n)
eg:select * from Student where SID in (1,3,5);
4.2 带between and 的范围查询
[not] between 取值1 and 取值2
eg:select * from Student where SID between 3 and 7;
[not] between 取值1 and 取值2
eg:select * from Student where SID between 3 and 7;
4.3 带like的模糊查询字符串
[not] like 'abc';
注意:like可以结合通配符使用
%:表示0个或者是任意长度的字符串
_:只能表示单个字符
[not] like 'abc';
注意:like可以结合通配符使用
%:表示0个或者是任意长度的字符串
_:只能表示单个字符
eg:select * from Student where Sname like 'CJ%';
+-----+--------+------+------+
| SID | Sname | Ssex | Sage |
+-----+--------+------+------+
| 5 | CJ1210 | 1 | 11 |
| 7 | CJ1210 | 1 | NULL |
+-----+--------+------+------+
4.4 空值查询
is [not] null;
eg:select * from Student where Sage is not null;
+-----+--------+------+------+
| SID | Sname | Ssex | Sage |
+-----+--------+------+------+
| 5 | CJ1210 | 1 | 11 |
| 7 | CJ1210 | 1 | NULL |
+-----+--------+------+------+
4.4 空值查询
is [not] null;
eg:select * from Student where Sage is not null;
4.5 带and 的多条件查询
条件表达式1 and 条件表达式2 [and ...条件表达式n]
eg:select * from Student where Ssex ='nan' and Sage=20;
条件表达式1 and 条件表达式2 [and ...条件表达式n]
eg:select * from Student where Ssex ='nan' and Sage=20;
4.6 带or的多条件查询
条件表达式1 or 条件表达式2 [or ...条件表达式n]
条件表达式1 or 条件表达式2 [or ...条件表达式n]
4.7 去重复查询
select distinct 属性名
eg:select distinct Sage from Student;
select distinct 属性名
eg:select distinct Sage from Student;
4.8 对结果排序
order by 属性名 [asc| desc];
asc:升序(默认是胜序) desc:降序
eg:select * from Student order by SID asc;
order by 属性名 [asc| desc];
asc:升序(默认是胜序) desc:降序
eg:select * from Student order by SID asc;
4.9 分组查询
group by 属性名[having 条件表达式]
eg:select * from Student group by Ssex having Sage >= 18;
group by 属性名[having 条件表达式]
eg:select * from Student group by Ssex having Sage >= 18;
4.10 limit分页查询
不指定起始位置 limit是记录数
eg:select * from Student limit 3;
不指定起始位置 limit是记录数
eg:select * from Student limit 3;
指定初始位置是limit的起始位置、记录数
eg:select * from Student limit 2,5;
eg:select * from Student limit 2,5;