打卡--MySQL8.0 三 (SQL语言)

前言:SQL语言介绍

SQL 是 Structured Query Language(结构化查询语言)的缩写。 SQL 是用来与关系数据库进行通信的。 它是关系数据库管理系统的标准语言。 SQL 语句用于执行任务,如更新数据库中的数据,或从数据库中检索数据。 一些常见的使用 SQL 的关系数据库管理系统包括 Microsoft SQL Server、MySQL、PostgreSQL、MariaDB 和 Oracle。

SQL语言分类

DDL:数据定义语言
DCL:数据控制语言
DML:数据操作语言
DQL:数据的查询语言

 SQL优化思路

超全的数据库建表/SQL/索引规范,适合贴在工位上!-腾讯云开发者社区-腾讯云

掌门 MySQL 数据库规约落地及优化实战

一、DDL:数据定义语言

1、DDL 思维导图

2、DDL创建数据库的操作

MySQL--五大约束详解_default约束是 (2)-CSDN博客

--创建数据库,指定字符集、排序规则

CREATE DATABASE mydatabase
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

--查询数据库相关信息

查看当前MySQL8服务器的默认字符集是utf8mb4

SHOW VARIABLES LIKE 'character_set_server';

-- 查看指定数据库的字符集

SELECT DEFAULT_CHARACTER_SET_NAME

FROM information_schema.SCHEMATA

WHERE SCHEMA_NAME = 'mydatabase';

-- 修改数据库的字符集

ALTER DATABASE mydatabase CHARSET utf8mb4;

-- drop 库 (默认不操作)

drop database mydatabase;

生产禁用用户drop database 的命令

mysql -u root -p

REVOKE DROP ON *.* FROM 'myuser'@'localhost';

REVOKE DROP ON *.* FROM 'myuser'@'%';

这条命令会从myuser用户的localhost连接权限中撤销对所有数据库的DROP权限。

如果你想要为所有用户撤销这个权限,可以使用%通配符代替localhost

完成上述操作后,用户myuser将不能使用DROP DATABASE语句。其他用户可能仍然有权限执行DROP DATABASE,因此可能需要对所有相关用户进行类似的操作。

-- 查看表的字符集

SELECT CCSA.character_set_name

FROM information_schema.`TABLES` T,

information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA

WHERE CCSA.collation_name = T.table_collation

AND T.table_schema = 'your_database_name'

AND T.table_name = 'your_table_name';

-- 查看列的字符集

SELECT character_set_name

FROM information_schema.`COLUMNS`

WHERE table_schema = 'your_database_name'

AND table_name = 'your_table_name'

AND column_name = 'your_column_name';

3、MySQL8 数据库的字符类型

数据类型

字符类型

时间类型

二进制类型

4、MySQL8 --表的操作

--使用指定的数据库
use school
--查看数据库中的表
show tables;  
--查看表结构
desc stu;
--查建表语句
show create table stu;
--复制表,一般用户备份
CREATE TABLE ceshi LIKE stu;
-- 复制表结构
CREATE TABLE ceshi LIKE stu where ‘1’=‘0’;

示例:创建学生表

USE testdb;
CREATE TABLE stu(
id      INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
sname   VARCHAR(255) NOT NULL COMMENT '姓名',
sage    TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',
sgender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性别' ,
sfz     CHAR(18) NOT NULL UNIQUE  COMMENT '身份证',
intime  TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '入学时间'
) ENGINE=INNODB CHARSET=utf8 COMMENT '学生表';

删除表

drop table stu;

表中增加列的操作

DESC stu;
-- stu表中增加手机号
ALTER TABLE stu ADD 手机号 VARCHAR(20) NOT NULL UNIQUE COMMENT '手机号';
ALTER TABLE stu ADD wechat VARCHAR(64) NOT NULL UNIQUE  COMMENT '微信号' AFTER sname ;
ALTER TABLE stu ADD num INT NOT NULL COMMENT '数字' FIRST;

删除增加的列

ALTER TABLE stu DROP 手机号;
ALTER TABLE stu DROP wechat ;
ALTER TABLE stu DROP num ;

修改数据列的属性,不建议更改varchar字段变小(短)

ALTER TABLE stu MODIFY sname VARCHAR(128)  NOT NULL ;
ALTER TABLE stu CHANGE sgender sg CHAR(1) NOT NULL DEFAULT 'n' ;
DESC stu;

5、onlieDDL 解析

在MySQL5.6版本之后,对于部分alter table,加入新的执行算法,可以进行DDL时,“并行”现有业务(DML操作)。
可以通过aLter table 时添加 ALGORITHM参数控制使用算法。#例如这种写法
alter  table  t1 add a int ALGORITHM=?;

COPY —— 5.6之前默认适应这种方法,全程无法并行DML
INPLACE —— MySQL 5.6出现的,在开始和提交的短租时间里,不能并行DML(千万级以上表加列需要15分钟以上)
INSTANT —— MySQL 8.0.12出现的,唯一会阻塞只读的时机是在清理旧表结构和表定义缓存时。(更改表结构,速度较快)

https://www.cnblogs.com/dtxdm/p/15828624.html

【MySQL】Online DDL详解-CSDN博客

二、DCL数据控制语言,主要应用于授权和权限回收

1、DCL 思维导图

2、常用命令

ALTER USER
CREATE ROLE
CREATE USER
DROP ROLE
DROP USER
GRANT
RENAME USER
REVOKE
SET DEFAULT ROLE
SET PASSWORD
SET ROLE

SQL语言种类DCL、DDL、DML、TCL-SQL语言开发看这一篇就够了_sql语言分类 dcl tcl-CSDN博客

SQL语言——DCL_sql的数据控制语言dcl指令-CSDN博客

打卡--MySQL8.0 二 (用户权限管理)-CSDN博客

3、MySQL8 新特性,指定SQL执行资源组

    功能--给执行长SQL指定更多的CPU

三、DML语句应用

1、DML语句作用:对表中的数据行进行增、删、改

DML示例:在stu表中插入数据

-- 最标准的insert语句
INSERT INTO stu(id,sname,sage,sg,sfz,intime) 
VALUES
(1,'zs',18,'m','123456',NOW());
SELECT * FROM stu;

--同时录入多行数据
INSERT INTO stu(sname,sfz)
VALUES 
('w55','3444578d8'),
('m6','1212313'),
('aa','123213123123');
SELECT * FROM stu; 

修改stu表的数据

DESC stu;
SELECT * FROM stu;
UPDATE stu SET sname='zhao4' WHERE id=2;
注意:update语句必须要加where。

禁止无条件update


mysql> show variables like  '%update%';

mysql> set global sql_safe_updates=1;

mysql> exit

delete(危险!!)stu表中的数据,删除前先备份,通常使用状态0禁用,1开启 

DELETE FROM stu  WHERE id=3;

全部删除 delete VS truncate 

## 面试题 : 1亿数据,drop table truncate table delete from table 有什么区别?
快慢?
### 速度: delete < drop table < truncate
### delete 是逐行打标记
### drop : 表定义删除, 删除ibd(操作系统rm)
### trucate : 保留表定义,清空表空间,禁用,无法恢复。
## 伪删除(状态列的使用is_deleted)
### 使用update进行替代delete

四、DQL查询语句(select )

1、DQL查询语句思维导图

2、查看MySQL系统参数/环境变量

-- select @@xxx 查看系统参数
SELECT @@port;
SELECT @@basedir;
SELECT @@datadir;
SELECT @@socket;
SELECT @@server_id;

变量示例:

MySQL 变量的详细讲解-CSDN博客

Mysql_脚本宝典

MySQL必知必会——命令总结(mysql的相关命令) | 半码博客

Mysql最常用时间格式转化_mysql时间格式转化-CSDN博客

MySQL(零基础)详解之DQL-CSDN博客

Mysql基础7-约束-腾讯云开发者社区-腾讯云

MySQL8.0 小白入门 46条sql语句练习(学生表 教师表 课程表 分数表)_mysql入门练习表-CSDN博客

https://blog.51cto.com/u_16077267/9219683?articleABtest=0

Mysql压力测试(sysbench)_sysbench mysql-CSDN博客

作为DBA,你不得不掌握的压测工具-腾讯云开发者社区-腾讯云

MySQL 工具集:官方性能测试工具 mysqlslap-腾讯云开发者社区-腾讯云

MySQL limit 使用说明

select * from  testdb.student limit 3                (展示1~3的数据)
select * from  testdb.student limit 3,2               (展示不包含本行数据)
select * from  testdb.student limit 3 offset 2   (展示包含本行)

五、MySQL 函数

MySQL函数大全-CSDN博客

MySQL日期时间操作函数(全的)-九五小庞-CSDN博客

六、SQL 流程控制 

MySQL——流程控制函数_mysql流程控制函数-CSDN博客

七、MySQL 变量

MySQL变量的使用_mysql 用户变量-CSDN博客

session 级别更改参数设置,退出回话后失效。

global 级别更改参数设置,数据库重启后生效

mysql variables_mysql关于variable的总结-CSDN博客

MySql中variables系统变量详解_mysql variables-CSDN博客

MySQL 8.0支持在线更改参数

mysql: 为什么我设置read_only后用户还是可以读写_为什么数据库开启了read_only=1,还是可以写操作呢-CSDN博客

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值