数据库基本内容回顾

第二章 数据库基本命令



一、创建数据库

创建数据库代码:

create database 数据库名;

查看数据库代码:

show create database 数据库名;

使用数据库代码:

use 数据库名;

查看当前使用的数据库:

select database();

二、修改数据库

删除数据库代码:

drop database 数据库名;

查看所有数据库代码:

show database;

三、Linux系统下对数据库进行备份

此为无图形化界面备份,打开终端输入以下命令后回车:

mysql -u数据库用户名 -p数据库密码;

备份数据库代码:

mysqldump -u数据库用户名 -p 需要备份的数据库名 > 备份后文件名.sql;

回复备份数据库代码:

mysql -u数据库用户名 -p 需要回复的数据库名 < 备份文件名.sql;

四、关于表的操作

创建表代码:

create table 表名(
字段名 类型 约束,
字段名 类型 约束
);

--例如:创建一个学生表,设置学号(id)为主键
create table student(
id int unsigned primary key,
name varchar(5)
);

查看表的信息:

show create table 表名;
--查看表结构,包括表的字段名、类型、约束、主键等
desc 表名

如果存在同名表则删除:

drop table if exists 表名;
--删除表
drop table 表名;

在表中插入数据

--插入一行数据
--插入的值和表的字段需一一对应
insert into 表名 values();
--插入多行数据
insert into 表名 values(),()...();

更新表的数据:

update 表名 set 列=值 where 条件;
--update student set age=18 where name=’张三‘;

删除表中数据:

delete from 表名 where 条件;

--逻辑删除: 对于重要的数据,不能轻易执⾏ delete 语句进⾏删除。因为⼀旦删除,数据⽆法恢复,这时可以进⾏逻辑删除。
1、给表添加字段,代表数据是否删除,⼀般起名isdelete,0代表未删除,1代表删除,默认值为0
2、当要删除某条数据时,只需要设置这条数据的isdelete字段为1
3、以后在查询数据时,只查询出isdelete为0的数据
--假删除,但是数据库中还有这个数据
-- 1> 修改要删除的数据的特定字段为删除状态
update students set isdelete=1 where id=4;
-- 2> 查询所有 isdelete 字段为 0 的所有数据
select * from students where isdelete=0;
------------------------------------------------------------------
-- 扩展 2: 其他数据删除⽅法
-- delete from 表名 : 删除所有数据, 但是不重置主键字段的计数
-- truncate table 表名 : 删除所有数据, 并重置主键字段的计数
-- drop table 表名 : 删掉表(字段和数据均不再存在)
delete from students;
truncate table students;
drop table students;

五、查询操作

查询一张表的所有数据:

select * from 表名;

查询一张表的部分字段的数据:

select 字段1,字段2 from 表名;

给字段起别名:

select 字段名 as '别名' from goods;

将⽬标字段内重复出现的数据只保留⼀份显示:

select distinct(字段名) from goods;

六、复杂查询

select * from 表名 where 条件1 and 条件2;
select * from 表名 where not 条件1 and 条件2;
select * from 表名 where 条件1 and not 条件2;

模糊查询l:

--like
--%表示任意多个字符
--_表示一个任意字符
select * from goods where name='蓝%;--表示查询以蓝开头的商品

范围查询:

--between...and...表示在一个范围里
--select * from students where age between 12 and 18;
--in表示不在一个范围
select * from students where addr in('广西','北京','江苏');

判断有些字段名为空或不为空的信息:

--1为空: is null
--2不为空(双重否定表肯定): is not null
--select * from students where phone is null;--手机号为空的学生
--select * from students where phone is not null;--手机号不为空的学生

对信息进行排序:

--order by 排序,asc:升序,desc:降序
select * from students order by age desc, height asc;
--先对年龄进行排序,再对身高进行排序

聚合函数:

select count(*) from students;
--统计总记录数,不带信息数据, 建议使⽤*, 如果使⽤某⼀特定字段, 可能会造成数据总数错误!
--最⾼年龄: max(字段): 查询最⼤值
select max(age) from students;
-- 最低年龄: min(字段): 查询最⼩值
select min(age) from students;
-- 平均年龄: avg(字段): 求平均值
select avg(age) from students;
-- 孙姓学生的总身高: sum(): 求和
select sum(height) from students where name like '孙%';
-- 扩展: 在需求允许的情况下, 可以⼀次性在⼀条SQL语句中, 使⽤所有的聚合函数
select count(*), max(age), min(age), avg(agee) from students;

分组:

--group by:分组
--group by后增加过滤条件时,需要使⽤having关键字 

select 字段1,字段2,聚合函数 from 表名 group by字段1,字段2;
--例如:select company, count(*) from goods group by company;
 -- ⼀般情况, 使⽤哪个字段进⾏分组, 那么只有该字段可以使⽤, 其他字段没有实际意义(只要⼀组数据中的⼀条)
-- 分组操作多和聚合函数配合使⽤

-- 扩充: 分组后条件过滤
-- 说明: group by 后增加过滤条件时, 需要使⽤ having 关键字
-- 注意:
-- 1. group by 和 having ⼀般情况下需要配合使⽤
-- 2. group by 后边不推荐使⽤ where 进⾏条件过滤
-- 3. having 关键字后侧可以使⽤的内容与 where 完全⼀致(⽐较运算符/逻辑运算符/模糊查询/判断空)
-- 4. having 关键字后侧允许使⽤聚合函数
-- where 和 having 的区别:
-- where 是对 from 后⾯指定的表进⾏数据筛选,属于对原始数据的筛选
-- having 是对 group by 的结果进⾏筛选
-- having 后⾯的条件中可以⽤聚合函数,where 后⾯不可以

分页查询:

-- 需求9: 查询当前表当中第5-10⾏的所有数据
-- 分⻚查询: select * from 表名 limit start,count
-- 说明: limit 分⻚; start:起始⾏号; count:数据⾏数
-- 注意: 计算机的计数从 0 开始, 因此 start 默认的第⼀条数据应该为 0,后续数据依次减1
-- 过渡需求: 获取前 5 条数据
select * from goods limit 0, 5;
-- 注意: 如果默认从第⼀条数据开始获取,0 可以省略!
select * from goods limit 5;
-- 需求:
select * from goods limit 4, 6;

-- 扩展 1: 根据公式计算显示某⻚的数据
-- 已知:每⻚显示m条数据,求:显示第n⻚的数据
-- select * from 表名 limit (n-1)*m, m
-- 示例: 每⻚显示 4 条数据, 求展示第 2 ⻚的数据内容
select * from goods limit 0, 4; --1(有数据)
select * from goods limit 4, 4; --2(有数据)
select * from goods limit 8, 4; --3(有数据)
select * from goods limit 12, 4; --4(⼀共 12 条数据, 每⻚显示
4, 没有第 4 ⻚数据)

-- 扩展 2: 分⻚的其他应⽤
-- 需求: 要求查询商品价格最贵的数据信息
select * from goods order by price desc limit 1;
-- 进阶需求: 要求查询商品价格最贵的前三条数据信息
select * from goods order by price desc limit 3;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值