mysql 可视化界面操作指令
2017-10-14 10:09 晨曦曙光 阅读(3393) 评论(0) 编辑 收藏 举报1.让自增长从新开始
ALTER TABLE users auto_increment =1;//让表中的自增长从新从0开始
2.条件查询
SELECT name from users WHERE id =1;//查询users表中ID为1的数据
3.增加字段
ALTER table users add city char (20);// 在users 表中增加city字段
4.在一个字段前面添加一个字段(在name后面添加一个字段)
ALTER table users add province char (20) AFTER name;
5.增加时间字段
选择datetime类型
6.外键的约束
a.可以明确声明表与表之间的参照关系,是数据库帮我们维护这种关系,
b.如果后序操作破坏这种外键约束,这时候数据库就会阻止这中情况执行。
c.(1.字表中插入一条数据,如果引用字段在父表中不存在,会被阻止。2.删除父表中的某一条记录,如果字表中存在该记录的引用,则删除会被阻止。)
————references 引用(参照)
————子表:引用表(emp 是子表)
————父表:被引用表(dep 是父表)
7.通过创建表加外键
create table dep(//父表
id int primary key auto_increment,
name varchar(30)
);
create table emp(//子表
id int primary key auto_increment,
name varchar(30),
dep_id int ,
foreign key (dep_id)references dep(id)
);
insert into dep values (null,"财务部"),(null,"人事部"),(null,"行政部"),(null,"科技部");
insert into emp values (null,"张三",1),(null,"李四",2),(null,"王五",3),(null,"周六",4),(null,"张全蛋",5);
8.通过修改表加外键
create table emp(
id int primary key auto_increment,
name varchar(30),
dep_id int
);
//添加外键
alter table emp add constraint fk_name foreign key (dep_id)references dep (id);
9.查询外键名称
show create table emp;//emp是子表
10.删除外键
alter table emp drop foreign key (fk_name);
11.关系设计(数据表与数据表)
一对一:教室 & 班级 可以在任意一方保存另一方的主键作为外键。
一对多 : 学生& 班级 在多的一方,设计外键保存另一方的ID
多对多 : 学生& 老师 需要一个第三方关系表来存储两张表的主键,用于表示它们之间的对应关系
12.查询两张表的笛卡尔积
select * from emp,dep;
13.内连接查询
select * from emp, dep where dep.id = emp.dep_id;
select * from emp inner join dep on dep.id =emp.dep_id;
select * from emp inner join dep where dep.id =emp.dep_id;
14.左外连接查询(在内连接的基础上增加上左边表有而右边表没有的记录)
select * from emp left join dep on dep.id = emp.dep_id;
15.右外连接查询(在内连接的基础上增加上右边表有而左边表没有的记录)
select * from emp right join dep on dep.id = emp.dep_id;
16.全外连接查询(内连接以外的)mysql 不支持该语法
select * from emp full join dep on dep.id = emp.dep_id;
17.mysql 全外使用union 操作完成
select * from emp lefe join dep on dep.id = emp.dep_id
union
select * from emp right join dep on dep.id = emp.dep_id;
18.带in关键字的子查询
例:查询存在年龄为20 的员工的部门名称
//如果部门id 在in后面的集合里面,就查询出该id对应的部门名称
//select dep_id from emp where age=20查询出年龄=20的员工部门id的集合
select d.name as '部门名称' from department as d where id in(select dep_id from emp where age=20);
19.带not in关键字的子查询
例:查询不存在年龄为20的员工的部门名称
select d.name as '部门名称' from department as d where id not in(select dep_id from emp where age=20);
20.带exists关键字的子查询
例:查询是否存在年龄小于18的 员工,如果有则查询department表中的所有记录
//如果说括号里面查询出来的结果不为空,就会执行前面的查询,否则不执行。
select * from department where exists (select * from employee where age<18);
21.带any 关键字的子查询
例:查询department表中的id 大于employee 表中所有记录dep_id 至少一个的所有记录
//只有括号查询结果里面有至少一个小于,就要执行前面的查询结果
select * from department where id>any (select dep_id from employee);
22.带all 关键字的子查询
例:查询department 表中的所有id 大于employee 表中的所有记录
mysql> select * from department where id>all(select dep_id from emp);
23.事物:逻辑上的一组操作,要么同时完成,要么同时不完成。
24.自定义事物(提交事物)
start transaction;//开始事物
update bank_account set money=money-100 where name='a';
update bank_account set money=money+100 where name='b';
commit;
//当事物在没有commit(提交)事务里面的sql语句执行成功不会立刻产生效果(这是因为mysql默认的隔离级别为repeatable read),事务提交(commit)后才能对数据产生效果。
25.自定义事物(回滚事物)
start transaction;//开始事物
update bank_account set money=money-100 where name='a';
update bank_account set money=money+100 where name='b';
rollback;
//rollback(回滚),让事物开始后的sql 语句执行效果失效
//事物执行过程中意外中断会默认执行事物的回滚(rollback)操作;
26.事物的四大特性:ACID(数据库自带的功能,除隔离性之外,都不需要我们自己维护)
1.原子性(Atomicity):事物是一组不可分割的单位,要么一起成功要么一起失败。
2.一致性(Consistency):事物前后的数据完整性应该保持一致。(满足所有约束)
3.隔离性(Isolation):多个用户同时操作事物,事物之间互不干扰。
4.持久性(Durability):事务一旦提交,就能对数据永久改变,不会因为中途中断而被影响。(一旦commit;就不能rollback;)
27.四大隔离级别:
1.read uncommitted;不做任何隔离
2.read committed;只能防止胀度。
3.repeatable read;可以防止胀读,不可以重复读,但是不能防止虚读(幻读)。(mysql默认是这个级别)
4.serializable; 数据库运行串行化,所有问题都不会产生,但是性能低。
安全性越高,性能越低:
从安全性:4>3>2>1
从性能:1>2>3>4
对于隔离级别,默认的最好。
28.修改数据库的隔离级别:
1.set tx_isolation='READ-UNCOMMITTED';
2.set tx_isolation='READ-COMMITTED';
3.set tx_isolation='REPEATABLE-READ';
4.set tx_isolation='SERIALIZABLE';
29.查询当前数据库的隔离级别
select @@tx_isolation;
30.胀读:一个事务读取到另一个事务未提交的数据.
31.不可重复读:一个事务多次读取同一条记录,读取到不同结果。(一个事务读取到另一个事务已经提交的数据)
32.幻读(虚度)问题:一个事务多次查询表中的多条数据,由于其他事务增加(删除)造成多次查询的结果不同,的时候有时能出现,有时不能出现。