SQL语句

库、表、记录的概念

库(Database):库是一个容器,用于存储表和其他对象(如视图、存储过程等)

表(Table):表是一个由列和行组成的矩阵,其中每列都定义了表中的一种数据类型,每行则表示表中的一个记录。

记录(Record):记录是表中的一行数据。

-------------------------------------------------------------------------------------------------------------------

修改数据库表中的字段

【1】添加新的字段

alter table 表名 add 新字段名(列名) 数据类型;alter table person add teacher varchar(255);

image-20240128213426147

【2】修改字段的数据类型

alter table 表名 modify 字段名(列名) 新数据类型;alter table person modify teacher varchar(200);

image-20240128213914833

【3】修改字段名(列名)

alter table 表名 change 旧字段名 新字段名 数据类型;alter table person change teacher teacher_name varchar(150);

image-20240128214506451

【4】删除字段

alter table 表名 drop 字段名;alter table person drop teacher_name;

image-20240128214626542

【5】将新列中添加新

update person set teacher = '某某老师' where teacher is null;

image-20240128215654880

update person set teacher = case when sex = '男' then '赵老师'when sex = '女' then '小猴老师'else teacherend;

image-20240128215844608

【6】插入新的字段

insert into 表名 (列1, 列2, 列3, ...) values (值1, 值2, 值3, ...);insert into person (name, age, heigh, sex, teacher) 
values ('john', 30, 180, '男', '赵老师');

image-20240128220828931

查看数据库的信息

  • show用于显示数据库服务器状态或元数据信息。

  • desc用于描述表的结构,包括字段名、数据类型等。

  • select用于从数据库表中查询数据。

SQL操作数据库基础

查看所有的数据库

show databases;

创建数据库

create database 数据库名字;create database today01;

删除数据库

drop database [if exists]数据库库名drop database today01

更改数据库

alter database 数据库名 character set 编码集;

--------------------------------------------------------------------------------------

查看所有表

show tables;

创建表

create table 表名(username varchar(255),password int(11)
);# 1. create table  表名#  字段名  字段类型(字段长度)字段约束条件# 2. null / not null / zerofill# 3. 每个字段定义要用 , 隔开# 4. 最后一个点不能有符号结尾

查看表的结构

describe user;desc user;
  • Feild: 字段名称
  • Type: 字段类型
  • Null: 是否可以为空
  • Key: 是否为主键
  • Default:  默认值
  • Extra: 注释

查看创建表语句

show create table 表名;show create table user;show create table user \g;show create table user \G;

删除表

drop table 表名

修改表

alter table 表名 modify 字段名 字段类型;alter table user modify password char;

重置表的信息

truncate table 表名;

----------------------------------------------------------------------------------------------

插入数据

insert into 表名(字段1,字段2) values(字段值1,字段值2);​
insert inot 表名 values(字段值1,字段值2); -- 只能按照字段位置插入insert into user(id,username,password) values(1,'mao','');insert inot user values(2,'jing','123');

查询数据

查看当前表下面的所有数据

select * from 表名;

查询当前表下面的指定字段的数据

select 字段名 from 表名;​
select username from user;

更改数据

updata 表名 set 需要更改的值 where 筛选条件;updata user set username where id =2;

删除数据

delete from 表名 where 筛选条件delete user set username where id =2;

【1】创建数据库

  1. MySQL:

    使用MySQL命令行工具,可以按如下方式创建数据库:mysql -u username -p# 输入密码后登录到MySQL
    ​
    CREATE DATABASE database_name;其中,username是你的MySQL用户名,database_name是要创建的数据库名称。

  2. PostgreSQL:

    使用PostgreSQL命令行工具,可以按如下方式创建数据库:

    bashCopy Codecreatedb -U username database_name

    其中,username是你的PostgreSQL用户名,database_name是要创建的数据库名称。

  3. SQLite:

    使用SQLite命令行工具,可以按如下方式创建数据库:

    bashCopy Codesqlite3 database_name.db

    其中,database_name是要创建的数据库文件名。

我这里用MySQL数据库来作示例

create database 数据库名;create database today01

image-20240123213831530

【2】查看数据库

show databases;

image-20240123213923000

查看指定库:

show create database bai;

image-20240123214402850

查看当前数据库的字符集和排序规则:

SELECT DEFAULT_CHARACTER_SET_NAME, 
DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'bai';

image-20240123215449567

【3】修改数据库

(1)

语法:

alter database 数据库名 [character set 编码字符集];

示例:

这将显示数据库 "bai" 的默认字符集和排序规则

alter database bai character set utf8mb4 collate utf8mb4_unicode_ci;

image-20240123215707881

(2)

alter database db2 charset set ='utf8';

image-20240123220332978

【4】删除数据库

drop database 数据库名字;​
-- 判断当前数据库是否存在,如果存在则删除
drop database if exists 数据库名字; 

image-20240123220708547

切换数据库

【1】切换数据库

use 数据库名字;

image-20240123220943474

【2】查看当前数据库所在的名字

select database();

image-20240123221105028

【3】查看当前数据库下的所有库

show tables;

image-20240123221236666

【4】创建数据库下面的表

create table 表名(字段名1 数据类型1[(存储空间) 字段约束],字段名2 数据类型2[(存储空间) 字段约束]
);create table users(id int primary key,name varchar(50),age int
);create table user (username varchar(255),password varchar(255)
);

image-20240123221749675

我创建了两个table表

【5】查看当前表的详细信息

describe 表名;​
desc 表名;desc user;

image-20240123221954492

  • 查看我创建的表的语句

  • show create table 表名 \G;show create table user \G;

    image-20240123222200604

【6】修改表的字段

alter table 表名 modify 字段名 字段类型;alter table user modify passowrd int(4);

image-20240123222536812

【7】删除表

drop table 表名;drop table user;

image-20240123111150632

插入表中的数据

【1】插入数据

insert 表名(字段名) values(值)create table user2 (username varchar(32),password varchar(32)
);
insert users(username,password) values("maojing","1314");

image-20240123223935675

【2】查看表中的数据

select * from user;

image-20240123224320181

【3】更改表中的数据

update 表名 set 需要改的数据 where 筛选条件;

这个是更改一个

update user set password="123" where username="tian";

这个是更改两个

UPDATE user SET password = '520' WHERE username IN ('tian', 'maojing');
 

【4】删除数据

-- 按照指定条件删除数据
delete from 表名 where 筛选条件;
 
-- 直接清空表
delete from 表名;
delete from user where username="dream";

image-20240123112005428


【一】什么是存储引擎

存储引擎是数据库系统中负责管理数据的核心组件之一。它定义了数据库如何在磁盘上存储和访问数据。

  • 日常生活中文件格式有很多,并且针对不同的文件格式会有对应不同的存储方式和处理机制

  • 针对不同的数据应该有对应的不同的处理机制

存储引擎就是不同的处理机制

【二】MySQL主要的存储引擎

  • InnoDB(默认引擎):

    • 支持事务处理,具有ACID(原子性、一致性、隔离性和持久性)特性。

    • 支持行级锁定,提供高并发性能。

    • 支持外键约束和关联关系。

    • 支持崩溃恢复和故障转移。

    • 使用聚簇索引来加速查询。

  • MyISAM:

    • 不支持事务处理,不具备ACID特性。

    • 支持表级锁定,对于并发性能较差。

    • 不支持外键约束和关联关系。

    • 适用于读密集型应用,如数据仓库、报告等。

    • 以表文件的形式存储数据,易于备份和迁移。

  • Memory(也称为Heap):

    • 将表数据存储在内存中,速度非常快。

    • 不支持事务处理,不具备持久性。

    • 表数据在服务器重启后会丢失。

    • 适用于临时数据存储、缓存或者需要高速读写操作的场景。

  • blackhole (黑洞引擎)

    • 无论存什么都会立刻消失

【三】如何查看数据库引擎

show engines;

image-20240123230017799

【四】不同引擎下的表的特性

【1】创建表

create table user1(id int) engine=innodb;
create table user2(id int) engine=myisam;
create table user3(id int) engine=blackhole;
create table user4(id int) engine=memory;

image-20240123230205422

(1)Innodb

  • user1.frm

    • 表结构

  • user1.ibd

    • 表结构

Innodb:默认的引擎

(2)myisam

  • user2.frm

    • 表结构

  • user2.MYD

    • 表数据

  • user2.MYI

    • 索引(index),类似于书的目录,基于目录查找数据的速度会很快

myisam:数据具有索引,读取数据快

(3)blackhole
  • user3.frm

    • 表结构

blackhole:黑洞引擎,存什么数据都会消失

(4)memory
  • user4.frm

    • 表结构

memory:数据缓存到内存

【2】插入数据

insert into user1 values(123);
insert into user2 values(123);
insert into user3 values(123);
insert into user4 values(123);

image-20240123230632408

【3】查看数据

select * from user1;
select * from user2;
select * from user3;
select * from user4;

image-20240123230820719

除了黑洞引擎都存在数据

memory 数据是存在内存中的,如何印证?

  • 重启mysql服务


【一】创建表的完整语法

create table 表名 (字段名 字段类型(宽度) 约束条件
);
​
-- 最后一个字段不能以 , 结尾
-- 字段名和字段类型是必须的条件
CREATE TABLE 表的名称 (    column1 datatype constraint, # 字段名 字段类型(宽度) 约束条件column2 datatype constraint   ...   CONSTRAINT constraint_name,  # 是对列的约束条件... ) ENGINE = storage_engine;# 存储引擎
  • 约束条件可选,约束条件可以写多个

  • 表的名称:替换为你想要创建的表的名称。column1、column2:替换为表中的列名。datatype:替换为对应列的数据类型。constraint:替换为对列的约束条件。constraint_name:替换为约束条件的名称。storage_engine:替换为你想要使用的存储引擎,如 InnoDB、MyISAM 等。

【二】基础语法

-- 这三个条件必须存在
create table 表名(字段名 字段类型
);

create table user(id int);

image-20240123231806064

【三】什么是宽度

  • 一般情况下指的是对存储数据的限制

    • 默认宽度为 1(只能存一个字符)

  • 创建表

create table user7(name char);

image-20240123232427619

  • 查看表的详细信息

desc user7;
desc bai7;

image-20240123232758663

【四】null 和 not null

  • not null 约束当前字段条件不能为空

insert user8 values(123,'d');
insert user8 values('a');
create table usr8(id int,name char not null);

image-20240123233154820

【五】严格模式

本质上是为了约束我们sql语法规范的,我们可以不按照约束做事,修改他的约束。

%:匹配任意个字符

_:匹配当前字符

【1】查看严格模式

show variables like "%mode";

image-20240123233259363

【2】修改严格模式

  • 全局生效

set global sql_mode = 'ONLY_FULL_GROUP_BY,
STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,
NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_EN'
  • 只对当前窗口生效

set session sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,
NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_EN'

【3】严格模式到底开启还是不开启

  • 5.7 之后的版本默认都是开启严格模式的

  • 尽量减轻数据库的负担,不给数据库增加额外的压力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/525819.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掘根宝典之c语言预处理器(#define,#include,#,##,#undef,#if,#ifdef,#elif,#endif,defined函数)

目录 #define #define(宏定义命令) define与typedef作用域的的区别: #define定义宏 注意 #define 替换规则 注意 宏和函数对比 宏的缺点: 宏和函数的对比 #运算符 注意点 ##运算符 注意点 #include(文…

Svg Flow Editor 原生svg流程图编辑器(二)

系列文章 Svg Flow Editor 原生svg流程图编辑器(一) 说明 这项目也是我第一次写TS代码哈,现在还被绕在类型中头昏脑胀,更新可能会慢点,大家见谅~ 目前实现的功能:1. 元件的创建、移动、形变;2…

面向对象——UML图

一、结构图 静态的 (一)类图 1、图 (二)对象图 1、如何区分对象和类? :对象 对象名:类 类 (三)包图*(带*号的是软考从来没考过的) (四&am…

pytorch 批量归一化BatchNorm的BatchNorm1d和BatchNorm2d理解

BatchNorm即批量归一化,是深度学习中经常用到的加速神经网络训练,加速收敛速度及稳定性的算法,是神经网络训练必不可少的一部分。 BatchNorm作用:在进行批量训练过程中,每个batch具有不同的分布,使数据分布…

光明网发布稿件多少钱?新闻投稿低价渠道推荐,附光明网价格明细表

想要在光明网发稿?不知道费用是多少?媒介多多告诉你答案! 在当今数字化时代,媒体平台的重要性日益突出,而光明网作为国内知名的新闻门户网站,吸引了大量的目标受众。许多企业和个人都希望能够在光明网上投…

开源的Java报表库JasperReports介绍

JasperReports 是一个流行的开源 Java 报表库,它允许开发人员创建丰富的、基于 Java 的报表,这些报表可以与多种数据源交互,并且可以很容易地集成到 Java 应用程序中。JasperReports 提供了丰富的功能,包括数据可视化、图表、子报…

<C++>深度剖析菱形继承

​​ 文章目录 什么是菱形继承探究底层 什么是菱形继承 继承关系形如下图的继承即为菱形继承,或者叫钻石继承。 菱形继承的问题:公有继承前提下,如果类A中含有成员变量a,那么类B与类C中都有继承自类A的a,类D中又继承…

膜厚测量仪在半导体应用中及其重要

随着科技的不断发展,半导体行业已成为当今世界的核心产业之一。在这个领域中,半导体膜厚测量仪作为关键设备,其精度和可靠性对于产品质量和生产效率具有至关重要的作用。本文将详细介绍半导体膜厚测量仪的工作原理、应用领域以及其在半导体制…

【Unity】使用ScriptableObject存储数据

1.为什么要用ScriptableObject? 在游戏开发中,有大量的配置数据需要存储,这个时候就需要ScriptableObject来存储数据了。 很多人会说我可以用json、xml、txt,excel等等 但是你们有没有想过,假设你使用的是json&#x…

基于YOLOv8深度学习的葡萄病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

【蓝桥杯-单片机】基础模块LED和按键

文章目录 【蓝桥杯-单片机】Led、按键等基础模块01 前置准备(1)新建工程(4)编写程序 02 基础模块:LED(0)LED原理图(1)对P1整体赋值,控制所有的LED灯&#xff…

Unity Shader实现UI流光效果

效果: shader Shader "UI/Unlit/Flowlight" {Properties{[PerRendererData] _MainTex("Sprite Texture", 2D) "white" {}_Color("Tint", Color) (1, 1, 1, 1)[MaterialToggle] PixelSnap("Pixel snap", float…