MySQL
MySQL数据管理系统
数据库中的不同表负责不同业务的管理
数据库: 是表的集合,是一个大的分类
表: 是一个小的分类
mysql -u root -p 登录mysql的命令
db_name : 代表的数据库的名字
一些常用的mysql命令
登录mysql: mysql -u root -p
1.显示服务器上所有已有的数据库:
show databases
;
2.在服务器中创建自己的数据库
create database;
create database character set utf8;创建的数据库支持中文
3.如何切换到指定的数据库
use db_name;
4.如何删除已有数据库
drop database db_name;
如何在数据库中建立数据表
数据表是一个二维表格(行,列)
一行代表一条数据
每一个列代表的是当前一条数据的字段
tinyint 只接受0和1
double[(几位数,几位小数)]
numeric(长度,几位小数)
date 日期
time 时分秒
datetime 年月日时分秒
vacha(长度)字符
char (长度) 定长字符 固定长度
建表:
create database 库名 character set utf8(建立数据库)
use 库名 (切换到数据库)
create table 表明 (建立表)
drop table 表明 物理删除
show databases 显示数据列表
use db_name 切换数据库
show tables 显示当前数据中的表信息
drop database db_name 物理删除数据库
drop table tb_name 物理删除数据库中的表
建表基本语句:
create table tb_name (字段1 类型,字段2 类型)
primary key 主键:唯一识别一条记录的字段
auto_increment 自增:某个字段不需要手动填写数据,而是通过系统分配的整数(每一条数据的值都是前一条数据的增量)
not null 非空:字段设置为非空时,填写数据时,要求该字段为必填项(如果不设置非空,会自动默认为null)
default 默认值:向表中填写数据时,字段不写入数据时
unique 唯一
primary key 主键
comment'' 备注/字段说明
auto_increment 自增
插入数据:
insert tb_name values() 适用于全记录插入(尾部追加)
注:按表中字段顺序插入数据
insert tb_name(字段1,字段2,···)values('字段1的值','字段2的值',···);
对指定字段进行数据的插入操作,如果是字符类型的数据要用''号包含要查如的数据
修改字段命令
upadate tb_name set 字段1=值,字段2=值 where 条件
1.把表中的要修改的字段,所有的指定字段都给修改了
2.指定要修改的是哪行的字段,只修改指定行的字段
delete语法 删除表中的指定记录
delete from tb_name where 条件
删除掉后,但系统会记住自增量(id设的自增),再添加一条数据的时候,id为3,不是2.
查看全表信息
select * from tb_name
投影
select 字段1,字段2,…… from tb_name
在查询时,将字段别名
带筛选条件的查询
模糊查询
%是通配符,可以代表多个字符
_只代表一个未知字符
两个条件都需满足时
两个条件只需满足任意一个即:
not like 满足的条件是 “不是…”
count是统计函数或者叫聚合函数,作用:统计当前记录的个数
只显示统计的结果,不显示具体的信息
sum求和
avg 求平均值
最大值 max
最小值 min
升序排序 asc(可以省略)
降序排序 desc
第一排序,第二排序
当第一排序出现有部分行字段相同的情况时,第二排序开始执行
group by 分组
先回把指定的字段里面相同的数据划分成一组,然后再进行显示
注意:在分组的时候做其他字段的投影是没意义的
分组可以和聚合函数一起使用
having 分组后的筛选(不分组的时候筛选用where)
两表关联,一定有主从之分,从主表建立一个新的字段以便关联到从表,主表中新建的这个用于关联的字段称为外键。
如何建这个外键?
- 在主表中新建一个字段
- 新建的这个字段应于从表的主键类型相同,并关联到从表的主键
实例:
1.用户向系统输入了用户名和密码,检验该用户是否是系统中存在的用户
- 用户登录后,系统要读取该用户的真实姓名
一次查询,涉及到的数据来自多张表
join 多表联合查询
where放在关联之后
join连接方式
主表 inner join 从表 on 主表.外键 = 从表.主键
另一种关联方法
分步写
子查询
将分步操作合在一起,
子查询中in的用法(包含)
(查询所有女性的用户名)
limit 限制的作用
limit 5 查询显示前5条记录
在子查询中使用limit 外层不能使用 in、all…
从第几条显示到第几条
注:mysql中两个生日日期(年月日)相减时,得到的是年与年之间相减的数值
练习 使用studb数据库