MySQL基础

  • Post author:
  • Post category:mysql




mysql 建表约束



主键约束



通过给某个字段添加约束,就可以使该字段不重复且不为空

1、`id` int primary key; 
2、插入语句末尾primary key(id,name);(联合主键只要其相加不等就可以进行插入 )
3、添加主键约束alter table user* add peimary key(id);
4、删除主键约束alter table user* drop peimary key(id); 
5、修改主键约束alter table user* modify id int primary key; 



添加外键约束

ALTER TABLE 需添加外键表名 ADD 键名 FOREIGN KEY (需添加的外键)PEFERMENCES 父表(父表需添加的键)



自增约束

 `id` int primary key auto_increment,序号自增



唯一约束

1、字段值不可以重复
2、alter table user add unique(name);
3、unique(name);
4、nane varchar(32) unique;
5、unique(id,name)两个组合不重复就可以;
6、alter table user modify name varchar(32) unique;
7、删除唯一约束alter table user drop index name;



非空约束

修饰的字段不能为空



设计范式



部分Url错误

jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf8



修改列名

ALTER TABLE 表名 CHANGE 字段名 新字段名 字段属性



查询

1、select * from user;
2、select id,name from user;
3、排除重复select distinct depart from user;



查询区间

1、 select * from 数据表 where 列名 between 60 and 80;查询 列名 值60到80之间的
2、between...and
3、 select * from 数据表 where 列名 >60 and 列名 <80;



查询指定数的记录(in就是或的关系)

select * from 数据表where 列名 in(?,?);



或者查询or

select * from 数据表where 列名='?' or 列名 = '?';



升序、降序

desc降序 --select * from 数据表 order by 列名 desc,
默认是升序asc



以表中一列升序,相同的再取其他列降序

select * from 数据表 order by 列名1 asc, 列名2 desc;



统计数量查询

select count(*) from 数据表 where 列名='?';



查询指定几列的平均数

1、依据列名2 分组 group by 列名2;
2、 select avg(列名1) from 数据表 group by 列名2;
3、select 列名1,avg(列名2),count(*) from 数据表 group by 列名1 having count(列名1)>=? and 列名1 like '?%';

avg(列名) 输出平均



多表查询

 1、select 列名1,列名2,列名3 from 数据表1,数据表2 where 数据表1.列名 = 数据表2.列名;
列名1为两数据表共有列名。

2、select 列名1,列名2,列名3 from 数据表1,数据表2,数据表3 where 数据表1.列名=数据表2.列名 and 数据表3.列名 = 数据表2.列名;



子查询(sql语句内部嵌套sql语句)



union 求并集

sql语句 union sql语句



联合查询



内连接

1、select * from 数据表 inner jion 列名 on 数据表1.列名=数据表2.列名;on后面接条件
2、select * from 数据表 jion 列名 on 数据表1.列名=数据表2.列名



左外连接

1、select * from 数据表 left jion 列名 on 数据表1.列名=数据表2.列名
2、select * from 数据表 outer  left jion 列名 on 数据表1.列名=数据表2.列名
、会把左边查询的数据全部拿出来,右边有则显示出来,没有就为NULL



右外连接

1、select * from 数据表 right jion 列名 on 数据表1.列名=数据表2.列名
2、select * from 数据表 outer  right jion 列名 on 数据表1.列名=数据表2.列名
3、会把右边查询的数据全部拿出来,左边有则显示出来,没有就为NULL



全外连接(full jion)MySQL不支持

由于MySQL不支持全外连接查询,所以之能通过union求并集来查询



事务

原子性:一个最小的不可分割的工作单位,不可再分割;
一致性:其能保证一个业务的完整性,即同时完成或者同时失败;
隔离性:不同事物之间具有隔离性;
持久性:事务一旦结束(commit),就不可以反回(rollback)。


默认自动提交

set autocommit =1; 取消自动提交set autocommit =0,此时可以进行roolback撤回操作,手动提交的输入commit;



动开始事务

1、begin;+sql语句,begin手动开启事务,也是可以执行roolback撤回操作的。

2、start transaction;+sql语句,begin手动开启事务,也是可以执行roolback撤回操作的。

3、手动开启事务同样是输入commit使事务生效。



事务隔离性:

1、read uncommitted;//读未提交的	
2、read conmmited;//读已提交的	
3、repeatable read;//可以重复读	
4、serializable;//串行化



版权声明:本文为weixin_44002772原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。