mysql数据库-mysql数据定义语言DDL (Data Definition Language)归类(六)
0x01
创建数据库并指定字符集和排序规则 -- 三种实例写法
create database temptab2 character set utf8 collate utf8_general_ci;
create database temptab3 charset utf8 collate utf8_general_ci;
create database temptab4 character set=utf8 collate utf8_general_ci;
查看字符集和排序规则的命令
show charset;
show collation;
删除数据库
drop database temptab3;
进入数据库
use temptab4;
显示所有数据库
show databases;
显示数据库创建过程
show create database mysql;
显示数据库版本号
select version();
显示当前在哪个数据库
select database();
0x02
数据类型是(略)
0x03
创建表
基本形式:create table [if not exists] 表名 (字段列表 [,索引或约束列表]) [表选项列表])
根据以上格式分别解说如下
字段定义形式:字段名 字段类型 [字段属性列表] ------ int not null auto_increment 等等
- primary key:设定为主键。主键的本质是表示“该表中该字段值可以唯一确定某行数据”,并具有2个隐含含义:唯一性,不为空。
- unique [key]:设定为唯一(键),即表中所有行的的数据在该字段中的值不能有重复。
- not null|null:设定该字段是否可空(可以放置空值null),默认不设置就是表示可为空。
- auto_increment:设定自增长,表示一个整数类型的字段的值可以“自动递增取值”,设置后其必须同时设置为一个主键或唯一键(即[primary] key, unique [key])。一个表只能有一个auto_increment属性的字段。
- default 默认值:设定默认值,表示当插入新数据的时候如果该字段没有给值,就会自动使用该默认值。
- comment '字段注释':设置字段的注释文字,用单引号引起来。
- 什么是索引:索引就是数据库内部对某个表的所有数据预先进行的某种排序。一 个表可以设定(添加)多个索引,则就会有多个排序。就如新华字典,是“所有汉字”的一个纸质表,其默认是按拼音的排序,同时前面还有个部首表,此部首查表 就是该新华字典所有汉字的一个“索引”。对我们程序员的应用来说,索引只是一个对某个表的“设定”,一两个单词而已,而在数据库内部,数据库管理系统会创 建并维护一个跟当前表关联的“索引表”,该表数据已经按某种方式排好了序。给一个表建立索引的目的是加速数据的读取。但同时加重了数据库增删改命令的负 担,因而需要权衡考虑是否需要给某个表的某个字段设定索引。有如下几种索引:
- 普通索引:没有特定其他作用,就只是建立索引。设定形式:index|key [索引名] (字段名1[,字段名2,...])。
- 唯一索引:设定某字段为唯一,且建立索引。设定形式: unique [key] [索引名] (字段名1[,字段名2,...])。
- 主键索引:设定某字段为主键,且建立索引。设定形式:primary key [索引名] (字段名1[,字段名2,...])。主键索引是唯一索引的特例,也是唯一索引的“加强”,主键索引本身就包含了“唯一性”,同时主键索引的字段不能为空 值(null)。有时候需要用多个字段来确定主键,此时称为“联合主键”。联合主键的意思是多个(2个以上)的字段合在一起才算主键设定。比如某个学生管 理系统中有个“成绩表”,记录了一个学生整个大学所有所学课程的考试成绩。则该表中至少要记录3项信息:学生ID,课程名称,成绩。且此时我们要查到一个 成绩,必须确定学生ID和课程名,才可能确定该成绩。我们不能说该学生成绩是多少,也不能说某门课成绩是多少,而必须说某个学生的某门课成绩是多少。此 时,学生ID和课程名称合起来才能确定一个有意义的数据,这这个字段就构成“主键”。如果没有主键,则可能会造成数据的冲突或歧义,比如:工资表,如果没有主键,同名时就无法区分谁的工资是多少。成绩表,如果没有主键,则可能出现某个人的某门课有多个成绩数据。
- 全文索引:设定某字段可进行全文查找。 设定形式: fulltext [index][索引名] (字段名1[,字段名2,...])。
- 什么是约束?故名思义,约束就是对表中数据的某种限制。当然此限制是我们人为加上去的为了使我们的数据更具有“合理性”和“安全性”。数据的最基 本约束是“数据类型”,比如保存工资的字段,就不应该存入字符串值(这一点来说,excel表格就做不到),此时设定其数据类型就解决了此问题。但我们这 里说的约束,是在现有已经设定好数据类型基础上的进一步“要求”,比如,一个学校的学生学号,有一个要求就是“不能重号”,则我们可以给该字段设定“唯一 性”约束它,这就是唯一约束。mysql有如下几项约束:
- 主键约束:设定形式:[constraint] primary key (字段名1[,字段名2,...])。含义同字段的同名属性。
- 唯一约束:设定形式:[constraint] unique [index] (字段名1[,字段名2,...])。含义同字段的同名属性
- 外键约束:设定形式:[constraint] foreign key (字段名1[,字段名2,...]) references 表名(字段名1[,字段名2,...])。
- 外键的定义:外键就是关系数据库的一个基本特征的实现,表明该字段的值是跟外部的某个表的某个字段的值“对应”的,或者也可以说来自于该外部的某个表的某 个字段值。如果给一个设定了外键的字段插入一个值,而该值并没有在该外键所指定的外部表的对应字段中出现,则该值就会插入失败,这也就是数据库内部的“约 束机制”(使我们的数据更“纯净”)。
- 非空约束:其实就是字段属性中的“not null”,只能在字段上设置。
- 默认约束:其实就是字段属性中的“default 默认值”,只能在字段上设置。
- 检查约束:指使用一定的判断表达式来对某个字段中的值进行“合理性”限制,比如年龄字段,虽可以设定为tinyint,但其实仍然会超出合理范围,则可以设定检查约束,只能输入0-120作为“合法年龄”数据。不过,当前mysql版本尚不支持。
5.表选项列表:多个表选项的设定项,相互之间用逗号或空格隔开,可选。常用表选项如下:
- ENGINE=存储引擎名
- 存储引擎也叫“表类型”,是指一个表中的数据以何种方式存放在文件或内存中。不同的存储引擎(表类型)提供不同的性能特性和可用功能。没 有一种各方面都又具有最佳性能又具有各种功能的存储引擎。我们要做的是要根据数据的具体使用情形(需求)来选择合适的存储引擎,有的要读取速度快,有的要 写入速度快,有的要具有高安全可靠性,有的要海量存储,等等。常用的存储引擎是innoDB(默认)和Myisam。
- CHARACTER SET=要使用的编码名 [COLLATE=要使用的校对集名 ]
- auto_increment = 自增长字段的起始值
- comment='表的注释说明文字‘
6.修改表
- 修改表是指修改表的结构或特性。理论上创建一个表能做到的事情,修改表也能做到。修改表有二三十项修改项,包括增删改字段,增删索引,增删约束,修改表选项等等。举例如下:
- 添加字段:alter table 表名 add [column] 新字段名 字段类型 [字段属性列表];
- 修改字段(可改名):alter table 表名 change [column] 旧字段名 新字段名 新字段类型 [新字段属性列表];
- 修改字段(只改属性):alter table 表名 modify [column] 字段名 新字段类型 [新字段属性列表];
- 删除字段:alter table 表名 drop [column] 字段名;
- 添加普通索引:alter table 表名 add index [索引名] (字段名1[,字段名2,...]);
- 添加主键索引(约束):alter table 表名 add primary key (字段名1[,字段名2,...]);
- 添加外键索引(约束):alter table 表名1 add foreign key (字段1,[,字段名2,...]) references 表名2(字段1,[,字段名2,...]);
- 添加唯一索引(约束):alter table 表名 add unique (字段名1[,字段名2,...]);
- 添加字段默认值(约束):alter table 表名 alter [column] 字段名 set default 默认值;
- 删除字段默认值(约束):alter table 表名 alter [column] 字段名 drop default;
- 删除主键:alter table 表名 drop primay key;#每一个表最多只能有一个主键
- 删除外键:alter table 表名 drop foreign key 外键名;
- 删除索引:alter table 表名 drop index 索引名;
- 修改表名:alter table 表名 rename [to] 新表名;
- 修改表选项:alter table 表名 选项名1=选项值1,选项名2=选项值2,...;
7.删除表
drop table [if exists] 表名;
8.其他相关语句
- 显示所有表: show tables;
- 显示某表的结构: desc 表名; 或:describe 表名;
- 显示某表的创建语句:show create table 表名;
- 重命名表:rename table 旧表名 to 新表名;
- 从已有表复制表结构:create table [if not exists] 新表名 like 原表名;
- 从已有表复制表结构:create table [if not exists] 新表名 select * from 原表名 where 1<>1;
- 创建索引:create [unique | fulltext] index 索引名 on 表名(字段名1[,字段名2,...])。这里省略unique或fulltext,那就是普通索引。实际上此创建索引语句,会在系统内部映射为一条 “alter table”的添加索引语句。
- 删除索引:drop index 索引名 on 表名。实际上,此语句同样被映射为一条“alter table”的删除索引语句
9.视图定义语句
- 什么是视图?视图是一个虚拟表,其内容由一条查询语句来定义。也可以认为,视图就是一条select语句的查询结果,只是预先放在数据库中而已。我们可以将此查询结果(有行有列有字段名)当作一个表来使用。
- 创建视图:create view 视图名 [(列名1,列名2,...)] as select语句;
- 视图名不能跟表名同名——因为他们都是隶属于数据库的“对象”;
- 视图的默认列名就是定义视图的时候的select语句中设定的列名;
- 视图定义的时候也可以指定自己的列名,但此时指定的列名数应该跟select语句的列名数相等;
- select语句可以从多个表中取用数据,甚至还可以从其他视图中取数据
- 修改视图: alter view 视图名 [(列名1,列名2,...)] as select语句;
- 删除视图: drop view [if exists] 视图名;
mysql数据库-mysql数据定义语言DDL (Data Definition Language)归类(六)的更多相关文章
- <MySQL>入门三 数据定义语言 DDL
-- DDL 数据定义语言 /* 库和表的管理 一.库的管理:创建.修改.删除 二.表的管理:创建.修改.删除 创建:create 修改:alter 删除:drop */ 1.库的管理 -- 库的管理 ...
- 【MySQL笔记】数据定义语言DDL
1.创建基本表 create table <表名> (<列名><数据类型>[列级完整性约束条件] ...
- MySQL之数据定义语言(DDL)
写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写. SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition L ...
- Mysql基础2-数据定义语言DDL
主要: 数据库操作语句 数据表操作语句 视图定义语句 数据库表设计原则 DDL: Data Definition Language 数据定义语言 数据库操作语句 创建库 创建数据库: create d ...
- ODPS SQL <for 数据定义语言 DDL>
数据定义语言:(DDL) 建表语句: CREATE TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...
- 数据定义语言(DDL Data Definition Language)基础学习笔记
创建数据库 create database if not exists STUDY character set utf8 ; 查看新建数据库的语句 SHOW CREATE DATABASE STUDY ...
- 30441数据定义语言DDL
数据定义:指对数据库对象的定义.删除和修改操作. 数据库对象主要包括数据表.视图.索引等. 数据定义功能通过CREATE.ALTER.DROP语句来完成. 按照操作对象分类来介绍数据定义的SQL语法. ...
- Hive 5、Hive 的数据类型 和 DDL Data Definition Language)
官方帮助文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL Hive的数据类型 -- 扩展数据类型data_t ...
- MySQL中的DDL(Data Definition Language,数据定义语言)
create(创建表) 标准的建表语句: create table [模式名.]表名 ( #可以有多个列定义 columnName1 dataType [default expr(这是默认值)], . ...
随机推荐
- 题解 洛谷P2959 【[USACO09OCT]悠闲漫步The Leisurely Stroll】
原题:洛谷P2959 不得不说这道题的图有点吓人,但实际上很多都没有用 通过题上说的“三岔路口”(对于每一个节点有三条连接,其中一条连接父节点,另外两条连接子节点)和数据,可以那些乱七八糟的路和牧场看 ...
- Analysis分析器
一.Analysis简介 场景执行过程中,loadrunner收集执行过程中的数据,存储在扩展名为.lrr的文件中,Analysis分析器打开这个文件,对文件信息进行处理,并生成图和报告. 数据分析不 ...
- Postman学习之Authorization
前言:本章将学习Postman当中的授权——Authorization 一.简介 Authorization顾名思义就是授权的意思,那是给谁授权呢?又有多少种授权的方式呢?Authorization是 ...
- kafka消费者重试逻辑的实现
背景 在kafka的消费者中,如果消费某条消息出错,会导致该条消息不会被ack,该消息会被不断的重试,阻塞该分区的其他消息的消费,因此,为了保证消息队列不被阻塞,在出现异常的情况下,我们一般还是会ac ...
- Redux:异步操作
最近状态不太好,学习redux的异步操作花的时间比想象的多,这里尽量清晰简要的表述一下在redux中怎么实现异步操作. 先回顾一下同步操作: 我们用redux执行同步的时候,都是先发起一个dispat ...
- day04:购物车的练习(20170216)
product_list = [ ('IPhone',5900), ('Mac pro',9800), ('Bike',800), ('Watch',16000), ('Coffee',35), (' ...
- js 文本框只能输入数字和点
http://www.jb51.net/article/51102.htm 手机端 只能输入数字,能输小数点.且只能2位小数 oninput="this.value=this.value.r ...
- Oracle备份与恢复详解
http://www.360doc.com/content/10/1015/15/3267996_61218717.shtml --------摘自 360doc 为了能有效地备份和恢复数据库,建议大 ...
- 让SpringBoot自动化配置不再神秘
本文若有任何纰漏.错误,还请不吝指出! 注:本文提到的Spring容器或者Bean容器,或者Spring Bean容器,都是指同一个事情,那就是代指BeanFactory.关于BeanFactory, ...
- sklearn学习:为什么roc_auc_score()和auc()有不同的结果?
为什么roc_auc_score()和auc()有不同的结果? auc():计算ROC曲线下的面积.即图中的area roc_auc_score():计算AUC的值,即输出的AUC 最佳答案 AUC并 ...