表中のDQLクエリデータ
単純な問合せ
構文:
- テーブルの列名を[WHERE条件式]
詳細:
- SELECTコマンドは、行または複数行を読み出します。
- すべてのフィールドのデータは、あなたが他のフィールドの代わりにアスタリスク(*)を使用することができ、SELECT文の戻りテーブル
- あなたは、任意の条件が含まれるようにWHERE句を使用することができます。
使用*は、すべての列を示し、
構文:
- 名表SELECT * FROM。
例えば:
クエリの指定する列
複数の列の間に、カラムを指定したデータのクエリは、カンマで区切られました
- テーブル名FROM SELECTフィールド名1、2、フィールド名、フィールド名3、...;
例えば:
エイリアスを使用する利点:新しい名前で表示されたときには、テーブルの構造を変更しません。
構文:
- 1 AS SELECTフィールド名のエイリアスは、エイリアスフィールド名テーブル名FROM 2 ASは...。
例えば:
- 1つのAS SELECTフィールド名の別名、AS ASテーブルのエイリアステーブルからエイリアスフィールド名2 ...。
例えば
クエリ指定する列やデータの非重複の結果
文法
- テーブルとは別のフィールド名を選択します。
例えば:
クエリ結果の計算に関与
- FROMテーブル1プラス固定列名を選択します。
例えば:
文法
- 列1 +列名テーブル名FROM 2を選択します。
例えば:
注意:
- 計算のヌル参加するので、結果はヌルであり、MySQLのステートメントは、(式1、式2)IFNULL機能を提供します。この問題を解決します。式1:必要なフィールドが交換ヌルのフィールド値ならば、nullであるか否かが判断されます。
条件お問い合わせ
クエリ条件の構文
- WHEREフィールド条件テーブル名から名前を選択。
プロセス構文:録画は条件を満たすために戻ります、テーブル内のデータのそれぞれを削除します
演算子
論理演算子
キーワードで
範囲クエリ
例えば:
like 关键字
MySQL 通配符
举例:
排序查询
语法:
- SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];
tips:
- ASC: 升序,默认值
- DESC: 降序
只按某一个字段进行排序,单列排序。
组合排序
组合排序的语法:
- SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 1 [ASC|DESC], 字段名 2 [ASC|DESC];
举例:
聚合函数
五个聚合函数
- max(列名):求这一列的最大值
- min(列名):求这一列的最小值
- avg(列名):求这一列的平均值
- count(列名):统计这一列有多少条记录
- sum(列名):对这一列求总和
- SELECT 聚合函数(列名) FROM 表名;
举例:
解决办法:
- IFNULL(列名,默认值) 如果列名不为空,返回这列的值。如果为 NULL,则返回默认值。
举例:
分组查询
- SELECT 字段 1,字段 2... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
- 当我们使用某个字段分组,在查询的时候也需要将这个字段查询出来,否则看不到数据属于哪组的
举例:
having 与 where 的区别
例如:
分页查询
LIMIT 是限制的意思,所以 LIMIT 的作用就是限制查询记录的条数
语法(MySQL方言)
- SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING 子句][ORDER BY 子句][LIMIT 子句];
- offset:起始行数,从 0 开始计数,如果省略,默认就是 0
- length: 返回的行数
- 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数
举例:
数据库表的约束
约束的作用:
- 对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。
约束种类:
非空约束
非空约束的基本语法格式
- 字段名 字段类型 NOT NULL
创建表时添加约束
语法:
create table 表名(
字段名称 字段类型 NOT NULL, --- 这个字段添加了非空约束
.....
);
举例:
创建表完后,添加非空约束
语法:
- ALTER TABLE 表名 MODIFY 字段名称 字段类型 NOT NULL;
举例:
删除name的非空约束
语法:
- ALTER TABLE stu MODIFY字段名称 字段类型;
举例:
唯一约束
唯一约束的基本语法格式
- 字段名 字段类型 UNIQUE
注意:
- 唯一约束可以有NULL值,但是只能有一条记录为null
在创建表时,添加唯一约束
语法:
CREATE TABLE 表名(
字段名称 字段类型,
字段名称 字段类型,UNIQUE -- 手机号
);
举例:
删除唯一约束
语法:
- ALTER TABLE 表名 DROP INDEX 字段名称;
举例:
在表创建完后,添加唯一约束
只要表中没有相同数据,才能使用这种方式添加唯一约束
语法:
- ALTER TABLE 表名 MODIFY 字段名称 字段类型 UNIQUE;
举例:
主键约束
- 用来唯一标识数据库中的每一条记录
- 非空 not null
- 唯一
在创建表的时候给字段添加主键
- 字段名 字段类型 PRIMARY KEY
举例:
- alter table 表名 drop primary key;
举例:
- ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
举例:
主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值
- AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型)
创建主键,并且添加自动增长
语法:
创建表时指定起始值
语法:
举例:
- ALTER TABLE 表名 AUTO_INCREMENT=起始值;
举例:
删除自动增长
语法:
- ALTER TABLE 表名 MODIFY 字段名称 字段类型;
举例:
小结:
- 主键数在一个表中,只能有一个。不能出现多个主键。主键可以单列,也可以是多列。
- 自增长只能用在主键上
外键约束
- 什么是外键:在从表中与主表主键对应的那一列。
- 主表: 一方,用来约束别人的表
- 从表: 多方,被别人约束的表
新建表时增加外键:
语法:
- [CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
举例:
已有表增加外键:
- ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);
举例:
删除外键
- ALTER TABLE 从表 drop foreign key 外键名称;
举例:
外键的级联
- 在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作
举例:
数据约束小结
数据库的设计
表与表之间的关系
一对一
一对多
- 一对多(1:n) 例如:班级和学生,部门和员工,客户和订单,分类和商品
- 一对多建表原则: 在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
多对多
- 多对多(m:n) 例如:老师和学生,学生和课程,用户和角色
- 多对多关系建表原则: 需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键
数据范式
什么是范式:
三大范式:
1NF
- 数据库表的每一列都是不可分割的原子数据项,不能是集合、数组等非原子数据项。即表中的某个列有多个值时,必须拆分为不同的列。简而言之,第一范式每一列不可再拆分,称为原子性。
总结:每一列都不可再次拆分
示例:
2NF
- 一张表只描述一件事情。
- 表中的每一列都完全依赖于主键
示例:
3NF:
示例:学生信息表
三大范式小结:
数据库备份和还原
备份格式: DOS 下,未登录的时候。这是一个可执行文件 exe,在 bin 文件夹
语法:
- mysqldump -u 用户名 -p 密码 数据库 > 文件的路径
举例:
- USE 数据库;
- SOURCE 导入文件的路径;
步骤
- 删除 day21 数据库中的所有表
- 登录 MySQL
- 选中数据库
- 使用 SOURCE 命令还原数据
- 查看还原结果
图形化界面备份与还原
- 选中数据库,右键 ”备份/导出”
- 指定导出路径,保存成.sql 文件即可。
- 删除数据库
- 数据库列表区域右键“执行 SQL 脚本”, 指定要执行的 SQL 文件,执行即可