数据库基础命令

93 阅读7分钟

数据库简介及常用命令

数据库;简而言之就是存储数据的仓库。

特点; 1.长期存储数据 2.对于数据进行有组织的管理,体现,通过操作指定语言完成增,删,改,查

数据库分类/按照数据存储方式不同

​ 关系型数据库 ​ 以二维表的形式进行数据的存储 ​ mysql ,sql sever ,Oracle ​ 非关系型数据库 ​ 键值对;redis ​ mangoDB ;文档, ​ Hbase :(大数据存储) 一个结构化数据的分布存储系统

SQL语句

​ (结构化查询语言)使用sql语句进行对数据库的操作 ​ 对数据库的操作 ​ 查询:select ;select * from 表名; ​ 新增:instrt ; insert into students(name) value ('老夫子2');

​ insert into students(name) value ('老夫子3');

​ 修改;update ; update 表名 set 字段名1=值1,字段名2=值2... where 条件 ​ 删除;delete :delete from 表名 where 条件

数据类型;

​ 整形;int 字符串;varchar 小数;decimal 事件日期;datetime

数据约束

​ 数据约束主要是指对数据库中数据进行限制,以确保数据的正确性、有效性、一致性。 ​ 默认值约束:当不填写时使用默认值,填写时使用内容 ​ 非空;此字段不允许填写空值 ​ 说明;null (数据为空) ​ 说明;看起来很空,其实是空字符 ​ 主键;提高数据查询速度 ​ 1.唯一性;主键值必须是唯一的,不能重复 ​ 2.非空性;主键不能为空 ​ 3.不变性;主键使用了,不可更改 ​ 4.单一性;一张数据表,仅可以设置一个主键 ​ 唯一性:此阶段的值不允许重复 ​ 特点:一个表中可以设置多个字段的值具有唯一性 ​ 外键:维护两个表之间的依赖关系

常见数据库操作命令

​ 查看所有数据库:show database; ​ 使用数据库;use 数据库名; ​ 查看当前使用数据库;select database(); ​ 创建数据库;create database 数据库名 charset=utf8; ​ 删除数据库;drop database 数据库名 ​ 查看当前数据库所有的表;show tables; ​ 查看表结构;desc 表名; ​ 删除数据表;drop table 表名 ​ drop table if exists 表名 ​ 简单查询;select * from; ​ 添加一行数据;insert ​ insert into 表名 values(...) ​ 例1: insert into students values(0, '亚瑟', 22, 177.56) ​ insert into 表名 (字段1, 字段2, …) value(值1, 值2, …) ​ insert into students (name) values ('老夫子') ​ 添加多行数据 ​ 方式一: 写多条insert语句,多条语句之间用英文分号分隔 ​ insert into students values(0,'亚瑟2',23,167.56) ​ 方式二: 通过一条insert语句插入多条数据,数据间用逗号分隔 ​ insert into 表名(字段名1,...) value(值1,...),(值1,...)... ​ insert into students(name) value ('老夫子5'),('老夫子6') ​ 修改数据;update ​ 语法;update 表名 set 字段名1=值1,字段名2=值2...where 条件 ​ update students set name='狄仁杰', age=20 where id=5; ​ 删除数据;truncate ,drop, delect ​ truncate table 表名 ​ runcate删除数据时,表结构会保留,自增长字段 ​ 从1开始。执行效率低于drop命令。 ​ drop table 表名 ​ 如果想删除表,建议使用drop,且删除数据效率最高 ​ delect table 表名 ​ 1、delete可以通过where子句删除部分记录。 ​ 2、delete删除所有数据时,自增长字段不会从1开始。

条件查询

条件查询(比较运算符)

image-20230914153258518转存失败,建议直接上传图片文件

image-20230914153258518.png 例1:查询小乔的年龄

select age from students where name='小乔'

例2:查询20岁以下的学生

select * from students where age<20

例3:查询家乡不在北京的学生

select * from students where hometown!='北京'

比较运算符 符号: 大于 小于 等于 大于等于 小于等于 不等于 语法格式: 表名 where 字段名称 比较运算符 预期数据 例子 例1:查询小乔的年龄 select age from students where name='小乔 例2:查询20岁以下的学生 select * from students where age<20

条件查询(逻辑运算符)

image-20230914153434976转存失败,建议直接上传图片文件

image-20230914153434976.png 逻辑运算符 符号: and or not 语法格式: and,or 表名 where 条件1 and/or 条件2 not 表名 where not 条件

条件查询(模糊查询)

image-20230914153553335转存失败,建议直接上传图片文件

image-20230914153553335.png 模糊查询 关键字 like % _ 语法格式 表名 where 字段名称 like '匹配符号,指定匹配内容' 例子 查询姓孙的学生 select * from students where name like‘孙’; 查询姓名以‘乔’结尾的学生 select * from students where name like '%乔'

条件查询(范围查询)

image-20230914153758231转存失败,建议直接上传图片文件

image-20230914153758231.png 范围查询 关键字 1.in:非连续范围 例:查询家乡是北京或上海或广东的学生 select * from students where hometown in('北京','上海','广东') 2.between...and..:连续范围 例:查询年龄为18至20的学生 select * from students where age between 18 and 20 语法格式: in:表名 where 字段 in (....非连续范围) between...and..:表名 where 字段 between 开始范围 and 结束范围

条件查询(非空判断)

image-20230914153903179转存失败,建议直接上传图片文件

image-20230914153903179.png 非空判断 为空 字段 is null 例:查询没有填写身份证的学生 select * from students where card is null 非空 字段 is not null 例:查询填写了身份证的学生 select * from students where card is not null 空字符串 字段 = ''

排序

image-20230914154010699转存失败,建议直接上传图片文件

image-20230914154010699.png

​ 语法格式 ​ select * from 表名 order by 字段名1 asc|desc, 字段名2 asc|desc,.. ​ 说明 ​ 默认按照列值从小到大排列 ​ asc从小到大排列,即升序 ​ desc从大到小排序,即降序 ​ 例子 ​ 查询所有学生信息,按年龄从小到大排序 select * from students order by age

查询所有学生信息,按年龄从大到小排序,年龄相同时,再按学号从小到大排序

select * from students order by age desc ,studentno asc;

聚合函数

image-20230914154233820转存失败,建议直接上传图片文件

image-20230914154233820.png 例1:查询学生总数

select count(*) from students;

例2:查询女生的最大年龄

select max(age) from students where sex='女';

例:查询1班的最小年龄

select min(age) from students WHERE class = '1班';

示例:查询北京学生的年龄总和

select sum(age) from students where hometown='北京';

例:查询女生的平均年龄

select avg(age) from students where sex='女‘

分组

分组查询

image-20230914154333218转存失败,建议直接上传图片文件

image-20230914154333218.png select 字段1,字段2,聚合函数... from 表名 group by 字段1,字段2...

-- 例1:查询各种性别的人数

select sex,count(*) from students group by sex;

-- 例2:查询各种性别年龄最大的

select sex,max(age) from students group by sex;

-- 例3:查询各个班级的人数

select class,count(*) from students group by class;

-- 例4:查询各个班级中不同性别的人数

select class,sex,count(*) from students group by class,sex;

分组筛选

image-20230914154526979转存失败,建议直接上传图片文件

image-20230914154526979.png

分页

image-20230914154629487转存失败,建议直接上传图片文件

image-20230914154629487.png

连接查询

image-20230914154736464转存失败,建议直接上传图片文件

image-20230914154736464.png 内连接: 连接两个表时,连接的是两个表中都存在的数据。(取交集)

左连接: 连接两个表时,连接的是两个表匹配到的数据加左表特有的数据,对于右表中不存在的 数据,用null来填充

右连接: 连接两个表时,连接的是两个表匹配到的数据加右表特有的数据,对于左表中不存在的数据, 用null来填充

image-20230914154859442转存失败,建议直接上传图片文件

image-20230914154859442.png 例1:查询学生信息及学生的成绩

方式一: Select * from students stu inner join scores sc on stu.studentNo = sc.studentNo

方式二:select * from students stu, scores sc where stu.studentNo = sc.studentNo

例2:查询课程信息及课程的成绩

select * from courses cs inner join scores sc on cs.courseNo = sc.courseNo

例3:查询王昭君的成绩,要求显示姓名、课程号、成绩

select stu.name, sc.courseNo, sc.score from students stu

inner join scores sc on stu.studentNo = sc.studentNo where stu.name = '王昭君'

image-20230914154935275转存失败,建议直接上传图片文件

image-20230914154935275.png image-20230914154951169转存失败,建议直接上传图片文件

image-20230914154951169.png

自关联

image-20230914155110559转存失败,建议直接上传图片文件

image-20230914155110559.png

子查询

image-20230914155150765转存失败,建议直接上传图片文件

image-20230914155150765.png 例1:查询王昭君的成绩,要求显示成绩(标量子查询)

select score from scores where studentNo = (select studentNo from students where name = '王昭君 ')

例2:查询18岁的学生的成绩,要求显示成绩(列子查询)

select score from scores where studentNo in (select studentNo from students where age=18)

例3:查询和王昭君同班、同龄的学生信息(行子查询)

select * from students where (class,age)=(select class,age from students where name='王昭君')