目录
目录
1.数据库的创建
(1)创建数据库:
create database if not exists <数据库名>; -- 查询是否存在,不存在即创建数据库
(2)查询数据库:
show databases;
(3) 删除数据库:
drop database <数据库名>;
(4)使用数据库:
use <数据库名>;
2.数据表的应用
(1)创建数据表:
create table student(int id primary key,name char(20),sex int not null,age int);
-- primary key 设置id为主键
-- char(20) 表示名字占位长度
-- not null 表示性别不能为空
(2)查询表:
show tables;
(3)修改表名:
rename table <旧表名> to <新表名>;
(4)删除表:
delete from <表名>;
(5)插入数据:
方法1:
格式1--带字段名--指定部分列
inset into 表名(字段名1,字段名2,.....)
values(值1,值2,.....);
方法2:
格式2--不带字段名
inset into 表名
values(值1,值2,.....);
示例:
inset into student values(20240001,'tom',1,18);
-- 1表示性别
(6)修改数据:
UPDATE <表名> set <列名1>=<表达式1> ,<列名2>=<表达式2>... [where 条件];
-- 示例: update members set 联系电话='13802551234',密码='111111' where 姓名='张三';
(7)查询数据:
select * | {字段名1,字段名2,字段名3,....} from <表名>;
-- * 表示查询整表
-- | 表示或
示例:
【例1】从TBL_Bookinfo 表查询所有图书的记录内容
SELECT * from TBL_bookinfo;
【例2】查询TBL_Bookinfo 表中所有图书的BookID,ISBN, BookName
SELECT BoolID,ISBN,BookName from TBL_bookinfo;
(8)模糊查询:
like '李_';
-- _ 表示任意一个字符,李某
like '%网页设计';
-- % 表示任意多个字符,某某某网页设计
示例:
【例】检索出名字第二个字是“文”或“明”的读者信息
SELECT * from TBL_user where UserName like '_文%' or UserName like '_明%';
查询练习:
-- 1.在TBL_User表中检索所有的班级,去除重复值。
select distinct Class from TBL_User;
-- 2.TBL_Bookinfo显示所有书的书名,出版社、出版日期,并按出版日期升序排列;
SELECT BookName,Publisher,PublishDate from TBL_Bookinfo order by PublishDate ASC;
-- 3.从TBL_Bookinfo表中检索1990至2000年出版的图书信息,并按出版日期降序排列。
SELECT * from TBL_Bookinfo where year(PublishDate)in('1990','2000') order by PublishDate DESC;
-- 4.按出版社的降序和出版日期的升序检索TBL_Bookinfo表的记录。
select * from TBL_Bookinfo order by CONVERT(Publisher using gbk) DESC,PublishDate asc;
-- 5.查询最薄的5本图书。
select BookName,PageCount from TBL_Bookinfo order by PageCount ASC limit 5;
-- 6.查询最新的10本书。
select BookName,PublishDate from TBL_Bookinfo order by PublishDate ASC limit 10;
-- 7.查询借阅表中第11-20行记录。
select * from TBL_Borrowinfo limit 10,10;
-- 8.在TBL_User表中检索用户名,去掉重复值,取最前面的5个用户名。
SELECT distinct UserName from TBL_User limit 5;
-- 9.从TBL_ User 表中检索出最前面的3个姓’黄’的用户记录的借书证号,姓名,性别。
SELECT Userid,UserName,sex from TBL_User where UserName like '黄%' order by
CONVERT(UserName using gbk) DESC limit 3;
-- 10.显示每本书书名、作者、出版社、出版日期及至今的年限。
SELECT BookName,Author,Publisher,PublishDate,TIMESTAMPDIFF(year,PublishDate,now()) as 年限 from TBL_Bookinfo;
-- 11.从TBL_Bookinfo 表查询图书的总册数。
SELECT count(*) 图书总数 from TBL_Bookinfo;
3.常用聚合函数
数据库聚合函数概述
数据库聚合函数是用来对表中的数据进行汇总运算的函数,它们能够将多行数据压缩为单一的结果。常见的聚合函数包括 COUNT()
, SUM()
, AVG()
, MAX()
, MIN()
等。
聚合函数的分类和用法
COUNT()
COUNT(*)
:统计表中所有记录的个数。COUNT(列名)
:统计某列中值的个数,包括重复记录。COUNT(DISTINCT 列名)
:统计某列中不同值的个数,不包括重复记录。
示例:
SELECT COUNT(*) FROM table_name; -- 计算表中的总行数
SELECT COUNT(column_name) FROM table_name; -- 计算指定列的非NULL值的数量
SUM()
计算某列值的总和。
示例:
SELECT SUM(column_name) FROM table_name; -- 计算指定列的总和
AVG()
计算某列值的平均值。
示例:
SELECT AVG(column_name) FROM table_name; -- 计算指定列的平均值
MAX()
计算某列值中的最大值。
示例:
SELECT MAX(column_name) FROM table_name; -- 找出指定列的最大值
MIN()
计算某列值中的最小值。
示例:
SELECT MIN(column_name) FROM table_name; -- 找出指定列的最小值
GROUP BY
在使用聚合函数时,经常需要结合GROUP BY
子句来对数据进行分组。
示例:
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; -- 按列分组并计算每组的行数
HAVING
HAVING
子句用于在分组后过滤结果,通常与GROUP BY
一起使用。
示例:
SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING COUNT(*) > 10; -- 显示行数大于10的分组
请注意,以上代码仅为示例,实际使用时应替换table_name
和column_name
为实际的表名和列名。此外,某些数据库可能需要在字符串类型的列上使用特殊的函数来计算最大值或最小值(如MAX()
和MIN()
函数)。在使用时,请参考你所使用的数据库管理系统的官方文档以获取准确的信息。
聚合函数的注意事项
- 聚合函数通常与
SELECT
语句一起使用,可以单独使用也可以与其他函数组合使用。 - 聚合函数可以与
GROUP BY
子句一起使用,用于对结果进行分组统计。 - 在使用聚合函数时,如果没有指定
GROUP BY
子句,则聚合函数会作用于整个结果集;如果指定了GROUP BY
子句,则聚合函数会分别作用于每个分组。 - 除了
COUNT(*)
,其他聚合函数会忽略 NULL 值。
聚合函数的具体应用
- 在统计员工部门编号不重复的记录个数时,可以使用
COUNT(DISTINCT deptno)
。 - 在计算员工平均工资时,可以使用
AVG(salary)
。 - 在找出员工工资最高和最低值时,可以分别使用
MAX(salary)
和MIN(salary)
。
4.数据库备份
数据库备份通常涉及到数据的导出和存储,以便在数据丢失或损坏时能够恢复。对于MySQL数据库,您可以使用mysqldump
命令来进行备份。以下是基本的备份步骤:
- 打开命令行界面。
- 输入备份命令:
mysqldump -u 用户名 -p 密码 数据库名称 > 保存的路径
。例如,如果您想备份名为db1
的数据库到D:\backup\a.sql
,则命令为:mysqldump -u root -proot db1 > D:\backup\a.sql
。 - 执行命令后,系统会提示您输入密码,输入正确的密码后,数据库将被备份到指定的路径。