对数据库操作
创建数据库
1.使用用默认的数据库与校对
create database 数据库名;
2.指定数据库字符
create database 数据库名 character set utf8
3.查看当前数据库服务器下的所有数据库
show databases;
4.查看创建数据库的语句
show create database 数据库名;
5.删除数据库
drop database 数据库名;
6.切换数据库
USE 数据库名;
7.查看当前所使用的数据库
select database();
***对数据库表结构操作
1.int 整形
2.char 字符串
3.varchar 字符串
4.timestamp yyyy-MM:dd hh:mm:ss
约束
1.主键约束
primary key primary key(id);
2.唯一约束
unique
3.非空约束
not null
4.默认值约束
default 想要默认的值
5.自动增涨
auto_increment
对表操作
创建表
1.create table(
字段一 类型,
字段二 类型,
....
)character set utf8;
查看表
1.查看表结构
desc 表名;
2.查看当前数据库下的所有表
show tables;
3.查看表的字符编码集,也就是表的创建语句
show create table 表名;
修改表(基本不用)
1.添加列操作
alter table 表名 add 列名 类型;
2.修改列的类型
alter table 表名 modify 列名 类型;
3.删除列
alter table 表名 drop 列明;
4.修改列名称
alter table 表名 change 旧列名 新列明 类型;
删除表(基本不用)
1`.drop table 表名;`
2.truncate table 表名;
区别:前者有条件,自增主键补初始化
后者不可回退,速度快,相当于重新建立了空表(初始化表)
对数据库单表进行操作
insert 插入操作
1.插入所有列值
insert into 表名(列名1,列名2...)values(列值1,列值2....);
2.插入部分列值
insert into 表名(列名1,列名3...)values(列值1,列值3....);
3.不指定列名
insert into 表名 values(列值1,列值2...);
update更新操作
1.update语句修改表中数据
update 表名称 set 列名称=新值 where 列名称=某值;
delete删除操作
1.删除某行数据
delete from 表名 where 列名称=值;
2.删除所有行
delete from 表名;
delete * from 表名;
3.删除表中的数据
truncate table 表名;
```
关于delete 与truncate的区别
```
delete是一行一行删除 truncate是将表结构销毁,在重新创建表结构.
如果数据比较多,truncate的性能高。
delete是受事务控制. 可以回滚数据.
truncate是不受事务控制. 不能回滚.
select基本查询
1.查询所有的列(所有数据)
select * from 表名称
2.查询指定列
select 字段1,字段2,...(列名称) from 表名;
3.去掉重复记录
select distinct 字段 from 表名;
4.between…and
相当于>= and <=
between 30 and 40;
5. in
select* from 表名 where price in(65,76,80);
6.模糊查询
通配符使用
查询出商品的名称中包含java的商品信息。
select*from 表名 where 列名 like "%java%";
查询出书名是两个字的商品信息
select*from 表名 where 列名 like "__";
7.null 值操作
is null 判断为空
is not null 判断不为空
order by 排序
1.select 列名 from 表名称 where 条件 order by 列名 (默认是升序)
asc 升序
desc 降序
聚合函数ifnull
1.count:统计指定列不为NULL的记录行数;
select count(*)from 表名 where 条件语句;
2.sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
select sum (列名 或者列之间的运算) from 表名称 where 条件语句;
3.max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
select max(列名) from 表名称 where 条件语句;
4.min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
select min (列名) from 表名称 where 条件语句;
5.avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
select avg (列名) from 表名称;
分组操作
1.group by 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
2. select (展示)
id,name,sum(pnum)
from (来自哪里)
products 表名
where (分组前的条件)
id<9
group by(分组)
category
having(分组后的条件)
order by (排序)
sum(pnum) desc(依据pnum和的降序排列)
limit 2 分页或者
(或者)limit 0,2
*****Having与where的区别*****
```
1.having是在分组后对数据进行过滤.
2.where是在分组前对数据进行过滤
3.having后面可以使用分组函数(统计函数)
4.where后面不可以使用分组函数。
******多表设计******
1.一对一----一般不用
2.一对多----在进行数据设计时,如果存在一对多的关系,要求在多的一方加入一个外键,用来描述它来自于一方的主键
3.多对多----多对多的关系进行设计时,为了描述关系,会产生一个中间的关系表,来描述关系
********外键约束********
1.概念模型在数据库中就对应数据表,那么表与表之间的关系也包括:一对一,一对多,多对多。而表与表之间关系是 通过外键来维护的。
2.将两张表联系在一块 让表和表发生关系
3.外键约束特性如下:
外键必须是另一表或自身表的主键的值;
外键可以重复;
外键可以为空;
一张表中可以有多个外键。
******多表数据关联操作******
**交叉连接**
1.selectfrom A表名 cross join B表名;
select from A表名,B表名;
2.实现原理时 笛卡尔积
--------------------------------------------------------------------------------------------------------
****内连接****
1.显式内连接
Select * from A表名 inner join B表名 on (连接条件[外键字段名=另一个表的主键字段])
2.隐式内连接语法
Select * from A表名,B表名 where 条件
select * from orders A ,customer B where A.customer_id=B.id;
--------------------------------------------------------------------------------------------------------
******外连接******
1.左外连接
Select * from A表名 left join B表名 on (A表名.外键字段=B表名.主键字段)
2.右外连接
Select * from A表名 right join B表名 on (连接条件)
******联合查询******
1.Select 字段 from A表名 where 条件
Union
Select 字段 from B表名 where 条件
可以自动消除重复记录
子查询
1. Select * from A表名 where
列名 in (
Select 列名 from 表名 where 条件
)
补充的函数
1.now()----新建一列now()---列里的额内容是此时时间
select now()from 表名;
2.MD5()----加密
给添加的密码加密
insert into 表名 (列名,PASSWORD) values ('zhangsan' ,MD5('123') ) ;