当前位置: 首页 > news >正文

数据库基础知识1

一、数据类型
1.字符类型
char(n) 定长为1-255 不够补空格
varchar(n) 可变 65536 不够不补空格
text 变长长文本,无显式长度限制用 char_length()
nchar(n) 定长Unicode字符
nvarchar(n) 变长Unicode字符
2.整数类型
tinyint占用 1 字节
int占用 4 字节
bigint占用 8 字节
3.精确小数类型
numeric(p,s):p 表示总有效位数,范围 1-38,s 表示小数点后位数,0≤s≤p
decimal(p,s)
4.近似小数类型
float(n):单精度浮点数,n 表示尾数位数,范围 1-24,占用 4 字节
double:双精度浮点数,占用 8 字节,精度高于 float
5.时间日期
data年月日 time时分秒 datatime timestamp year
6.NULL
7.布尔值
1 表示真(TRUE)、0 表示假(FALSE
8.自定义

二、数据库操作
1.创建数据库
create database [if not exist] 数据库名称 [default charset 字符集] [collate 排序规则]
2.删除数据库
drop database 数据库名称
3.使用数据库
use 数据库名称
4.查询数据库
查询所有数据库 show databases 查询当前数据库 show database()

例子:
-- 如果存在schooldb,即删除数据库
drop database schooldb if exists schooldb;
-- 创建数据库'schooldb' create 对象名
create database schooldb character set utf8mb4;
-- 打开数据库
use schooldb;

三、表操作
1.创建表
create table [if not exists] 表名 (
字段1 字段类型 [约束条件] [COMMENT 字段注释],
……
)[comment 表注释]

约束条件
primary key:主键,唯一标识表中每行数据,不可重复、非空。
not null:字段值不可为空。
auto_increment:自增,仅适用于整数类型主键,插入时可省略该字段(自动递增)。
unique:字段值唯一(可多个字段联合唯一)。
foreign key:外键约束,用于建立两个表之间的关联关系,确保从表中的字段值必须在主表对应的字段值中存在。
default:默认值约束

例子
create table studinfos(
-- 列名 数据类型 特征(主键、非空、自动增长)注释
id int primary key auto_increment comment '编号',
name varchar(4) not null comment '姓名',
sex enum('男','女')comment '性别',
tel char(11) comment '手机号码',
height float comment '身高',
borthday timestamp comment '出生日期',
sign text comment'个性签名' -- 最后一列不能有逗号
)
2.删除表
drop table if exists 表名
3.修改表
alter table <表名> add <新字段名> <数据类型>
alter table <表名> modify <字段名> <数据类型>
alter table <表名> drop <字段名>
alter table <表名> modify <字段名> <数据类型><约束条件>
alter table <表名> change <旧字段名> <新字段名><数据类型>

四、数据的操作
drop table if exists bookinfos;
create table bookinfos(
-- 列名 数据类型 特征(主键、非空、自动增长)注释
id int primary key auto_increment comment '编号',
namevarchar(50) not null comment '书名',
price float not null comment '价格',
type varchar(20) not null comment '类型',
cbdate timestamp comment '出版时间'
);

1.增加数据
-- 语法1: insert into 表名(列1,列2,列3……)列不可以有'' value(值1,值2,值3)
insert into bookinfos(id,name,price,type,cbdate)values(1,'c语言','30','软件开发','2010-10-10')
insert into bookinfos(id,name,price,type,cbdate)values(null ,'Java语言','50','软件开发','2010-10-11')
-- id 可以不写 用null替代
insert into bookinfos(name,price,type,cbdate)values('三国志','80','历史小说','2010-10-12')
insert into bookinfos(price,name,type)values('40','西游记','神话小说')
-- 语法2
-- insert into 表名 values(值1,值2,值3……);
insert into bookinfos values(null,'封神榜','100','神话小说','2020-10-13');
-- 语法3 批量插入
-- insert into 表名 values(值1,值2,值3……),(值1,值2,值3……),(值1,值2,值3……)
insert into bookinfos values(null,'语文','39','学科类','2020-09-01'),(null,'数学','40','学科类','2020-09-02'),(null,'外语','41','学科类','2020-09-03');

2.删除数据
-- 语法1:delete from 表名 where 某列=某值;
delete from bookinfos where name='Java语言';
delete from bookinfos where type='学科类'and price<40;
delete from bookinfos where cbdate is null; -- null 只能用is来表示
delete from bookinfos;
-- 语法2 清空表(数据全删、自动增值/标识种子从1排列)
-- truncate table 表名
truncate table bookinfos;

3.修改数据
-- 修改语法:updata 表名 set 列1=值1,列2=值2,... where 某列=某值;
update bookinfos set cbdate='2020-08-30' where cbdate is null;
update bookinfos set price=price+1 where type='神话小说' or type='历史小说';
-- 修改编号大于3的并且价格在40到90之间的图书的出版时间为2020-08-29
update bookinfos set cbdate='2020-08-29' where price>=40 and price<=90;
update bookinfos set cbdate='2020-08-29' where price between 40 and 90;

update bookinfos set cbdate='2020-08-29'
where id>3 and price between 40 and 90;
五、查询数据
1.语法
select [*全部 |all|distinct去重|colunm1,colunm2,...]
from 查询来源 数据表/视图
where 条件
group by
having
order by 排序(asc升序 默认 desc降序)
limit -- limit n1: 返回查询结果的前n1行数据 limit n1,n2: 返回从n1行起,共n2行数据。初始行从0 开始。
union

2.where条件常用运算符
1.模糊匹配
表达式 [NOT] LIKE 模式表达式
% 匹配0或多个任意字符
_ 匹配1个任意字符
表达式 [NOT] REGEXP 模式表达式
通配符 含义
^ 匹配字符串开始部分
$ 匹配字符串结束部分
. 匹配字符串

  • 匹配0或多个任意字符
  • 匹配单个或多个任意字符
    ? 匹配0或单个任意字符
    () 匹配括号中的内容
    {n} 匹配括号前的内容出现n次的序列
    2.范围匹配
    表达式 BETWEEN 表达式1 AND 表达式2
    表达式 IN(表达式[,…])
    3.空值判断查询条件
    IS NULL IS NOT NULL
    4..使用逻辑运算符查询(NOT AND OR XOR)

六、索引:加快查询速度
创建create [unique cluster] index <索引名>on<表名>(<列名>[<次序>])
删除drop
查看 show index from 表名

http://www.hskmm.com/?act=detail&tid=31802

相关文章:

  • 近期模拟赛汇总
  • 实用指南:部署Tomcat11.0.11(Kylinv10sp3、Ubuntu2204、Rocky9.3)
  • Hbase的安装与配置
  • 【Azure App Service】App Service是否支持PHP的版本选择呢?
  • OAuth/OpenID Connect 渗透测试完全指南
  • Problem K. 置换环(The ICPC online 2025)思路解析 - tsunchi
  • Go 语言和 Tesseract OCR 识别英文数字验证码
  • Markdown转换为Word:Pandoc模板使用指南 - 实践
  • 2025年10月小程序开发公司最新推荐排行榜,小程序定制开发,电商小程序开发,预订服务小程序开发,活动报名小程序开发!
  • 复习CSharp
  • Rust 和 Tesseract OCR 实现英文数字验证码识别
  • 数据结构-循环队列
  • C语言学习——键盘录入
  • 2025年10月软件开发公司最新推荐,软件定制开发,crm系统定制软件开发,管理系统软件开发,物联网软件开发公司推荐!
  • C语言学习——运算符的学习
  • 第十五篇
  • 数据结构-双向循环链表
  • 数据结构-顺序栈
  • Erlang 的英文数字验证码识别系统设计与实现
  • 使用Django从零开始构建一个个人博客系统 - 实践
  • 2025年磨床厂家TOP企业品牌推荐排行榜,平面磨床,外圆磨床,数控平面磨床,数控外圆磨床,7163平面磨床推荐这十家公司!
  • cifar10
  • [LangChain] 02. 模型接口
  • 摄像头调试
  • C语言学习——字符串数据类型
  • 感知节点@4@ ESP32+arduino+ 第二个程序 LED灯显示
  • WebGL学习及项目实战(第02期:绘制一个点)
  • 2025 年 10 月国内加工中心制造商最新推荐排行榜:涵盖立式、卧式、龙门及多规格型号!
  • display ip routing-table protocol ospf 概念及题目 - 详解
  • C语言学习——小数数据类型