“初探数据库“ ->了解数据库的基本知识


感兴趣的小伙伴可以了解的国产数据库:
OceanBas, 达梦数据库, 神通数据库

SQL语句分类

前言:
数据库管理系统(DBMS) DataBase Management System
结构化查询语言(SQL) Structured Query Language

  1. Data Definition Language (DDL 数据定义语言) 如:建库,建表
  2. Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改
  3. Data Query Language(DQL 数据查询语言),如:对表中的查询操作
  4. Data Control Language(DCL 数据控制语言),如:对用户权限的设置

MySql语句中的注释

代码示例:

-- 我是一个注释
# 我也是一个注释
/*
	我是
	多行
	注释
*/

DDL

DDL操作数据库

  1. 基本语句解析
# 创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET utf8;
# 查看所有的数据库
show DATABASES;
# 查看某个数据库的定义信息
show create database 数据库名;
# 修改数据库默认的字符集
alter database 数据库名 character set gbk;
# 删除数据库
drop database 数据库名;
# 使用数据库
use 数据库名;
-- 查看正在使用的数据库
select database();	# database()这儿表示的是一个函数

DDL操作表结构

  1. 创建表的格式
CREATE TABLE 表 名 (
	字段名 1 字段类型 1,
	字段名 2 字段类型 2
);
  1. 数据库中的详细数据类型
分类类型名称类型说明
整数tinyInt微整型:很小的整数(占 8 位二进制)
整数smallint小整型:小的整数(占 16 位二进制)
整数mediumint中整型:中等长度的整数(占 24 位二进制)
整数int(integer)整型:整数类型(占 32 位二进制)
小数float单精度浮点数,占 4 个字节
小数double双精度浮点数,占 8 个字节
日期time表示时间类型
日期date表示日期类型
日期datetime同时可以表示日期和时间类型
字符串char(11)固定长度的字符串,无论使用几个字符都占满全部,M 为 0~255 之间的整数
字符串varchar(11)可变长度的字符串,使用几个字符就占用几个,M 为 0~65535 之间的整数
大二进制tinyblob,Big Large Object允许长度 0~255 字节
大二进制blob允许长度 0~65535 字节
大二进制mediumblob允许长度 0~167772150 字节
大二进制longblob允许长度 0~4294967295 字节
大文本tinytext允许长度 0~255 字节
大文本text允许长度 0~65535 字节
大文本mediumtext允许长度 0~167772150 字节
大文本longtext允许长度 0~4294967295 字节

注意点: char的执行效率比varchar的执行效率高,但是char是固定长度,但varchar可变长度.
3. 建表小tips:

create table student (
    id int,
	`name` varchar(20),
	birthday date
);

反影号name可以区别MySQL中的关键字,可以避免关键字的冲突;

DML

用于对表中的记录进行增删改操作

插入操作

INSERT [INTO] 表名 [字段名] VALUES (字段值)
具体操作:
插入所有的列,向学生表中

-- 插入所有列
insert into student (id,name,age,sex) values (1, '孙悟空', 20, '男');
-- 如果只插入部分列,必须写列名
insert into student values (2, '孙悟天', 16, '男');

更新操作

UPDATE 表名 SET 列名=值 [WHERE 条件表达式]
具体操作:

-- 不带条件修改数据,将所有的性别改成女
update student set sex = '女';

-- 带条件修改数据,将 id 号为 2 的学生性别改成男
update student set sex='男' where id=2;

-- 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京
update student set age=26, address='北京' where id=3;

删除操作

DELETE FROM 表名 [WHERE 条件表达式]
具体操作:

-- 带条件删除数据,删除 id 为 1 的记录
delete from student where id=1;

-- 不带条件删除数据,删除表中的所有数据
delete from student;

注意点:

  • 如果在进行插入操作时没有指定需要插入的字段,则需要进行全字段插入;
  • 在进行插入操作时,字段值与字段的名一一对应
  • mysql语句中对于数据库字段,加引号不一定报错,但不加上引号很可能出问题;
  • 在mysql中如果有一个null加上另外一个数据,则结果为null;

DQL

查询操作

SELECT 列名 FROM 表名 [WHERE 条件表达式]

  1. SELECT 命令可以读取一行或者多行记录。
  2. 你可以使用星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据
  3. 你可以使用 WHERE 语句来包含任何条件。

简单查询

查询表所有行和列的数据
SELECT * FROM 表名;
查询指定列
SELECT 字段名 1, 字段名 2, 字段名 3, … FROM 表名;

指定列的别名进行查询

对列指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名… FROM 表名;
对列和表同时指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名… FROM 表名 AS 表别名;

清除重复值

查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;

查询结果参与运算

某列数据和固定值运算
SELECT 列名 1 + 固定值 FROM 表名;
某列数据和其他列数据参与运算
SELECT 列名 1 + 列名 2 FROM 表名;
**注意:**参与运算的必须是数值类型

条件查询

SELECT 字段名 FROM 表名 WHERE 条件

  1. 准备数据
CREATE TABLE student3 ( id int,	-- 编号
		name varchar(20), -- 姓名
		age int, -- 年龄
		sex varchar(5),	-- 性别
		address varchar(100),	-- 地址
		math int, -- 数学
		english int -- 英语
);

INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,'马云',55,'男','
杭州',66,78),(2,'马化腾',45,'女','深圳',98,87),(3,'马景涛',55,'男','香港',56,77),(4,'柳岩
',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'刘德华',57,'男','香港
',99,99),(7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);
比较运算符说明
>、<、<=、>=、=、<><>在 SQL 中表示不等于,在 mysql 中也可以使用!=没有==
BETWEEN…AND在一个范围之内,如:between 100 and 200相当于条件在 100 到 200 之间,包头又包尾
IN(集合)集合表示多个值,使用逗号分隔
LIKE ‘张%’模糊查询
IS NULL查询某一列为 NULL 的值,注:不能写=NULL

具体操作:

-- 查询 math 分数大于 80 分的学生
select * from student3 where math>80;

-- 查询 english 分数小于或等于 80 分的学生
select * from student3 where english <=80;

-- 查询 age 等于 20 岁的学生
select * from student3 where age = 20;

-- 查询 age 不等于 20 岁的学生,注:不等于有两种写法select * from student3 where age <> 20; select * from student3 where age != 20;

在这里插入图片描述

-- 查询 age 大于 35 且性别为男的学生(两个条件同时满足) select * from student3 where age>35 and sex='男';

-- 查询 age 大于 35 或性别为男的学生(两个条件其中一个满足) select * from student3 where age>35 or sex='男';

-- 查询 id 是 1 或 3 或 5 的学生
select * from student3 where id=1 or id=3 or id=5;
  • in关键字
    SELECT 字段名 FROM 表名 WHERE 字段 in (数据 1, 数据 2…);
    具体操作:
-- 查询 id 是 1 或 3 或 5 的学生
select * from student3 where id in(1,3,5);

-- 查询 id 不是 1 或 3 或 5 的学生
select	*	from	student3	where	id	not	in(1,3,5);
  • 范围查询
查询 english 成绩大于等于 75,且小于等于 90 的学生
select * from student3 where english between 75 and 90;
  • like关键字
    SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’
-- 查询姓马的学生
select * from student3 where name like '马%';
select * from student3 where name like '马';
-- 查询姓名中包含'德'字的学生
select * from student3 where name like '%德%';

-- 查询姓马,且姓名有两个字的学生
select * from student3 where name like '马_';

本篇文章主要介绍了数据库的一些基础语法,感兴趣的小伙伴可以点击我的个人博客继续学习深入知识.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿胡爱编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值