目录
一,SQL编程语言
通过SQL来完成对数据库的增删改查
数据库操作:
1,查看所有的数据库:
show databases;
2,创建数据库 :
create database if not exits 数据库名 charset utf8; (防止中文乱码尽量在创建数据库的时候就设置好字符集) if not exits 可以防止 出现两个相同的数据库
3,使用数据库 :
use 数据库名;
4,删除数据库 :
drop database 数据库名称;(这个操作会有点危险,尽量不要使用)
数据表操作 (前提是需要选中数据库) :
1,查看数据表 :
show tables;
2,创建数据表 :
create table 数据表名 (列名 类型,列名,类型....)
那么数据表中的类型都有哪些呢? 举例几个常见的:
数据表类型
int 整数类型
varchar(N):表示字符串;
double(M,N):M:有效数字;N:小数点后的位数
decimal:更精确的表示小数
datetime:日期类型
尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其 如此,还不如设计时,将int类型提升为bigint类型。
3,查看指定表结构
desc 表名;
4,删除表
drop table 表名;
MySQL表的增删改查
新增/插入数据
insert into 数据表名 values(值,值) 这些值要与之前创建数据表的时候,设置值的类型相匹配
删除数据
drop from 表名 where 条件
修改数据
update 表名 set 列名 = 值(改后) where 列名 = 值 (改前);
查询数据
1,全列查询 select * from 表名;
2,指定列查询 select 列名 ,列名 from 表名;
3表达式查询 select 表达式 from 表名
4,带别名的查询 select 表达式 as 别名from 表名;
5,去重查询select distinct 列名/表达式 from 表名
条件表达式:
逻辑表达式:
6 排序查询 select 列名 from 表名 order by 列名[desc] ,列名[desc];
desc :是降序
asc : 是升序 如果不写就默认升序排序
7,条件查询: select 列名 from 表名 where 条件;
8,模糊查询: select 列名 from 表名 where 列名 like 条件
9,NULL查询:
10,分页查询
select * from 表名 LIMIT 数据条数
select * from 表名 limit 从哪里开始 offset 到哪里结束
数据库约束:
约束,就是数据库针对里面 的数据能写啥,给出的一组"检验规则"
PRIMERY KEY
主键
自增主键
PRIMERY KEY AUTO INCREMENT
FOREIGN KEY
两张表进行关联
两张表
student class
此时就要求student表中的每个记录的classId得在class表的classId中存在
student受到class的约束,就把class叫做student的父表(parent),student就是class的子表(child)
在学生表插入班级的时候,mysql会先拿着这个记录的classId去class表中看有没有,如果有才能完成后续的插入,如果没有插入失败
外键
子表中的记录,需要中存在
针对子表进行插入数据/修改数据.都需要去父表中查询一次
针对父表不能删除;针对子表不能添加和更改
表的设计:
一对一
一对多
多对多
没关系
聚合查询:
把查询过程中,表和行和行之间进行一定的运算
有时候需要分组聚合
group by
用来分组查询
指定一个类就会把列里面值相同的分到同一个组中
select指定的列要么带有聚合函数的,要么就是带有指定的group by的列,不能指定一个非聚合非group by的列
分组的时候,可以指定条件是筛选
1,分组前,筛选,使用where条件
select 列名 from 表名 where 条件 group by 列名;
2,分组后筛选使用having条件
select 列名 from 表名 group by having 条件