- 作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
- 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
- 个人主页:团儿.-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权限
期待您的关注~