mysql中数据定义和数据控制语言_MySQL的DDL数据定义语言和DCL数据控制语言
SQL客户端slient内置命令
db01 [world]>help
\c 类似于ctrl+c,结束上一条命令
\G 格式化输出,一般针对列特别多的场景使用
exit(\q) 退出当前会话
source 导入sql脚本,类似于<
system 调用linux中的命令,比如system cd /tmp && ls 调用linux中的命令
DDL库定义
DDL数据定义语言指对于库和表定义的创建删除修改
1.创建数据库
show databases; 查看所有数据库
create database school; 创建school数据库
create schema sch; 创建数据库sch
create database test charset utf8; 创建字符集为utf8的test数据库;
show charset; 查看数据库支持的所有字符集
show collation;看字符集支持的校队规则
create database xyz charset utf8mb4 collate utf8mb4_bin;创建字符集为utf8mb4且校队规则为大小写敏感的xyz数据库
show create database xyz; 查看xyz数据库详细信息
注:在MySQL中,Create Schema和Create Database的作用是一样的
建库规范
1.库名不能有大写字母,不能使用内置字符
2.建库要加字符集
3.库名不能有数字开头
4.库名要和业务相关
建库标准语句mysql> create database db charset utf8mb4;
mysql> show create database db;
2.删除数据库
drop database xyz;
(生产中禁用命令)
3.修改数据库
show create database school;查看school库的详细信息
alter database school charset utf8;修改school库的字符集
注意:修改字符集,修改后的字符集一定是原字符集的严格超集
4.查询数据库
show databases; 查看所有数据库
show create database school;查看school库的详细信息
DDL表定义
语法结构
create table stu(
列1 属性(数据类型、约束、其他属性) ,
列2 属性,
列3 属性
)
1.创建表
use school;
create table stu(
id int not null primary key auto_increment comment '学号',
name 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 '学生表';
建表规范:
1. 表名小写
2. 不能是数字开头
3. 注意字符集和存储引擎
4. 表名和业务有关
5. 选择合适的数据类型,剪短,足够使用
6. 每个列都要有注释
7. 每个列设置为非空,无法保证非空,用0来填充。
8. 必须有主键
9. 每个列尽量设置not null
10.列名不要太长
2.删除表
drop table t1;
(生产中禁用命令)
3.表查询
use school 进入到school库
show tables; 显示school库下所有的表名
desc stu;显示school库的stu表的所有列信息
show create table stu;显示school库的stu表的建表语句
create table ceshi like stu;创建一个和stu表一样的ceshi表
desc ceshi;查看ceshi表
4.修改表
修改后的B表是原始表的严格超集。表名无法修改
alter table 表名 add (column) ... column可以省略
在stu表中添加qq列
show tables; 显示school库下所有的表名
desc stu;显示school库的stu表的所有列信息
alter table stu add qq varchar(20) not null unique comment 'qq号';
在name后加微信列
alter table stu add wechat varchar(64) not null unique comment '微信号' after name;
在id列前加一个新列num
alter table stu add num int not null comment '数字' first;
把刚才添加的列都删掉(危险)
alter table stu drop num;
alter table stu drop qq;
alter table stu drop wechat;
修改name数据类型的属性
alter table stu modify name varchar(128) not null;
修改属性一定要把与原表列重叠的的属性都加上
将sgender 改为 sg ,数据类型改为 CHAR 类型
alter table stu change sgender sg char(1) not null default 'n';
注意:modify只能改字段数据类型完整约束,不能改字段名,但是change可以。change修改的范围和力度要比modify 大。
修改数据类型,修改字段位置 ---用modify;修改名字 --就用change
线上DDL(alter)操作对于生产的影响
SQL审核平台:yearing,incception
扩展:MySQL元数据类似于linux的inode信息。
说明:在MySQL中,DDL语句在对表进行操作时,是要锁‘元数据表’的。此时所有修改类的命令无法正常运行,所以在是对于大表,业务繁忙的表,进行线上DDL操作时
,要谨慎,尽量避开业务繁忙期,否则会影响线上业务 。
在需要紧急上线情况下,可以使用pt-osc(pt-online-schema-change),gh-ost工具(在线DDL工具),减少锁表时间,对业务的影响。
mysql8.0以后已经整合了这个工具,可以不用pt工具。
DCL应用
grant all on *.* to root@'10.0.0.%' identified by '123'; 授权用户
show grants for root@'10.0.0.%';查看授权
revoke delete on app.* from app@'10.0.0.%';回收权限
mysql中数据定义和数据控制语言_MySQL的DDL数据定义语言和DCL数据控制语言相关推荐
- mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么
mysql中唯一索引的关键字是unique index.创建唯一索引可以避免数据出现重复.唯一索引可以有多个,但索引列的值必须唯一,索引列的值允许有空值.创建唯一索引可以使用关键字UNIQUE随表一同 ...
- mysql中值换行显示为乱码_MySQL数据移植中的乱码问题
mysql移植含有中文的数据时,很容易出现乱码问题.很多是在从mysql4.x向mysql5.x移植的时候出现.mysql的缺省字符集是latin1,在使用mysql4.x的时候,很多人都是用的lat ...
- MySQL中引入存储引擎意义是_mysql学习九:存储引擎、存储过程和函数的引入
存储引擎: 存储引擎是mysql特有的,共有7种,常用的有myisam.memory.innodb 查看表的存储引擎: show create table 表名; 修改表的存储引擎: alter ta ...
- mysql中gbk编码汉字和英文_MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题...
MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的. character-set-database:数 ...
- mysql中游标能不能更新数据库_MySQL与MariaDB中游标的使用
本文目录: 1.游标说明 2.使用游标 3.游标使用示例 1.游标说明 游标,有些地方也称为光标.它的作用是在一个结果集中逐条逐条地获取记录行并操作它们. 例如: 其中select是游标所操作的结果集 ...
- mysql中的存储过程是什么意思_mysql存储过程是什么
mysql存储过程:首先操作数据库语言SQL语句在执行的时候需要要先编译:然后执行,而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数来调用执 ...
- mysql中创建唯一索引的关键字_MySQL中创建唯一索引的关键字是_______ 。
[判断题]判断零件键槽的尺寸标注是否正确.[图片] [单选题][图片] [单选题]读零件图,回答问题:1. C3表示倒角为( )度?2. C2表示倒角锥台高度为( )?[图片] [单选题]如图为套筒零 ...
- mysql 中存储引擎是什么意思_mysql常用的存储引擎是什么
mysql常用的存储引擎是什么 发布时间:2020-12-02 09:35:04 来源:亿速云 阅读:62 作者:小新 这篇文章将为大家详细讲解有关mysql常用的存储引擎是什么,小编觉得挺实用的,因 ...
- mysql中if在oracle怎么用_MySql和Oracle的使用
本文档是一个记录文档,会不定时更新使用过程中遇到的差异问题 本文档记录MySql和Oracle在使用中要注意的问题,也包括两者使用上的差异问题 字符串拼接函数 CONCAT MySql MySql的 ...
最新文章
- BPM实例分享:如何设置开窗高度与宽度?
- DataGridView 添加ComboBox
- 【C/C++】知识点
- openGauss Summit 2021云和恩墨分论坛即将开启
- python post与get的区别_Python Requests库 Get和Post的区别和Http常见状态码
- 删除元素值最大的结点
- 快速入门人工智能的方法,持续更新ing
- 十种深度学习算法要点及代码解析
- php防伪溯源x系统_区块链溯源防伪追溯系统开发解决方案
- JavaScript开发人员需了解的工具内容
- 学习爬虫的第三天 (bs4 \ urllib \ xlwt \ re 的练习爬取豆瓣top250保存成excel格式)
- 第六章 自然的数学化和分析化
- 移动前端开发需要注意的20个要点
- 在CentOS7上使用LXC管理容器
- 云桌面是什么-如何选择云桌面?
- 小尺寸 GPS 北斗 GNSS 全向内置天线方案 CA-G01 CrossAir贴片天线
- PHP 警告 Warning: Unknown: Input variables exceeded 1000. 解决方法
- python-面向对象的编程
- 发动机连杆产品配置管理PDM解决方案
- systemd、upstart和system V
热门文章
- 用计算机听音乐和看电影的ppt,五年级下册信息技术课件-第六课 用计算机听音乐和看电影 川教版 (共13张PPT)...
- RabbitMQ之五种消息模型
- linux Tcpdump 抓包 win大小异常
- [Swift]LeetCode478. 在圆内随机生成点 | Generate Random Point in a Circle
- Android编程知识点3-Intent
- [转]基于Storm的实时数据处理方案
- Android Root原理初探
- Appium 解决手势密码 (java篇)
- Yii2 behaviors中verbs access的一些理解
- Hadoop 在 windows 7 64位的配置(一)|非cygwin