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] 表名 (字段列表 [,索引或约束列表]) [表选项列表])

根据以上格式分别解说如下

1.字段列表:多个字段的定义项,相互之间用逗号隔开;

  字段定义形式:字段名 字段类型 [字段属性列表]     ------ int not null auto_increment   等等

  

2.字段属性列表由多个字段属性构成,相互之间用空格隔开;  

  1. primary key:设定为主键。主键的本质是表示“该表中该字段值可以唯一确定某行数据”,并具有2个隐含含义:唯一性,不为空。
  2. unique [key]:设定为唯一(键),即表中所有行的的数据在该字段中的值不能有重复。
  3. not null|null:设定该字段是否可空(可以放置空值null),默认不设置就是表示可为空。
  4. auto_increment:设定自增长,表示一个整数类型的字段的值可以“自动递增取值”,设置后其必须同时设置为一个主键或唯一键(即[primary] key, unique [key])。一个表只能有一个auto_increment属性的字段。
  5. default 默认值:设定默认值,表示当插入新数据的时候如果该字段没有给值,就会自动使用该默认值。
  6. comment '字段注释':设置字段的注释文字,用单引号引起来。

 

3.索引列表 多个索引的定义项,相互之间用逗号隔开,可选。

  1. 什么是索引:索引就是数据库内部对某个表的所有数据预先进行的某种排序。一 个表可以设定(添加)多个索引,则就会有多个排序。就如新华字典,是“所有汉字”的一个纸质表,其默认是按拼音的排序,同时前面还有个部首表,此部首查表 就是该新华字典所有汉字的一个“索引”。对我们程序员的应用来说,索引只是一个对某个表的“设定”,一两个单词而已,而在数据库内部,数据库管理系统会创 建并维护一个跟当前表关联的“索引表”,该表数据已经按某种方式排好了序。给一个表建立索引的目的是加速数据的读取。但同时加重了数据库增删改命令的负 担,因而需要权衡考虑是否需要给某个表的某个字段设定索引。有如下几种索引:
  2. 普通索引:没有特定其他作用,就只是建立索引。设定形式:index|key [索引名] (字段名1[,字段名2,...])。
  3. 唯一索引:设定某字段为唯一,且建立索引。设定形式: unique [key] [索引名] (字段名1[,字段名2,...])。
  4. 主键索引:设定某字段为主键,且建立索引。设定形式:primary key [索引名] (字段名1[,字段名2,...])。主键索引是唯一索引的特例,也是唯一索引的“加强”,主键索引本身就包含了“唯一性”,同时主键索引的字段不能为空 值(null)。有时候需要用多个字段来确定主键,此时称为“联合主键”。联合主键的意思是多个(2个以上)的字段合在一起才算主键设定。比如某个学生管 理系统中有个“成绩表”,记录了一个学生整个大学所有所学课程的考试成绩。则该表中至少要记录3项信息:学生ID,课程名称,成绩。且此时我们要查到一个 成绩,必须确定学生ID和课程名,才可能确定该成绩。我们不能说该学生成绩是多少,也不能说某门课成绩是多少,而必须说某个学生的某门课成绩是多少。此 时,学生ID和课程名称合起来才能确定一个有意义的数据,这这个字段就构成“主键”。如果没有主键,则可能会造成数据的冲突或歧义,比如:工资表,如果没有主键,同名时就无法区分谁的工资是多少。成绩表,如果没有主键,则可能出现某个人的某门课有多个成绩数据。
  5. 全文索引:设定某字段可进行全文查找。 设定形式: fulltext [index][索引名] (字段名1[,字段名2,...])。

4.约束列表:多个约束的定义项,相互之间用逗号隔开,可选。

  1. 什么是约束?故名思义,约束就是对表中数据的某种限制。当然此限制是我们人为加上去的为了使我们的数据更具有“合理性”和“安全性”。数据的最基 本约束是“数据类型”,比如保存工资的字段,就不应该存入字符串值(这一点来说,excel表格就做不到),此时设定其数据类型就解决了此问题。但我们这 里说的约束,是在现有已经设定好数据类型基础上的进一步“要求”,比如,一个学校的学生学号,有一个要求就是“不能重号”,则我们可以给该字段设定“唯一 性”约束它,这就是唯一约束。mysql有如下几项约束:
  2. 主键约束:设定形式:[constraint] primary key (字段名1[,字段名2,...])。含义同字段的同名属性。
  3. 唯一约束:设定形式:[constraint] unique [index] (字段名1[,字段名2,...])。含义同字段的同名属性
  4. 外键约束:设定形式:[constraint] foreign key (字段名1[,字段名2,...]) references 表名(字段名1[,字段名2,...])。
    1. 外键的定义:外键就是关系数据库的一个基本特征的实现,表明该字段的值是跟外部的某个表的某个字段的值“对应”的,或者也可以说来自于该外部的某个表的某 个字段值。如果给一个设定了外键的字段插入一个值,而该值并没有在该外键所指定的外部表的对应字段中出现,则该值就会插入失败,这也就是数据库内部的“约 束机制”(使我们的数据更“纯净”)。
  5. 非空约束:其实就是字段属性中的“not null”,只能在字段上设置。
  6. 默认约束:其实就是字段属性中的“default 默认值”,只能在字段上设置。
  7. 检查约束:指使用一定的判断表达式来对某个字段中的值进行“合理性”限制,比如年龄字段,虽可以设定为tinyint,但其实仍然会超出合理范围,则可以设定检查约束,只能输入0-120作为“合法年龄”数据。不过,当前mysql版本尚不支持。

5.表选项列表:多个表选项的设定项,相互之间用逗号或空格隔开,可选。常用表选项如下:

  1. ENGINE=存储引擎名
    1. 存储引擎也叫“表类型”,是指一个表中的数据以何种方式存放在文件或内存中。不同的存储引擎(表类型)提供不同的性能特性和可用功能。没 有一种各方面都又具有最佳性能又具有各种功能的存储引擎。我们要做的是要根据数据的具体使用情形(需求)来选择合适的存储引擎,有的要读取速度快,有的要 写入速度快,有的要具有高安全可靠性,有的要海量存储,等等。常用的存储引擎是innoDB(默认)和Myisam。
  2. CHARACTER SET=要使用的编码名 [COLLATE=要使用的校对集名 ]
  3. auto_increment = 自增长字段的起始值
  4. comment='表的注释说明文字‘

6.修改表

  1. 修改表是指修改表的结构或特性。理论上创建一个表能做到的事情,修改表也能做到。修改表有二三十项修改项,包括增删改字段,增删索引,增删约束,修改表选项等等。举例如下:
  2. 添加字段:alter table 表名 add [column] 新字段名 字段类型 [字段属性列表];
  3. 修改字段(可改名):alter table 表名 change [column] 旧字段名 新字段名 新字段类型 [新字段属性列表];  
  4. 修改字段(只改属性):alter table 表名 modify [column]       字段名 新字段类型 [新字段属性列表];
  5. 删除字段:alter table 表名 drop [column] 字段名;
  6. 添加普通索引:alter table 表名 add index [索引名] (字段名1[,字段名2,...]);
  7. 添加主键索引(约束):alter table 表名 add primary key (字段名1[,字段名2,...]);
  8. 添加外键索引(约束):alter table 表名1 add foreign key (字段1,[,字段名2,...]) references 表名2(字段1,[,字段名2,...]);
  9. 添加唯一索引(约束):alter table 表名 add unique (字段名1[,字段名2,...]);
  10. 添加字段默认值(约束):alter table 表名 alter [column] 字段名 set default 默认值;
  11. 删除字段默认值(约束):alter table 表名 alter [column] 字段名 drop default;
  12. 删除主键:alter table 表名 drop primay key;#每一个表最多只能有一个主键
  13. 删除外键:alter table 表名 drop foreign key 外键名;
  14. 删除索引:alter table 表名 drop index 索引名;
  15. 修改表名:alter table 表名 rename [to] 新表名;
  16. 修改表选项:alter table 表名 选项名1=选项值1,选项名2=选项值2,...;

7.删除表

drop table [if exists] 表名;

8.其他相关语句

  1. 显示所有表: show tables;
  2. 显示某表的结构: desc 表名; 或:describe 表名;
  3. 显示某表的创建语句:show create table 表名;
  4. 重命名表:rename table 旧表名 to 新表名;
  5. 从已有表复制表结构:create table [if not exists] 新表名 like 原表名;
  6. 从已有表复制表结构:create table [if not exists] 新表名 select * from 原表名 where 1<>1;
  7. 创建索引:create [unique | fulltext] index 索引名 on 表名(字段名1[,字段名2,...])。这里省略unique或fulltext,那就是普通索引。实际上此创建索引语句,会在系统内部映射为一条 “alter table”的添加索引语句。
  8. 删除索引:drop index 索引名 on 表名。实际上,此语句同样被映射为一条“alter table”的删除索引语句

9.视图定义语句

  1. 什么是视图?视图是一个虚拟表,其内容由一条查询语句来定义。也可以认为,视图就是一条select语句的查询结果,只是预先放在数据库中而已。我们可以将此查询结果(有行有列有字段名)当作一个表来使用。
  2. 创建视图: create view 视图名 [(列名1,列名2,...)] as select语句;
    1. 视图名不能跟表名同名——因为他们都是隶属于数据库的“对象”;
    2. 视图的默认列名就是定义视图的时候的select语句中设定的列名;
    3. 视图定义的时候也可以指定自己的列名,但此时指定的列名数应该跟select语句的列名数相等;
  3. select语句可以从多个表中取用数据,甚至还可以从其他视图中取数据
  4. 修改视图: alter view 视图名 [(列名1,列名2,...)] as select语句;
  5. 删除视图: drop view [if exists] 视图名;

转载于:https://www.cnblogs.com/autopwn/p/5091622.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue antd admin怎么切换到basic分支_vue菜鸟从业记:前端如何与后端哥们进行接口联调...

最近我的朋友王小闰进入一家新的公司&#xff0c;正好公司项目采用的是前后端分离架构&#xff0c;技术栈是王小闰非常熟悉的vue全家桶&#xff0c;后端用的是Java语言。在前后端开发人员碰面之后&#xff0c;协商确定好了前端需要的数据接口(扯那么多&#xff0c;其实也就是关…

ASP.NET AntiXSS的作用

XSS跨站脚本攻击是指用户输入HTML编码对网站进行跨站攻击。通过使用FCKeditor、FreeTextBox、Rich TextBox、Cute Editor、TinyMCE等等Html编辑器&#xff0c;用户可以输入一些危险字符&#xff0c;注入到网站中&#xff0c;形式XSS。&#xff08;一般的解决办法是使用BBCode的…

p1358

这是一道二维树状数组模板题。 需要注意的可能只有这些xy有可能为零。那每次输入之后全部&#xff0c;相当于全部向右下角移了一位。 那就直接给代码了呦。 using namespace std; int c[1050][1050],n,m; int i,f; int a1,b1,a2,b2,tx,ty,tk; int ans; int lowbit(int x) {retu…

java中对象的生存期_深入理解Java虚拟机-判断对象是否存活算法与对象引用

我们知道Java中的对象一般存放在堆中&#xff0c;但是总不能让这些对象一直占着内存空间&#xff0c;这些对象最终都会被回收并释放内存&#xff0c;那么我们如何判断对象已经成为垃圾呢&#xff1f;这篇文章会提出两种算法解决这个问题。另外&#xff0c;本文还要谈一谈对象引…

大数据高效复制的处理案例分析总结

一个老客户提出这样的需求&#xff0c;希望将SQLServer中的某个表的数据快速复制到SQLite数据库里面以便进行定期的备份处理&#xff0c;数据表的记录大概有50多万条记录&#xff0c;表有100个字段左右&#xff0c;除了希望能够快速做好外&#xff0c;效率是第一位的&#xff0…

@autowired注解注入为null_Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案

相信使用Mybaits的小伙伴们一定会经常编写类似如下的代码&#xff1a;可以看到 userMapper 下有个红色警告。虽然代码本身并没有问题&#xff0c;能正常运行&#xff0c;但有个警告总归有点恶心。本文分析原因&#xff0c;并列出解决该警告的几种方案。原因众所周知&#xff0c…

五 Python之socket网络编程

<1>socket概念 socket通常也称作"套接字"&#xff0c;用于描述IP地址和端口&#xff0c;是一个通信链的句柄&#xff0c;应用程序通常通过"套接字"向网络发出请求或者应答网络请求。ocket本质上就是在2台网络互通的电脑之间&#xff0c;架设一个通道…

致敬2016,拥抱2017

2016年5月10号加入现在的团队&#xff0c;到今天2016年12月31号&#xff0c;已经过去了接近8个月。这整个期间&#xff0c;我们团队都只有我一个前端工程师&#xff0c;我从刚开始的忐忑不安、压力极大&#xff0c;到现在基本上手&#xff0c;我们团队做的项目虽然不大&#xf…

你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...

问题我有一个Java应用程序&#xff0c;我从控制台运行&#xff0c;然后控制台执行另一个Java进程。我想获得该子进程的线程/堆转储。在Unix上&#xff0c;我可以做akill -3 但是在Windows AFAIK上获取线程转储的唯一方法是在控制台中使用Ctrl-Break。但这只会让我转移父进程&am…

html ie乱码_Java 0基础入门(初识Html)

在学习Java之前&#xff0c;我们需要了解一定的前端知识。毕竟页面才是用户真正看到的&#xff0c;而且也是体现Java后端逻辑结果的地方。学习HTML后&#xff0c;能够制作界面美观大方的静态网站(更复杂的功能需要JavaScript脚本一起来实现)。HTML制作的网页。所需要的Html开发…

常用自动化框架简单的分析与介绍

目前常用的可用于APP自动化测试的框架有以下几个&#xff1a; 1、Monkey是Android SDK自带的测试工具&#xff0c;在测试过程中会向系统发送伪随机的用户事件流&#xff0c;如按键输入、触摸屏输入、手势输入等)&#xff0c;实现对正在开发的应用程序进行压力测试&#xff0c;也…

linux一步一脚印---more、less、head、tail

一、more 文件内容或输出查看命令more 是我们最常用的工具之一&#xff0c;最常用的就是显示输出的内容&#xff0c;然后根据窗口的大小进行分页显示&#xff0c;然后还能提示文件的百分比&#xff1b; [rootlocalhost ~]# more /etc/profile 1、more 的语法、参数和命令&#…

单片机检测stc没反应_我为什么不用STC单片机

写在2019.10.27这属于自己打自己脸&#xff0c;不过&#xff0c;我突然想试试 STC15W108.理由可能有点操蛋&#xff0c;因为STM8S没有 DFN8这样 3x3的封装&#xff0c;而PIC的仿真器太贵。我最后感兴趣的一个STC型号是 STC15F的8脚系列&#xff0c;那是在2010年&#xff0c;然而…

commons-pool

commons-pool组件是使用对象池时都要用到的。他的作用主要是管理对象池&#xff0c; 当我们要用这个组件时&#xff08;比如redis要用到时&#xff09;&#xff0c;只需要实现它的部分接口&#xff0c;比如PooledObjectFactory接口&#xff0c;实现它的创建对象&#xff0c;销毁…

JAVA中CyclLink怎么用_Java多线程基本使用一

1 多线程--初步【1进程比如&#xff1a;QQ、迅雷、360、飞秋...2线程的概念3线程的意义&#xff1a;4.Java程序的运行原理代码是运行在线程中的&#xff0c;如果一个进程没有线程&#xff0c;那么进程就结束了&#xff0c;也就是说一个进程至少要有一个线程当开启一个Java…

指针分析

int *a; int b 4; a &b; //a:b的地址 //*a 取b地址的值&#xff0c;为4 //&a为指针变量的地址 //*(&a)为指针变量储存的地址 即为a int **b &a; //b为指针变量a的地址 //*b为指针变量a所储存的地址 //改变*b(指针变量所储存的地址)即改变了*b的值转载于:http…

live server插件怎么用_分享几个我日常使用的VS Code插件

在这篇文章中&#xff0c;我想介绍一下自己日常使用中最喜欢的Visual Studio Code扩展。大多数时候&#xff0c;我用VS Code编写的是JavaScript应用程序(标准JavaScript、React、Angular、NodeJS……各式各样)。Bracket Pair Colorizer 2这个扩展很不错&#xff0c;可以帮助我搞…

Xtrabackup数据全备份与快速搭建从服务器

Percona Xtrabackup可以说是一个完美的数据备份工具。特别是当数据库的容量达到了一定数量级的时候且存在单表达到几十G的数据量&#xff0c; 很难容忍一些逻辑备份的漫长时间。如单个数据库约200G&#xff0c;单表最大为120G&#xff0c;mysqldump逻辑备份的时间长达20多小时。…

简单的java方法_Java简单实用方法一

整理以前的笔记&#xff0c;在学习Java时候,经常会用到一些方法。虽然简单但是经常使用。因此做成笔记&#xff0c;方便以后查阅这篇博文先说明构造和使用这些方法。1&#xff0c;判断String类型数据是否为空String类型的数据为空&#xff0c;主要为等于null或”“那么只要判断…