mysql -sql编程

article/2025/10/6 10:16:01

基础语句

# 创建库
create database dome;
# 切换到数据库
use dome;
# 创建表
create table z (a int unsigned);
# 查看表show create table z;
# 查看表结构
desc z;
# 插入数据
insert into z value(1);# 修改表字段类型
alter table zz change column a a int auto_increment primary key;
# 修改表的字符集
alter table zz charset = utf8mb4# 排序
select * from order by l_discount limit 10000;
# 分组
select  from group by # 查看MySQL支持的字符集
show charset

元数据

 information_schema 记录了数据库的所有元数据的数据库

元数据 --- 描述数据的数据,就是表的字段描述 

元数据数据

tables 记录了数据库表的元数据

columns 记录了数据库表中的列的元数据

partitions 记录了数据库分区表的元数据信息

数据类型

INT类型

类型占用空间最小值最大值
字节(signed/Unsigned)(signed/Unsigned)
tinyint  1-128127
0255
smallint2-3276832767
065535
mediumint3-83886088388607
016777215
int4-21474836482147483647
04294967295
bigint8-92233720368547758089223372036854775807
018446744073709551615

signed/Unsigned: 有符号和无符号,不建议使用有符号当主键虽然上限提升但是会出现很多错误,例如内存溢出

zerofill:显示值填充,无任何实际意义

auto_increment: 自增,唯一,多为主键使用

作为主键使用时,直接使用bigint

数字类型

类型占用空间精度准确性
float4单精度
double8双精度低,比float高
decimal变长高精度非常高(财务,账务必须使用此类型)

float(m,d)/double(m,d)/decimal(m,d) 表示显示M位整数,其中D位位于小数点后边的位数

小数选decimal就对了

字符串类型

类型说明N的含义是否有字符集最大长度
char(N)定长字符字符255
varchar(N)变长字符字符16384
binary(N)定长二进制字节字节   255
varbinary(N)变长二进制字节字节16384
tinyblob二进制大对象字节256
blob二进制大对象字节16K
mediumblob二进制大对象字节16M
longblob二进制大对象字节4G
tinytext大对象字节256
text大对象字节16K
mediumtext大对象字节16M
longtext大对象字节4G

常用字符串函数

# 函数
# 查看字符串16进制的值
select hex('abc');
# 字段类型转换,数字转字符串
select cast(123 as char(10) charset gbk);
# 查看字符长度
select length('我'), char_length('我');
# 字符串大小写
select upper('aBc'), lower('aBc');
# md5加密
select md5('abc');
# 字符串连接
select concat('a','b','c');
# 指定拼接字符串
select concat_ws('.','a','b','cb');
# 生成重复字符
select repeat('a',80);
# 生成随机数字 (1-10)
select floor(1+rand()*10);
# 左填充
select lpad('aaa',8,'1');
# 右填充
select rpad('aaa',8,'1');

基本上一个varchar走天下

排序规则:

大小写不敏感,比较到空格就不比较了

集合类型

enum类型最多允许65536个值

set 最多允许64个值

通过sql_mode参数可以用于约束检查

示例:

 日期类型

类型占用字节表示范围
datetime81000-01-01 00:00:00 ~ 9999-12-31 23:59:59
date31000-01-01 ~ 9999-12-31
timestamp41970-01-01 00:00:00 UTC ~ 2038-01-19 03:14:07 UTC
year1

YEAR(2):1970~2070

YEAR(4): 1901 ~ 2155

time3-838:59:59 ~ 838:59:59

常用时间函数:

# 获取当前时间精确到秒
select now();
# 获取当前时间到毫秒
select now(2);
# 时间转为时间戳
select unix_timestamp(now());
# 时间戳转时间类型
select from_unixtime(new_time)
select from_unixtime(1660010581);# 返回函数执行的时间
select sysdate(),sleep(3),sysdate();
# 增加时间,
# 当前时间加一天
select date_add(now(),interval 1 day);
# 加一小时
select date_add(now(),interval 1 hour);
# 加-1分钟
select date_add(now(),interval -1 minute);
# 时间格式化
select date_format(now(),'%Y%m%d');

示例:

 json类型

5.7以后版本支持

原生的json类型替换blob类型

        json数据有校性检查:blob类型无法在数据库层做这样的约束性检查

        查询性能的提升:查询不需要遍历所有字符串才能找到数据

        支持部分属性的索引:通过虚拟列的功能可以对json中的部分数据进行索引

# 创建表create table qq (id int auto_increment,data json,primary key(id));
# 写入数据
insert into qq value(null,'{"name":"limei","age":"18"}');
# 获取某给json数据中的值
方法一:
select id,json_extract(data,'$.name') from qq
# 剔除引号
select id,json_unquote(json_extract(data,'$.name')) from qq;
方法二:
select id,data->'$.name' from qq;
select id,data->>'$.name' from qq;

示例: 

 

 null

如果涉及到计算,不建议值设计为null,

表是数据库的核心

表=关系

表是记录的集合

二维表格模型易于人类理解

mysql 默认存储都是基于行存储

每行记录都是基于列进行组织的

# 查看数据库引擎是innodb的表,除'mysql'','information_schema','performance_schema'三个库以外的
select TABLE_SCHEMA,TABLE_NAME,engine from tables where engine = 'innodb' and TABLE_SCHEMA not in ('mysql'','information_schema','performance_schema');# 查看数据库中使用utf8字符的表
select TABLE_SCHEMA,TABLE_NAME,CHARACTER_SET_NAME from COLUMNS where CHARACTER_SET_NAME = 'utf8' and TABLE_SCHEMA not in ('mysql','information_schema','performance_schema','sys');

分区表

将一个表或者索引拆分为多个更小的单元、更可管理的部分

局部分区索引,每个分区保存自己的数据与索引

分区列必须是唯一索引的一个组成部分

分区类型:range、list、hash、key、columns

设置好规则后数据库按照规则完成分区,表面还是一张表

分区条件必须是int类型

数据范式设计

范式(Noraml Form)

数据库范式化是一个可以帮助避免数据库数据异常和管理数据时出现的其他问题的技术.它由各种阶段的表的转化组成:第一范式、第二范式、第三范式

范式的目的

 消除数据冗余

使对数据更易更改,而且避免更改时出现异常,更容易执行一致性的约束

产生一个与数据表示的情况更相似的更容易理解的结构

1NF遵循的规则 -- 全部表都定义了主键

2NF遵循的规则--1NF的基础上,不包含部分依赖(属性只是依赖于主键的一部分)

3NF遵循的规则--2NF的基础上,不包含传递依赖(非主属性通过另一个非键值依赖于主键)

遵循1NF  LocationId和PlantCode创建联合主键即可

 遵循2NF,创建联合主键拆分表,属性只能是主键的一部分进行分表

遵循3NF,发现LandDescription依赖与LandRequirement,LandRequirement依赖于Plantcode,这属于传递依赖,对其表进行拆分

 优缺点

优点:

        更新操作更快

        没有重复数据

        表相对较小

缺点

        查询数据需要多次关联

mysql 自带的库和表

mysql 库

user 表: 记录用户信息,不建议通过修改此表达到权限修改的目的。

information_schma 库  元数据库,保存着关于MySQL服务器所维护的所有其他数据库的信息。


http://chatgpt.dhexx.cn/article/NEUL2nQx.shtml

相关文章

pl/SQL编程基础

一、PL/SQL编程基础 1、pl/sql的组成:声明块、执行块、异常处理块 2、编制代码实现12...100的计算 3、编写求u12...100的结果并显示的存储过程 4、编写求12...n的带参数的存储过程 三、函数编程 1、函数的概念 function函数,存储在数据库中的带返回值的命名pl/s…

PL-SQL编程

PL/SQL介绍: PL/SQL是ORACLE对标准数据库语言的扩展 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言 PL/SQL 是对 SQL 的扩展 支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构 可用于创…

SQL编程学习01

在正式开始学习前,我发现之前安装的MySQL忘记了root密码。 所以在这里补充一下找回root密码的方法:MySQL找回root密码 一、问题与解决: 1、在创建表的时候出现了「1046(ErrorCode:1046.No database select…&#x…

SQL编程和高级查询

一、使用SQL操作表 1、SQL语言简介 2、数据库操纵语言 (1)INSERT命令 INSERT INTO grade VALUES (5,五年级);--插入每一列 INSERT INTO grade VALUES (6,六年级); INSERT INTO grade VALUES (7,七年级); INSERT INTO student(stuNo,stuName,sex) VAL…

数据库系统SQL编程-02

目录 一、查询平均分高于60分的课程(MSSQL) 表结构: 表样例 输出样例: 编译程序: 二、查询成绩最高的前三名同学(MSSQL) 表结构: 表样例 输出样例: 编译程序: 三、查询所授每门课程平均成绩均在70分以上的教师(MSSQL) 表结构: 表样例 …

嵌入式SQL编程快速上手教程

嵌入式SQL编程快速上手教程 声明:我这里标题虽是《嵌入式SQL编程快速上手教程》,但只是嵌入式SQL编程的冰山一角罢了,我会通过举一道简单例题来教小白快速上手嵌入式SQL编程 第一:题目描述 其模式描述分别是: S (s…

数据库系统SQL编程-01

目录 一、查询各专业学生的平均成绩(MSSQL) 表结构: 表样例 输出样例: 编译代码: 二、查询平均成绩最高的前3名同学 表结构: 表样例 输出样例: 编译代码: 三、 查询同专业的学生(MSSQL) 表结构: 表样…

pl/sql编程语言

–pl/sql编程语言 –pl/sql编程语言是对sql语言的扩展,是的sql语言具有过程化编程的特性 –pl/sql编程语言比一般的过程化编程语言,更加灵活高效 –pl/sql编程语言主要用来编写存储过程和存储函数等。 --声明方法,定义变量 --赋值操作可以用 : 也可以使…

SQL编程开发

文章目录 SQL概述SQL分类SQL语言规范 基本查询语句查询全部列查询特定列过滤操作模糊查询排序操作多表查询单行函数组函数group by和having 子查询库和表的操作库的操作表的操作数据类型列的操作 数据处理之增删改事务、约束和分页事务约束分页 安装好MySQL下步就是使用MySQL&a…

SQL编程

10-1 查询学生表所有学生记录 (5 分) 本题目要求编写SQL语句, 检索出stu表中所有学生记录。 提示:请使用SELECT语句作答。 表结构: 定义表结构的SQL语句。如: CREATE TABLE stu(sno char(4) NOT NULL,sname char(8) NOT NULL,sex tinyin…

SQL 编程

SQL Server中存在两种变量局部变量和成员变量,两种变量的特点和其他语言变量特点一样 全局变量:由系统定义和维护由系统定义和维护 变量名前加“” 例 name 就定义了一个全局变量“name” 局部变量:由用户定义和使用,变量…

可编程的SQL是什么样的?

背景 如果你使用传统编程语言,比如Python,那么恭喜你,你可能需要解决大部分你不需要解决的问题,用Python你相当于拿到了零部件,而不是一辆能跑的汽车。你花了大量时间去组装汽车,而不是去操控汽车去抵达自…

SQL编程语言1

1 SQL简介 SQL是一门操作关系型数据库的编程语言 SQL通用语法 SQL语句可以以单行或多行书写,以分号结尾。只有在读取到分号后系统才会默认你已经输入执行语句MySQL数据库的SQL语句不区分大小写,关键字建议使用大写注释 单行注释:-- 注释内…

sql数据库高级编程总结(一)

1、数学函数:操作一个数据,返回一个结果 (1)取上限 ceiling 如果有一个小数就取大于它的一个最小整数 列如9.5 就会取到 10 select code,name,ceiling(price) from car (2)取下限 floor 如果有一个小数就…

SQL基础编程

文章目录 一.SQL的环境搭载单机离线环境在线环境 二.SQL的单表操作1.sql基础三步2.sql四则运算3.limit (限制查询结果个数)4.order by(排序)5.where 综合条件筛选6.SQL常量7.distinct (把结果中重复的行删除)8.函数(1) 聚合函数:sum() ——求…

君正X1000芯片性能和处理器介绍

君正X1000芯片是针对语音识别功能做了专门定制的芯片,可以支持4个MIC,支持远场唤醒,功耗很低,适用于物联网、智能家居、智能音频、智能玩具等产品 。 X1000 芯片功能: 穿戴处理器级低功耗,待机功耗0.2mW&am…

IBM storwize V5000存储基础配置

初始帐号密码 Superuser / passw0rd 设备和系统的基本状态 首先添加配置主机,前提是已经连接好光纤线,配置好光纤交换机 这里我们使用光纤通道 系统应该可以自动识别到端口,主机名可以设置为主机型号或者主机应用名 两个端口完成 配置内部存…

《计算机系统概论》-第5章-习题答案

给定指令ADD、JMP、LEA、NOT,请判断它们分别是操作(或运算)指令,还是数据搬移指令或控制指令?对每一条指令,进一步列出该指令可以采用的寻址模式。 指令类型寻址模式ADD操作立即数、寄存器2种寻址模式JMP控…

X1000之LCD部分的翻译

1.显示大小可达640x48060Hz,24BBP RGB 8 8 8 RGB(256^3) 2的24次方16777216 2.支持的颜色就是我们上面计算的 3. 8080并行接口 MCU接口方式(8080,6800接口)与RGB接口主要的区别 4.支持内部DMA操作和寄存器操作(可以…

uboot - 配置过程1(分析国产君正的ingenic-linux-kernel3.10.14-x1000-v8.2-20181116\u-boot\mkconfig脚本)

分析uboot的配置过程(mkconfig脚本) uboot怎么配置?我们在终端上执行make NAME_config时的运行过程解析! STEP1: %_config:: unconfig$(MKCONFIG) -A $(:_config)我们执行make *_config时会运行makefile的这两行程序&#xff0c…