一、数据类型
MySQL的10种常用数据类型_mysql数据类型-优快云博客
二、数据库操作
1.创建数据库(最好设置字符集)
create database 库名;
create database if not exists 库名 default character set utf8
2.查看数据库
show databases;
3.选中数据库
use 数据库名;
4.删除数据库(很危险,不要随意操作)
drop database 库名;
三、数据表操作
1.创建数据表
create table 表名(列名 类型,列名 类型,列名 类型);
2.查看数据表数据结构
desc 表名;
3.删除表
drop table 表名;
4.增添数据操作
4.1.指定列插入:insert into 表名 (列名,列名,列名....)values(值,值,值.....)
4.2.全插入:insert into 表名 (列名,列名,列名....)values(值,值,值.....)
4.3.多行插入:insert into 表名 (列名,列名,列名....)values(值,值,值.....),(值,值,值.....),(值,值,值.....).....
5.查询数据的操作
5.1.某列查询
select 列名,...from 表名 where 条件;
5.2.全列查询
select * from 表名 where 条件;
5.3.查询字段为表达式(一边查询一边计算,可以进行一些简单的统计操作,他是列和列之间的操作,不是行和行)
select name,chinese+10 from exam_result;(语文成绩全列加10);
5.4取别名
select name as 姓名 form 表名 where 条件;
5.5非空查询
select * from 表名 where 列名 is not null;
5.6.分页查询limit
显示前多少条记录:
select * from 表名 where 条件 limit 条数;
从三开始显示4条:
selec* from 表名 where 条件 limit 3 offset 4;/selec* from 表名 where 条件 limit 3 ,4;
5.7去重查询 distinct
select distinct 列名 from 表名 where 条件;
5.8排序order by(asc 升序,desc 降序,默认是asc)
select * from 表名 where 条件 order by 列名 desc/asc;
注意:
1.没有order by 子句的查询是无序的
2.NULL数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
可对多个字段进行排序,排序优先级随书写顺序
6.修改操作
update 表名 set 列名=值,列名=值,列名=值 where 条件;
7.删除数据
delete from 表名 where 条件;
注意:
1.drop删除了表及内容而delete删除表里的数据,表还在
2.delete和update都是危险操作
3.delete和update都是影响硬盘操作
四、条件操作
1.比较运算符
注:
1. WHERE条件可以使用表达式,但不能使用别名。
2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
2.基础操作and与or
3.范围查询between ... and 与 in
select * from 表名 where 列名between 数字 and 数字
5.模糊查询like
select *from 表名 where 列名 like "孙%"
注意:
1.%匹配任意多个(包括0个)字符
2.-匹配严格一个任意字符
五、数据库约束
1.not null ;指定某一列不能存储空
create table 表名 (列名 类型 not null,列名 类型,...);
2.unique;保证某一列有唯一的值(自动生成索引,从而加快查找)
create table 表名(列名 类型 unique);
3.default:规定没有给指定值的列添加默认值
create table 表名(列名 类型 default);
4.primary key:主键(自动生成索引,从而加快查找)
create table 表名(列名 类型 primary key);
//自增主键
create table 表名(列名 类型 primary key auto_incremment);
补:
添加了自增主键,如果不给主键输入值,则会自动分配
如果是一个分布式的系统,自增主键就没有用了(方法1:时间戳id +主机编号/机房编号)
5.foreign key:保证一个表中的数据匹配另一个表的参照完整性
create table 表名(列名 类型 primary key,列名 类型,foregin key)(列名) )references 表名(列名) ;
6.check:保证列里面的值符合指定条件
create table 表名(性别 类型 primary key,check(性别='男'or 性别='女');
7.修改表的结构
alter table 表名 add 字段名 约束
六、聚合查询
sql中提供了一些”聚合函数“通过聚合函数来完成行与行之间的运算
count | 查询返回的数量 | count(id)/count(*) |
sum | 查询数据的总和,算数运算 | sum(score) |
avg | 查询数据的平均数,算术运算 | avg(score) |
max | 查询数据的最大值,算术运算 | max(score) |
min | 查询数据的最小值,算术运算 | min(score) |
七、分组查询group by
group by最好搭配聚合函数使用
1.条件在分组之前
select 列名,聚合函数(列名) from emp where 条件 group by 列名;
2.条件在分组之后
select 列名,聚合函数(列名) from emp group by 列名 having 条件;
八、联合查询
注意:关联查询可以对关联表使用别名。
1.全外连接
select 列名 from 表名,表名... where 条件;
2.右连接
select 列名... from 表名 right join 表名 on 条件
3.左连接
select 列名... from 表名 left join 表名 on 条件
4.内连接
select 列名... from 表名 inner join 表名 on 条件
on和where的区别:
on 和 where 在 SQL 中都用于设置条件,但它们在连接(join)操作中的作用是不同的。
on:在 join 操作中,on 关键字用于设置连接条件。例如,在你的查询中,on Employees.id=EmployeeUNI.id 是连接 Employees 表和 EmployeeUNI 表的条件,即只有当两个表中的 id 相等时,才会将这两个表的行连接在一起。
where:where 关键字用于过滤结果集,即只返回满足特定条件的行。如果你在查询中使用 where Employees.id=EmployeeUNI.id,那么只有当 Employees 表和 EmployeeUNI 表中的 id 相等时,才会在结果集中返回这些行。
总的来说,on 关键字定义了如何连接两个表,而 where 关键字定义了如何过滤这些连接后的结果。在某些情况下,使用 on 和 where 可能会得到相同的结果,但在其他情况下,结果可能会有所不同,特别是在执行外连接(如 left join 或 right join)时。
- 内连接(inner join)只返回两个表中都有匹配的行。
- 左连接(left join)返回左表(这里是 Employees 表)的所有行,如果右表(这里是 EmployeeUNI 表)中没有匹配的行,则结果集中的对应列将为 NULL。
- where子句返回满足特定条件的行.
5.自连接(行与行之间的计算)
select 列名 from 表名1,表名1 where 条件;
6.子查询
6.1.子查询只返回一行数据
select 列名 from 表名 where 列名=(select 列名 from 表名 where 条件) ;
#where 里面的子查询语句返回的值是一个
6.2.多行子查询返回多个数据(in)
select 列名 from 表名 where 列名 in (select 列名 from 表名 where 条件) ;
#where 里面的子查询语句返回的值是一个