MySQL数据库管理(一)

目录

1.MySQL数据库管理

[1.1 常用的数据类型​编辑](#1.1 常用的数据类型编辑)

[1.2 char和varchar区别](#1.2 char和varchar区别)

[2. 增删改查命令操作](#2. 增删改查命令操作)

[2.1 查看数据库结构](#2.1 查看数据库结构)

[2.2 SQL语言](#2.2 SQL语言)

[2.3 创建及删除数据库和表](#2.3 创建及删除数据库和表)

[2.4 管理表中的数据记录](#2.4 管理表中的数据记录)

[2.5 修改表名和表结构](#2.5 修改表名和表结构)

3.MySQL的6大约束属性


1.MySQL数据库管理

1.1 常用的数据类型

1.2 char和varchar区别

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同,在存储或检索过程中不进行大小写转换。

下表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:

字节大小

char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是4字节。
varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一个字节。

优劣比较

varchar比char节省磁盘空间。
但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,·而varchar在多次增删改查中会产生一些磁盘空间碎片。

2. 增删改查命令操作

复制代码
mysql -u root -pabc123   #登录数据库

2.1 查看数据库结构

(1)查看当前的 MySQL 版本信息及连接用户名

复制代码
SELECT VERSION();
SELECT USER();

(2) 查看数据库中包含的表

复制代码
SHOW DATABASES;						#大小写不区分,分号";"表示结束

(3) 查看数据库中包含的表

复制代码
use 数据库名;   #切换库
show tables;    #查看库中的表
show tables from 数据库;     #不登录数据库,直接查看数据库中的表信息


(4)查看表的结构(字段)

复制代码
use 数据库名;               #切换数据库
describe 表名               #查看数据库中的表结构信息
describe  数据库名.表名;    #不登录数据库,查看数据库中的表结构信息
可缩写成:desc 表名;



2.2 SQL语言

SQL语句用于维护管理数据库,包括数据查询、数据更新、访向控制、对象管理等功能.

SQL语言分类:

DDL: 数据定义语言,用于创建数据库对象,如库、表、索引等.

DML:数据操纵语言,用于对表中数据进行管理(增、删、改).

DQL:数据查询语言,用于从数据表中查找符合条件的数据记录.

DCL:数据控制语言,用于设置或者更改数据库用户或角色权限.

2.3 创建及删除数据库和表

(1)创建新的数据库

复制代码
create database 数据库名;

(2)创建新的表

复制代码
use  数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型,.....,[primary key(设为主键的字段名)]);     #主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键

(3)删除指定的数据表

复制代码
use  数据库名;
drop table [数据库名].表名;           #如不用use进入库中,则需加上数据库名
drop table 


(4)删除指定的数据库

复制代码
drop  database 数据库名;

2.4 管理表中的数据记录

(1)向数据表中插入新的数据记录

复制代码
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);

(2)查询数据记录

复制代码
use xy101  #进入数据库
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
select * from xy102;
select name,age from xy102 where sex='男';
select * from xy102 where id>=2 and id<=3;
select * from xy102 where id=1 or id=3;
select * from xy102 limit 2;       #只显示头2行
select * from xy102 limit 1,2;    #显示第1行后的前2行(不包括第1行,也就是第2、3行)
select * from xy102\G      #以列表方式竖向显示,结尾没有分号,在Xshell中可以看到效果,在Navicat中无法实现







(3)修改、更新数据表中的数据记录

复制代码
update 表名 set 字段名1=字段值1, [字段名2=字段值2]  [WHERE条件表达式1];
update xy102 set id=4 where age=24;

(3)在数据表中删除指定的数据记录

复制代码
delete from 表名 [where条件表达式];
delete from xy102 where id=4;

2.5 修改表名和表结构

(1)修改表名

复制代码
alter table 旧的表名 rename 新的表名
alter table xy101 rename xy110;

(2)扩展表结构(增加字段)

复制代码
alter table 表名 add 字段 数据类型  default ' 默认值' ;
alter table xy110 add hobby varchar(40) default '和平';
#default '和平':表示此字段设置默认值,爱好不明,可与NOT NULL配合使用


(3)修改字段(列)名,唯一键

复制代码
alter table 表名 change 旧列名 新列名 数据类型  [unique key];
alter table xy110 change age aage int(11) unique key;

#unique key代表唯一键,不可以添加相同值,一张表可以有多个唯一值。

(4)删除字段

复制代码
alter table 表名 drop 字段名;
alter table xy110 drop hobby;

(5)添加、删除约束属性

复制代码
alter table xy110 drop primary key;
alter table xy110 add primary key(name);

3.MySQL的6大约束属性

not null:非空约束

auto_increment:自增约束

案例扩展:

复制代码
use mybl;
create table if not exists info (				  #表示检测要创建的表是否已存在,如果不存在就继续创建。
id int(4) zerofill primary key auto_increment,    #指定主键的第二种方式。其中int(4) zerofill表示若数值不满4位数,则前面用"0"填充,例如0001。
name varchar(10) not null default '匿名',
cardid int(18) not null unique key,
hobby varchar(50));

注意: int(N) 需要和zerofill primary配合使用,否则N的值没有意义

相关推荐
我要见SA姐11 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
xcLeigh1 小时前
聊聊国产化替换:好用数据迁移工具KDMS怎么帮咱们搞定评估难
数据库·sql·数据迁移·kes·kdms
Elastic 中国社区官方博客2 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
我要见SA姐12 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
Nturmoils4 小时前
一份 KDMS 评估报告,怎样排出迁移先后顺序
数据库
这个DBA有点耶4 小时前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构
独泪了无痕4 小时前
SQL函数实战:GREATEST与LEAST的技巧
数据库·sql·mysql
麻辣布丁4 小时前
MySQL篇面试题模拟
mysql
码少女4 小时前
Linux--多路转接之select
java·服务器·数据库
梁辰兴5 小时前
软件工程:软件维护的副作用
数据库·软件工程·梁辰兴·控制方法·软件维护的副作用·副作用类型·副作用原因