解锁MySQL数据库基础命令:从入门到精通的实战指南

  •  作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
  •  座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
  •  个人主页:团儿.-CSDN博客

前言:

在当今信息化社会,数据管理是每个企业和个人都无法回避的问题。

MySQL数据库以其开源、易用、性能高等特点,成为了众多开发者和企业的优先选择。

今天,我们一起来探讨一下MySQL数据库的基础命令应用,帮助大家更好地掌握这一技能,提升工作效率。


一.mysql内置的功能

1.连接数据库

 -u     -p      -S     -h     -P     -e       <

例子:

mysql -uroot -p -S /tmp/mysql.sock(本地登录)

mysql -uroot -p -h10.0.0.51 -P3306(远程登录)

-e 免交互执行sql语句

        mysql -uroot -p -e "show databases;"

< 恢复数据

        mysql -uroot -p123 < /root/world.sql

2.内置命令

 help 打印mysql帮助

 \c  ctrl+c 结束上个命令运行

 \q quit; exit; ctrl+d 退出mysql

 \G 将数据竖起来显示

 source 恢复备份文件


二.SQL基础应用

1.SQL介绍

结构化的查询语言

关系型数据库通用的命令

遵循SQL92的标准(SQL_MODE)

2.SQL常用种类 *****


三.字符集 (charset)

相当于MySQL的密码本(编码表)

show charset;

utf8   : 3个字节

utf8mb4 (建议): 4个字节,支持emoji

ps:

创建数据库,同时指定字符集:

create database yy default charset utf8mb4;

修改默认字符集:

alter database hehe default charset utf8mb4;

四.数据类型介绍

1.数字

整数

tinyint 0-255

int    -2^32-2^32

浮点数 float

2.字符串  *****

char(100)      

定长字符串类型,不管字符串长度多长,都立即分配100个字符长度的存储空间,未占满的空间使用"空格"填充

varchar(100)

变长字符串类型,每次存储数据之前,都要先判断一下长度,按需分配此盘空间.

会单独申请一个字符长度的空间存储字符长度(少于255,如果超过255以上,会占用两个存储空间)

如何选择这两个数据类型?

少于255个字符串长度,定长的列值,选择char

多于255字符长度,变长的字符串,可以选择varchar

enum 枚举数据类型

数据不能为数字

address enum('sz','sh','bj'.....)

  1    2    3   

悬念,以上数据类型可能会影响到索引的性能


3 .时间

datetime :

范围为从 1000-01-01 00:00:00.000000 至 9999-12-31 23:59:59.999999。

timestamp:

范围为从 1970-01-01 00:00:00.000000 至 2038-01-19 03:14:07.999999。


五.DDL的应用

1.库:

创建库并指定字符编码和校对集:

create database wordpress default charset utf8mb4 collate utf8mb4_bin;

注:若不加字符编码和校对集则为:


查看创库语句:

show create database wordpress;


修改数据库字符集

注意: 一定是从小往大了改,比如utf8--->utf8mb4.

目标字符集一定是源字符集的严格超级.

create database test;

show create database test;

alter database test charset utf8mb4 collate utf8mb4_bin;


查看所有库:

show databases;

切换库:

use wordpress;

删除数据库(不代表生产操作)

drop database test;

2.关于库定义规范 *****

库名使用小写字符

库名不能以数字开头

不能是数据库内部的关键字

必须设置字符集和校对集.


六.DDL-表

1.列属性

PRIMARY KEY : 主键约束,表中只能有一个,非空且唯一.

NOT NULL    : 非空约束,不允许空值

UNIQUE KEY  : 唯一键约束,不允许重复值

DEFAULT     : 一般配合 NOT NULL 一起使用.

UNSIGNED    : 无符号,一般是配合数字列,非负数

COMMENT     : 注释

AUTO_INCREMENT : 自增长的列

CREATE TABLE stu (

id INT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '学号',

sname VARCHAR(255) NOT NULL  COMMENT '姓名',

age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',

gender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性别',

intime DATETIME NOT NULL DEFAULT NOW() COMMENT '入学时间'

) ENGINE INNODB CHARSET utf8mb4;

注:默认自增列增量为1,初始值也为1,但可以用下列参数修改。

auto_increment_increment=10   增量为10

auto_increment_offset=10   初始值为10


2.建表规范 *****

表名小写字母,不能数字开头,

不能是保留字符,使用和业务有关的表名

选择合适的数据类型及长度

每个列设置 NOT NULL + DEFAULT .对于数据0填充,对于字符使用有效字符串填充

每个列设置注释

表必须设置存储引擎和字符集

主键列尽量是无关列数字列,最好是自增长

enum类型不要保存数字,只能是字符串类型


3.创建表,指定列和数据类型:

create table t1 (id int primary key,name varchar(20));

创建一个表结构一样的表

create table test like stu;

查询建表信息

show tables; #显示所有表

show create table stu;  #显示创表语法、存储引擎、字符集

desc stu; #显示表的列结构

删表(不代表生产操作)

drop table test;

修改

在stu表中添加qq列 *****

desc stu;

alter table stu add qq varchar(20) not null comment'qq号';

修改sname数据类型的属性 ***

desc stu;

alter table stu change gender sex char(4) not null comment'性别';

七.DCL

1.创建用户并赋权:

grant all on hehe.* to zhangsan@'%' identified by '123.com';

撤销删除权限:

revoke drop,delete on hehe.* from zhangsan@'%';

查看权限:

show grants for zhangsan@'%';

查看用户:

select user,host from mysql.user;


八.DML

insert

desc stu;

最偷懒

insert into stu values(1, 'zs', 18, 'm', '2023-04-01 11:30:00', '1119898630');

select * from stu;


最规范

insert into stu(id,sname,age,sex,intime) values(2, 'ls', 20, 'm', '2023-04-01 11:30'');

select * from stu;


针对性的录入数据

insert into stu(sname,age,sex) values('w5',19,'m');

select * from stu;

一次性录入多行

Insert into stu(sname,age,sex)

values

('aa',11,'m'),

('bb',12,'f'),

('cc',13,'m');


select * from stu;

update(一定要加where条件)

update stu set sname='aaa';

select * from stu;

update stu set sname='bb' where id=6;

select * from stu;


delete (一定要有where条件)

delete from stu;

select * from stu;

delete from stu where id='7';

select * from stu;

注:删除过的行若再添加会跳过之前所删编号

select * from stu;

delete from stu;

insert into stu(sname,age,sex) values ('aa',11,'m'), ('bb',12,'f'), ('cc',13,'m');

select * from stu;


truncate和delete:

都是删除表中行记录

但delete不会重置自增列,会生成日志;

truncate不能删除某行,只会删除全部,不做日志,重置自增列。

truncate table stu;

生产中屏蔽delete功能

使用revoke去除用户drop和delete权限


期待您的关注~

  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值