查询方式:
普通查询
Select 列名
From 表明
Where 条件
Ground by 分组
Having 分组条件(与ground by 连用)
Order by 排序(列名) 默认:升序 额外添加desc 表示降序
Limit n数字(只显示n条记录 从第一条开始) (n,m)从n开始 ,显示m条记录
关联查询:多个表拼接到一起 两个表之间通过外键来实现
关联条件:主键=外键
主键(primary key +字段)区分不同的记录,每张表都要有一个主键,值唯一
外键 另一个表中的主键
两种连接方式
1. 内联接 for 表一名 inner join 表一名 on 关联条件
2. 左(右)外连接 for 表一名 left(right) join 表二名 on 关联条件
子查询
Select *
from emp
where 条件(select XX from XX)
需要的位置都可以放 写在(),()的查询规则与外部一样。
创建数据库与表
3个关键字
Create(创建) drop(删除) alter(修改)
创建数据库:create datebase 数据库名 character set utf8;
character set utf8 设置字符集
创建表名:create table 表名 (
列名1 类型 [约束],
列名2 类型 [约束],
);
类型
整数:int,integer (在MySQL中都是可以使用的)
定点数:decimal (与double精度范围一样) 可改变值得大小和精度
字符串类型:定长 char 不定长varchar
日期:日期时间 datetime 日期 date
字符串类型:定长 char 不定长varchar
日期:日期时间 datetime 日期 date
其他:blob,text
约束:
主键:primary key 一般情况下主键用MySQL自增:auto_increment
唯一约束 unique
不为空约束 not null
外键约束:foreign key
插入数据:insert into 表名(列名1….)values (列名1值…)
删除数据:delete from 表名 where 条件
如果不输入条件 ,会删除表中的全部数据
外键的含义:
1. 外键的值一定是已存在的,否则字表中的记录不能添加
2. 如果子表中有数据,不能删除父表中的数据。比如:文件夹中的文件被打开,文件夹就不能被删除。
3. 级联删除:on delete cascade,可以直接删除,但相应父表中的记录也会别删除
实际项目中一般不用级联删除
修改表中的数据
Alter table
Add 列名 数据类型 约束 -添加
Moddify 列名 新类型(修改) 新约束 -修改列名类型,约束
Change 列名 新列名 -修改列名
Drop 列名 -删除列名
Add constrant 外键名 foreign key (外键字段) references(主键字段) -创建外键
Drop comstrant 外键字段 删除外键
面试题
1.主键,外键,超键,候选键
主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
外键:在一个表中存在的另一个表的主键称此表的外键
超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。
候选键:是最小超键,即没有冗余元素的超键。
3. 数据库事务的四个特性
数据库事务transanction正确执行的四个基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。
原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。