一 扫盲
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',允许在'任何远程主机上'登录MySQLCREATE USER 'wzj'@'%' IDENTIFIED BY 'xxxxxx';2、 创建用户wzj,密码为'xxxxxx',允许在主机192.168.100.1上登录MySQLCREATE USER 'wzj'@'192.168.100.1' IDENTIFIED BY 'xxxxxx';3、 创建用户wzj,密码为'空',允许在'任何远程主机上'登录MySQLCREATE 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才生效