MySQL 整理笔记
MySQL是一个数据管理系统
数据库: 是表的集合,是一个大的分类
表 : 是一个小的分类
一些常用的mysql建立数据库的命令:
登录命令: mysql: mysql -u root -p
注:db_name 代表数据库的名字。
1.显示服务器上所有已有的数据库:
show databases ;
2.在服务器中创建自己的数据库:
create database;
create database character set utf8;创建的数据库支持中文
3.如何切换到指定的数据库:
use db_name;
4.如何删除已有数据库:
drop database db_name;
如何在数据库中建立数据表?
数据表是一个二维表格(行,列),一行代表一条数据,每一个列代表的是当前一条数据的字段。
建表的基本语法: create table tb_name(字段1 类型,字段2 类型);
注:tb_name 代表数据表的名字。
主键: 唯一的识别一条记录的字段,是不重复的
自增: 某个字段不需要手动填写数据,而是通过系统分配的整数(每一条数据分配的值都是 前一条数据的增量)
非空: 字段设置为非空属性时,填写数据时要求该字段为必填项
默认值:向表中填写数据时,字段不写入数据时,会默认填充值
unique key 唯一的
primary key 主键
not null 不为空
auto_increment 自增
default 2 默认值为2
comment '' 字段说明
查看表内信息:select * from 表名
插入数据命令:
方法1: insert tb_name values() --适用于全记录插入
注:按表中字段顺序插入数据
方法2: insert tb_name (字段1,字段2,……) values(‘字段1的值’,‘字段2的值’,……);
注:对指定的字段进行数据的插入操作,如果是字符类型的数据要用’’号包含要插入的数据
修改字段命令:upadate tb_name set 字段1=值,字段2=值 where 条件
1.把表中的要修改的字段,所有的指定字段都给修改了
2.指定要修改的是哪行的字段,只修改指定行的字段
delete语法: 删除表中的指定记录
delete from tb_name where 条件
查看全表信息:
select * from tb_name
投影:
select 字段1,字段2,…… from tb_name
在查询时,将字段别名:
select 字段名1 '名字1',字段名2'名字2',......;
带筛选条件查询:
select 字段名1,字段名2,...... from tb_name where 字段='条件';
模糊查询:
%是通配符,可以代表多个字符 _只代表一个未知字符
select 字段名1,字段名2,...... from tb_name where 字段 like '条件%';
select 字段名1,字段名2,...... from tb_name where 字段 like '%条件%';
select 字段名1,字段名2,...... from tb_name where 字段='条件_';
两个条件都需满足时:
select 字段名1,字段名2,...... from tb_name where 字段 like '条件%' and 字段 = '条件';
两个条件只需满足任意一个即:
select 字段名1,字段名2,...... from tb_name where 字段 like '条件%' or 字段 = '条件';
not like 满足的条件是 “不是…”:
select 字段名1,字段名2,...... from tb_name where 字段 not like '条件%';
聚合函数:
1.count 函数
统计查询记录的个数(只显示统计的结果,不显示具体的信息)。
select count(*) from tb_name ;
2.sum 函数 求和
select sum(字段名) from tb_name ;
3.avg 函数 求平均值
select avg(字段名) from tb_name ;
4.max 函数 最大值
select max(字段名) from tb_name ;
5.min 函数 最小值
select min(字段名) from tb_name ;
升序排序 (asc 可以省略)
select * from tb_name order by 字段名 asc;
降序排序
select * from tb_name order by 字段名 desc ;
第一排序,第二排序
当第一排序出现有部分行字段相同的情况时,第二排序开始执行
select * from tb_name order by 字段名1,字段名2 desc ;
group by 分组
先把指定的字段里面相同的数据划分成一组,然后再进行显示
注意:在分组的时候做其他字段的投影是没意义的
select 字段名 from tb_name group by 字段名;
分组可以和聚合函数一起使用
select 字段名,count(*) from tb_name group by 字段名;
having 分组后的筛选(不分组的时候筛选用where)
select 字段名 from tb_name group by 字段名 having 条件;
两表关联,一定有主从之分,从主表建立一个新的字段以便关联到从表,主表中新建的这个用于关联的字段称为外键
如何建这个外键?
1.在主表中新建一个字段
2.新建的这个字段应于从表的主键类型相同,并关联到从表的主键
join 连接方式:
主表 inner join 从表 on 主表.外键 = 从表.主键
子查询
select * from tb_name where 字段 = (select 字段名 from tb_name2 where 字段2='条件');
子查询中in的用法(包含)
select * from tb_name where 字段 in (select 字段名 from tb_name2 where 字段2='条件');
limit限制的作用
select * from tb_name limit 5;//显示前5条记录