MySQL基础
Posted 寒松,
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;//串行化
以上是关于MySQL基础的主要内容,如果未能解决你的问题,请参考以下文章