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基础的主要内容,如果未能解决你的问题,请参考以下文章

Mysql——实现按字段部分升序,部分降序的方法

MYSQL 按升序和降序排序

MySQL ORDER BY 两个子句(降序和升序)

MYSQL复杂查询(条件不定查询+按降序/升序分页显示)

如何为mysql中显示的内容显示升序或降序

sql 升序降序排列