Mysql基础(一)DDL、DML、DQL、DCL 扫盲之DDL语句

一  扫盲

SQL语句根据其'功能'主要分为'四类':DDL、DML、DQL、DCL

说明: 本'篇章'只会粗略的分类,不会'展开'细节讲解

1、DDL(Data Definition Language)

说明: 是一组用于定义和管理数据库'结构'的语句

2、DML(Data Manipulation Language)

说明: 用于对数据库中的'数据'进行操作,包括INSERT、UPDATE、DELETE等语句

3、DQL(Data Query Language)

说明:用于'查询'数据库中的数据,包括'SELECT'语句

3、DCL(Data Control Language)--> '运维需要掌握的'

说明: 用于定义数据库的'访问权限'和'安全性',包括GRANT、REVOKE等语句

4、TCL(Transaction Control Language)

说明: 用于控制数据库中的事务,包括BEGIN、COMMIT、ROLLBACK等语句

主从同步: show master status、change master to、start slave、show slave status

+++++++++++++++++++++ "分割线"  +++++++++++++++++++++

思考: show、desc、slave 属于'什么'语句?

desc: 只能查看'表'结构                   --> 'desc table_name'

show: 可以用来'查看创建语句'和查看数据库、表 --> 'show create table table_name \G'

①   DDL

Data Definition Language: DDL是数据'定义'语言的缩写,用来'定义'数据库'对象'

补充: 是一组用于'定义'和'管理'数据库'结构'的语句

通俗讲: 对数据库内部的'对象'进行'创建'、'删除'、'修改'等操作的语句,不涉及'表数据'的修改

场景: 

  1、DDL语句用于创建、修改和删除数据库'对象'(如表、索引、视图、存储过程等)

  2、以及定义数据的'约束'和权限

概念:'库 database'、'表 table '、'表的行称为记录 record'、'列 字段 column'

DDL和DML'区别'是: DML只是对'表内部'的'数据'进行'操作',而不涉及'表的定义'、'结构的修改'

常见'DDL'语句:

  1、CREATE:  用于'创建'数据库对象,如CREATE '(DATABASE、TABLE、INDEX、VIEWS)'等

  2、ALTER:   用于'修改'数据库对象的'结构',如ALTER TABLE、ALTER INDEX等

  3、DROP:    用于'删除'数据库对象,如DROP DATABASE、DROP TABLE、DROP INDEX等

  4、TRUNCATE:用于'删除'表中的所有'数据',但'保留表结构'.

注意点: 

  1、执行DDL语句通常需要具备对应的'权限'

  2、比如对于'创建'、'修改'和'删除'数据库对象的操作,通常需要具备足够的'管理员权限'

②  CREATE

③  create user

说明: 开发侧'了解'该语句即可,'运维'或'DBA'需要'重点'掌握

++++++++++++++++  "背景"  ++++++++++++++++

1、在对 mysql 的'日常管理'和'实际'操作中

2、为了数据库的'安全',避免'恶意用户'使用 'root 高风险账号' 控制数据库

3、通常我们会'创建'一系列具备'适当权限'的账号  --> '按需创建'

4、这样我们就可以'不用或少用 root 账号'登录NySQL数据库,在一定程度上确保'数据的安全访问'

相关参考

1、 创建用户wzj,密码为'xxxxxx',允许在'任何远程主机上'登录MySQL

CREATE USER 'wzj'@'%' IDENTIFIED BY 'xxxxxx';

2、 创建用户wzj,密码为'xxxxxx',允许在主机192.168.100.1上登录MySQL

CREATE USER 'wzj'@'192.168.100.1' IDENTIFIED BY 'xxxxxx';

3、 创建用户wzj,密码为'空',允许在'任何远程主机上'登录MySQL

CREATE USER wzj

mysql 数据库密码复杂度如何查看

1、mysql数据库用户在'创建的时候'默认会赋予'USAGE'权限,这个权限'很小',几乎为'0'

说明: 只能'连接数据库'和'查询information_schema'的权限

补充: 如果'只有 USAGE'权限,那么这个用户还是可以'修改'自己密码的

1、授权'用户'操作数据库的权限   --> 授权'用户'对'数据库的所有表'权限

GRANT SELECT, INSERT, UPDATE ON database_name.* TO 'wzj'@'%';

GRANT ALL PRIVILEGES  --> '所有权限'
 
2、刷新权限,使'授权生效'

FLUSH PRIVILEGES;

3、查看用户 wzj 的信息以及权限

show grants for 'wzj'@'%';

grant all PRIVILEGES on *.* to wzj@'%' identified by 'xxx';  授权并创建用户

当用户同时拥有 UASGE 和 GRANT OPTION 权限时会发生什么?

All或All privileges:除'Grant option'之外,代表'其它所有'权限

④  create database

思考: 数据库的'编码'会影响数据库'对应表'的编码吗?

细节:中文请使用'utf8mb4'

帮助文档的解读 

create database if not exists wzj character set utf8; 

效果:数据库不存在,则'创建'该数据库;如果'存在',则'不创建',同时设置数据库的'默认字符集'

⑤  create table  创表

外键的作用   unique 唯一约束   mysql8.0  check才生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值