記事のディレクトリ
データベース学習の2日目
今日のコンテンツ
DML操作テーブルのデータ
1レコードを挿入
- すべてのフィールドを挿入します
insert into 表名 (字段名1,字段名2,字段名3.....)values(值1,值2,值3.....);
- フィールド名を書くこともできません
insert into 表名 values(值1,值2,值3.。。);
- いくつかのデータを挿入します
insert into 表名(字段名1,字段名2,。。。)values (值1,值2,。。。);
データが追加されていないフィールドはnullを使用することに注意してください
文字タイプと日付タイプのデータを挿入するときは、二重引用符または一重引用符を追加する必要があります
2テーブルレコードを更新します
update 表名,set 列名=值[where 条件表达式];如:UPDATE table1 SET NAME="yyy";
このとき、条件を追加しないと、この列のすべてのフィールドが変更されます。
3テーブルレコードを削除します
delete from 表名 [where 条件表达式];如delete from table1 where name=yyy;
where句が指定されていない場合、すべてのレコードが削除されるため、危険な移動であり、通常、この方法の使用はお勧めしません。効率が非常に低く、ステートメントを1つずつ削除します。通常、truncate table 表名;
このステートメントは、テーブルを直接削除してから、まったく同じ構造のテーブルを作成するために使用されます。
4つのDQLクエリテーブルレコード
簡単なクエリ
1.すべての列をクエリしますselect * from 表名;
2.指定したフィールドの列のデータをクエリし、複数のデータをコンマで区切りますselect 字段名1,字段名2,...from 表名;
クエリする列のエイリアスを指定します
select 字段名1 as 别名1,字段名2 as 别名2... from 表名 as 表别名;
列とテーブルの両方に、クエリを簡素化するために使用できるエイリアスを含めることができます
重複する値をクリアする
- 指定された列をクエリし、重複するフィールドがないことを確認します
select distinct 字段名 from 表名;
クエリ結果は計算に参加します
- データの特定の列と固定値の計算
select 列名+固定值 from 表名;
- データの列と他の列データが計算に参加します
select 列名1+列名2 from 表名;
- ここでの計算は数値型でなければなりません
条件付きクエリ
- 条件付きクエリ構文:
select 字段名 from 表名 where 条件;
そのプロセスは、テーブル内のすべてのデータを取り出し、条件が満たされた場合は戻り、条件が満たされていない場合は返しません。 - オペレーター
- 論理演算子
ファジークエリのワイルドカードについて、ここで説明します。_は
文字を表し、%は0以上です。
クエリの並べ替え
-
クエリの並べ替え
*構文:orderby句
*order by 排序字段1 排序方式1 , 排序字段2 排序方式2...
* 排序方式: * ASC:升序,默认的。 * DESC:降序。 * 注意: * 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。
集計関数
全体としてデータの列を取得し、垂直方向の計算を実行します。
- count:数を数え
ます1.通常、空でない列を選択します:主キー
2. count(*)
2。max:最大値を計算します
3. min:最小値を計算します
4. sum:計算し
ます5. avg:計算します平均
注意!集計関数の計算では、nullのフィールドが自動的に除外されます
解決策:1。ifnullステートメントを使用して判断します。idselect count(ifnull(id,0)) from student;
値がnullの場合は、デフォルト値0を指定します
。2。計算用に空でない列を含まない列を選択します。
グループクエリ
- 構文:group bygroupフィールド;
2。注:
1.グループ化後にクエリされるフィールド:グループ化フィールド、集計関数例:現時点ではSELECT sex , AVG(math) FROM student GROUP BY sex;
、性別と集計関数の後にselectが続くことを除いて、他に意味のあるものはありません。
2.どこと持っているの違いは?
(1)グループ化の前に定義されている場所。条件が満たされない場合、グループ化に参加しません。グループ化後の持ちは制限されます。結果が満たされない場合は照会されません。
(2)ここ以降は集計関数を追跡できず、集計関数があると判断できます。
包括的使用:SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
エイリアスを使用して以下を簡素化することもできます。SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;
ページングクエリ
-
構文:limitで始まるインデックス、ページあたりのクエリ数;
2。式:開始インデックス=(現在のページ番号-1)*各ページに表示されるアイテムの数(非常に重要です!)背面は各ページに表示するデータの量であり、前面は最初のページで送信する必要があるデータの計算です-各ページに
は3つのレコードが表示されますSELECT * FROM student LIMIT 0,3; -- 第1页 SELECT * FROM student LIMIT 3,3; -- 第2页 SELECT * FROM student LIMIT 6,3; -- 第3页 3. limit 是一个MySQL"方言",别的不是这么用的!
制約
概念:データの正確性、有効性、および完全性を確保するために、テーブル内のデータを制限します。
-
分類:
1。主キー制約:主キー
2.空でない制約:null以外
3.一意性制約:一意
4.外部キー制約:外部キー -
空でない制約:nullではなく、値をnullにすることはできません
1.テーブルを作成するときに制約を追加しますCREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name为非空 );
-
テーブルを作成した後、null以外の制約を追加します:(
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
この時点で、この制約を追加する前に、列にnullデータがないことを確認してください)
` -
名前の空でない制約を削除します。
ALTER TABLE stu MODIFY NAME VARCHAR(20);
-
一意性制約:一意性、値を繰り返すことはできません
1.テーブルを作成するときに、一意性制約を追加しますCREATE TABLE stu(id INT,phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束)
mysqlでは、一意性制約によって制限された列の値に複数のnullが含まれる可能性があることに注意してくださいつまり、mysqlの複数のnullは繰り返しを意味するのではなく、mysqlはこの値を不確実であると見なします
-
一意性制約を削除します。
ALTER TABLE stu DROP INDEX phone_number;
-
テーブルを作成した後、一意の制約を追加します。
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
-