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

MySql语言操作数据库---增删改查数据库,表,数据

思维导图

SQL语言共分为四大类:
数据定义语言DDL:数据定义语言DDL用来创建数据库中的各种对象-----[库]、[表]、[视图]、[索引]、
数据操纵语言DML:(1) 插入:INSERT (2) 更新:UPDATE (3) 删除:DELETE 
数据查询语言DQL:数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
数据控制语言DCL:数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果[了解]

DDL定义数据库

# 例如,使用命令创建数据库:
# (1)创建一个班级db_database1数据库,且使用默认编码;
create database db_database1;
# (2)创建一个班级db_database2数据库,charset设置编码为utf8;
create database db_database2 charset utf8;
# (3)思考:若再使用相同命令创建一个已有的数据库:班级db_database1/3,能成功吗?
# if not exists   # 判断
create database if not exists db_database3;
# [HY000][1007] Can't create database 'db_database1'; database exists

字符集概念

什么是字符集

字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集有:==ASCII字符集==、ISO 8859字符集、GB2312字符集、BIG5字符集、GB18030字符集、unicode,==GBK==,==UTF8== 字符集等.

为什么要有字符集

因为计算机底层只能存储二进制数字.不能存储任何的字符,因此要使用数字来固定表示某个字符.这样就可以在使用

字符的时候个将数字根据字符集转变成为字符.

DDL查看数据库

-- 查看所有库
show databases;
-- 查看建库语句
show create database db_database3;
# CREATE DATABASE `db_database1` /*!40100 DEFAULT CHARACTER SET utf8mb4
#     COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
-- 使用库 (选择库)
use db_database3;
# 例如,使用命令来操作:
# (1)使用数据库班级db_database2;
use db_database2;
# (2)查看当前正在使用的数据库名;
select database();
# (3)思考:如果要查找到MySQL数据库下默认库名mysql中的user表,该怎么操作呢?
use mysql;

DDL删除数据库

drop database db_database3;

数据类型

1.整数

2.小数

3.字符串

4.时间和日期

DDL创建表

# 例如,使用创建数据表命令来完成:
# (1)创建字段时,不添加任何[约束]条件;
# (2)新建一个用户表user,字段有编号、用户名、昵称;
# (3)思考:若再使用相同命令创建一个已有的数据表:user,能成功吗?
-- 选择库
use db_database1;
-- 创建表
create table user(
    id int,
    username varchar(20),
    nikename varchar(20)
);
-- 判断表不存在才会执行创建
create table if not exists user(
    id int,
    username varchar(20),
    nikename varchar(20)
);

DDL数据表的查看

# 例如,使用命令查看数据表:
# (1)在当前数据库中再创建一个邮箱表email,有编号、邮箱号、密码、来源等字段;
create table email(
    id int,
    email_addr varchar(20),
    password varchar(20),
    scr varchar(20)
);

# (2)查看当前数据库中有哪些数据表;
show tables ;
# (3)查看创建数据表email的创建语句;
show create table email;
-- 运行结果
# CREATE TABLE `email` (
#   `id` int(11) DEFAULT NULL,
#   `email_addr` varchar(20) DEFAULT NULL,
#   `password` varchar(20) DEFAULT NULL,
#   `scr` varchar(20) DEFAULT NULL
# ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

# (4)查看数据表email的表结构。
desc email;
-- 运行结果:
# id,         int(11),            YES
# email_addr, varchar(20),        YES
# password,   varchar(20),        YES
# src,        varchar(20),        YES

DDL删除表

# 例如,使用命令删除数据表:
# (1)新建一个只有姓名字段的学生表,然后查看库中有哪些数据表;
create table stu(
    stu_name varchar(20)
);
# (2)删除学生表后,再查看有哪些数据表。
drop table stu;

DDL 修改表之添加列

# 例如,使用命令完成:
# (2)添加判断语句,新建一张用户表table_user,有用户名、密码这2个字段;
create table if not exists table_user(
    username varchar(20),
    password varchar(20)
);
# (3)给用户表添加一列信息展示information字段,长度为140;
-- 默认添加到末尾
alter table table_user add information varchar(140);

# (4)思考1:在用户表的最开始处,添加一列最初名称first_name,该怎么做呢?
alter table table_user add first_name varchar(20) first ;

# (5)思考2:在用户表的密码字段后,添加一列年龄age字段,该怎么做?
alter table table_user add age varchar(20) after password;

#--查看表详细信息
desc table_user;

DDL修改表之修改列的类型和数据

# 例如,使用命令完成:
# (1)给用户表的信息字段类型修改为char,长度修改为60;
alter table table_user modify information varchar(60);
# (2)将用户名字段修改长度为16,且添加不为空约束。
-- not null 表示非空约束
alter table table_user modify username varchar(16) not null;  -- not null 表示非空约束
# 如果表中有数据,修改类型还需要注意数据能否改为你想要的类型.

DDL修改表之修改列名

# 例如,使用命令完成:
# (1)把用户表的用户名修改为name,字符串类型、长度为18;
alter table table_user change username name varchar(18);
# (2)把用户表的信息字段列名修改为info,类型修改为varchar,长度为100。
alter table table_user change information info varchar(100);

DDL修改表之删除列

# (1)删除用户表中的年龄这一列;
alter table table_user drop age;
# (2)使用命令查看表结构。
desc table_user;

DDL修改表之修改表名

# (1)把用户表的表名更改为t_user;
rename table table_user to t_user;
# (2)使用命令查看库中所有数据表信息。
-- 查看所有的表.
show tables ;

DML操作

insert插入数据到表

# 例如,使用命令完成:
# (2)用户表的字段信息有编号、人物名、性别、住址等;[不添加任何约束条件]
create table user1(
    id int,
    user_name varchar(20),
    gender varchar(2),
    addr varchar(20)
);
# (3)使用插入数据的语法分别插入一条数据;
insert into user1 values (1,'李明','男','安徽');

-- Column count doesn't match value count at row 1


# (4)思考1:给所有字段名一次性插入2条数据信息,该怎么做?
insert into user1 values (2,'李华','女','上海'),(3,'李飞','男','北京');
# (5)思考2:给用户表一次性插入仅包含人物名、年龄、性别字段的3条数据,该怎么做?
insert into user1 (user_name,gender,addr) values ('李','女','上海');
# (6)若发现在性别字段后,还缺少了年龄字段,该怎么处理呢?
alter table user1 add age int;

# 查看表中数据
SELECT * FROM user1;
value和values的区别
1:在MySQL中,value和values都是用于插入数据的关键字,但它们的用法和执行效率有所不同。
2:value和values在基本用法上没有明显区别,它们都可以用于插入单条或多条数据。
3:如果你需要高效地插入单条数据,value是更好的选择;如果你需要批量插入多条数据,那么使用values会更加高效。同时,保持代码的一致性和正确性也是非常重要的。因此一般全都使用values.

update修改数据

# 例如,使用命令完成:
# (1)将用户表内所有用户性别一次性设置为女;
update  user1 set gender = '女';
# (2)将用户表内所有用户的性别修改为男、年龄修改为18;
update user1 set gender = '男',age = 18;
# (3)将用户表内编号为2的用户性别设置为女;
update user1 set gender = '女' where id = 2;
# (4)将用户表内编号为3的用户年龄更新为30,且住址更新为湖北省武汉市;
update user1 set age = 30 ,addr = '湖北省武汉市' where id = 3;
# (5)思考:去年存储的用户数据到今年了,那么存储在user数据表里的用户年龄都要增加1岁,该怎么处理呢?
update user1 set age = age +1 ;

delete删除数据

# 例如,使用命令完成:
# (1)在当前库中创建一个用户表2,表字段有编号、用户名、密码,再增加3条数据;
create table user2(
    id int,
    username varchar(20),
    password varchar(20)
);
insert into user2 values (1,'李四','xxxxx'),(2,'张四','xxxxx'),(3,'王四','xxxxx');
select * from user2;
# (2)删除表内编号为1的这条数据,再删除用户名为李四的这条数据;
delete from user2 where id = 1;
delete from user2 where username = '张四';
# (3)使用命令删除表内所有数据,观察效果。
delete from user2;


http://www.kler.cn/news/319852.html

相关文章:

  • 速盾:AI能为高防cdn带来什么?
  • 828华为云征文|华为云Flexus云服务器X实例Windows系统部署一键短视频生成AI工具moneyprinter
  • 专题八_链表_算法专题详细总结
  • 一带一路区块链赛项样题解析(中)
  • C++——求3*3矩阵对角元素之和。
  • 第164天:应急响应-挖矿脚本检测指南_威胁情报_样本定性_文件清除_入口修复
  • ubuntu系统插入u盘不识别
  • 从一个Vite Vue项目开始 - 整体设计
  • 软件设计模式——工厂模式
  • 招行科技笔试——合并区间,移动零
  • 加入AI新引擎,华为数据中台全面智能化升级
  • Java 发布jar包到maven中央仓库(2024年9月保姆级教程)
  • PPTP、L2TP、SSTP协议和HTTP、SOCKS5代理:全面解析与对比
  • Kafka-Manager安装及操作
  • Linux文件IO-基础知识了解及文件描述符
  • 模拟自然的本质:与IBM量子计算研究的问答
  • 函数组件、Hooks和类组件区别
  • 使用php生成图片
  • 第 1 章:Vue 核心
  • Spring Boot 入门指南
  • C++ 字符串中的第一个唯一字符 - 力扣(LeetCode)
  • linux固定串口别名
  • Java发送Outlook邮件:从设置到发送攻略!
  • Qt 每日面试题 -3
  • mysql学习教程,从入门到精通,SQL FULL JOIN 语句(25)
  • mysql离线脚本安装
  • 【C++算法】哈希表
  • vs2022 程序包管理器控制台中文乱码
  • 100个ChatGPT学术指令—助你高效完成文献综述撰写!
  • 深入理解同步和异步与reactor和proactor模式