MySQL (三)------DDL操作数据库、DDL操作表

news2024/11/25 20:28:44

DDL操作数据库 

1.1创建数据库(掌握)

  • 语法

create database 数据库名 [character set 字符集][collate  校对规则]    
 注: []意思是可选的意思

字符集(charset):是一套符号和编码。

  • 练习

创建一个day01的数据库(默认字符集)

create database day01;

创建一个day01_2的数据库,指定字符集为gbk(了解)

create database day01_2 character set gbk;

1.2查看所有的数据库

1.2.1查看所有的数据库

  • 语法

show databases; 

1.2.2查看数据库的定义结构【了解】

  • 语法

show create database 数据库名;
  • 查看day01这个数据库的定义

show create database day01; 

1.3删除数据库

  • 语法

drop database 数据库名;
  • 删除day01_2数据库

drop database day01_2;

1.4 修改数据库【了解】

  • 语法

alter database 数据库名 character set 字符集;
  • 修改day01这个数据库的字符集(gbk)

alter database day01 character set gbk;

注意:

  • 是utf8,不是utf-8

  • 不是修改数据库名

1.5其他操作

  • 切换数据库, 选定哪一个数据库

use 数据库名;   		
//注意: 在创建表之前一定要指定数据库. use 数据库名
  • 练习: 使用day01

use day01;
  • 查看正在使用的数据库

select database();

操作表的DDL

1.1 创建表

1.1.1 语法

create table 表名(
	列名 类型 [约束],
	列名 类型 [约束]
	...
		
);

1.1.2 类型

1.1.2.1 数值类型

  • 整型系列:xxxInt

int(M),必须和unsigned zerofill一起使用才有意义

  • 浮点型系列:float,double(或real)

double(M,D):表示最长为M位,其中小数点后D位

例如:double(5,2)表示的数据范围[-999.99,999.99],如果超过这个范围会报错。

  • 定点型系列:decimal(底层实际上是使用字符串进行存储)

decimal(M,D):表示最长为M位,其中小数点后D位

  • 位类型:bit

字节范围是:1-8,值范围是:bit(1)~bit(64),默认bit(1)

用来存储二进制数。对于位字段,直接使用select命令将不会看到结果。可以使用bit()或hex()函数进行读取。插入bit类型字段时,使用bit()函数转为二进制值再插入,因为二进制码是“01”。

1.1.2.2 日期时间类型

日期时间类型:year, date, datetime, timestamp

注意一下每一种日期时间的表示范围

timestamp和datetime的区别:

  • timestamp范围比较小

  • timestamp和时区有关

    • show variables like 'time_zone';

    • set time_zone = '+8:00';

  • timestamp受MySQL版本和服务器的SQLMode影响很大

  • 表中的第一个非空的timestamp字段如果插入和更新为NULL则会自动设置为系统时间

 

1.1.2.3 字符串类型

MySQL中提供了多种对字符数据的存储类型,不同的版本可能有所差异。常见的有:

char,varchar,xxtext,binary,varbinary,xxblob,enum,set等等

  • 字符串类型char,varchar(M)

char如果没有指定宽度,默认为1个字符

varchar(M),必须指定宽度

  • binary和varbinary类似于char和varchar,不同的是它们包含二进制字符串,不支持模糊查询之类的。

  • 一般在保存少量字符串的时候,我们会选择char和varchar;而在保存较大文本时,通常会选择使用text或blob系列。blob和text值会引起一些性能问题,特别是在执行了大量的删除操作时,会在数据表中留下很大的“空洞”,为了提高性能,建议定期时候用optimize table功能对这类表进行碎片整理。可以使用合成的(Synthetic)索引来提高大文本字段的查询性能,如果需要对大文本字段进行模糊查询,MySql提供了前缀索引。但是仍然要在不必要的时候避免检索大型的blob或text值。

  • enum枚举类型,它的值范围需要在创建表时通过枚举方式显式指定,对于1~255个成员的枚举需要1个字节存储;对于255`65535个成员需要2个字节存储。例如:gender enum('男','女')。如果插入枚举值以外的值,会按第一个值处理。一次只能从枚举值中选择一个。

  • set集合类型,可以包含0~64个成员。一次可以从集合中选择多个成员。如果选择了1-8个成员的集合,占1个字节,依次占2个,3个。。8个字节。例如:hoppy set('吃饭','睡觉','玩游戏','旅游'),选择时'吃饭,睡觉'或'睡觉,玩游戏,旅游'

1.1.2.4 示例

+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| eid            | int(11)      | NO   | PRI | NULL    | auto_increment |
| ename          | varchar(20)  | NO   |     | NULL    |                |
| tel            | char(11)     | NO   |     | NULL    |                |
| gender         | char(1)      | YES  |     | 男        |                |
| salary         | double       | YES  |     | NULL    |                |
| commission_pct | double(3,2)  | YES  |     | NULL    |                |
| birthday       | date         | YES  |     | NULL    |                |
| hiredate       | date         | YES  |     | NULL    |                |
| job_id         | int(11)      | YES  |     | NULL    |                |
| email          | varchar(32)  | YES  |     | NULL    |                |
| mid            | int(11)      | YES  |     | NULL    |                |
| address        | varchar(150) | YES  |     | NULL    |                |
| native_place   | varchar(10)  | YES  |     | NULL    |                |
| did            | int(11)      | YES  |     | NULL    |                |
+----------------+--------------+------+-----+---------+----------------+

1.1.3 约束

  • 即规则,规矩 限制;

  • 作用:保证用户插入的数据保存到数据库中是符合规范的

约束约束关键字
主键primary key非空且唯一,并且一张表只能有一个主键
唯一unique唯一,当前列不能出现相同的数据
非空not null非空,当前列不能为null
默认default如果当前列没有数据,则指定默认数据

约束种类:

  • not null: 非空 ; eg: username varchar(40) not null username这个列不能有null值

  • unique:唯一约束, 后面的数据不能和前面重复; eg: cardNo char(18) unique; cardNo 列里面不可以有重复数据

  • primary key;主键约束(非空+唯一); 一般用在表的id列上面. 一张表基本上都有id列的, id列作为唯一标识的

    • auto_increment: 自动增长,必须是设置了primary key之后,才可以使用auto_increment

  • id int primary key auto_increment; id不需要我们自己维护了, 插入数据的时候直接插入null, 自动的增长进行填充进去, 避免重复了.

注意:

  1. 先设置了primary key 再能设置auto_increment

  2. 只有当设置了auto_increment 才可以插入null , 否则插入null会报错

id列:

  1. 给id设置为int类型, 添加主键约束, 自动增长

  2. 或者给id设置为字符串类型,添加主键约束, 不能设置自动增长

1.1.4练习

  • 创建一张学生表(含有id字段,姓名字段不能重复,性别字段不能为空默认值为男. id为主键自动增长)

CREATE TABLE student(
	id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增长
	NAME VARCHAR(30) UNIQUE, -- 唯一约束
	gender CHAR(1) NOT NULL DEFAULT '男'
);

1.2 查看表【了解】

1.2.1查看所有的表

show tables;

1.2.2查看表的定义结构

  • 语法

    desc 表名;

  • 练习: 查看student表的定义结构

desc student;

1.3 修改表【掌握,但是不要记忆】

1.3.1语法

  • 增加一列

alter table 【数据库名.]表名称 add 【column】 字段名 数据类型;
alter table 【数据库名.]表名称 add 【column】 字段名 数据类型 first;
alter table 【数据库名.]表名称 add 【column】 字段名 数据类型 after 另一个字段;
  • 修改列的类型约束:alter table 表名 modify 字段 类型 约束 ;

  • 修改列的名称,类型,约束: alter table 表名 change 旧列 新列 类型 约束;

  • 删除一列: alter table 表名 drop 列名;

  • 修改表名 : rename table 旧表名 to 新表名;

1.3.2练习

  • 给学生表增加一个grade字段,类型为varchar(20),不能为空

ALTER TABLE student ADD grade VARCHAR(20) NOT NULL;
  • 给学生表的gender字段改成int类型,不能为空,默认值为1

alter table student modify gender varchar(20);
  • 给学生表的grade字段修改成class字段

ALTER TABLE student CHANGE grade class VARCHAR(20) NOT NULL;
  • 把class字段删除

ALTER TABLE student DROP class;
  • 把学生表修改成老师表(了解)

RENAME TABLE student TO teacher;

1.4 删除表【掌握】

  • 语法

    drop table 表名;

  • 把teacher表删除

drop table teacher;

 

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

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

相关文章

List使用的坑

Arrays.asList的三个坑 1、不能转换基本数组类型(传数组进去,size1) 2、不支持增删操作(因为内部是一个final的数组) 3、对原始数组的修改会影响到我们获得的那个List 源码: 抽象List接口不支持新增 解决方案: 1、new ArrayList 2、java8…

4.移动端布局-flex布局**

1、传统布局和flex布局 传统布局:PC端 兼容性好布局繁琐局限性,不能在移动端很好的布局 flex布局:PC端、移动端操作方便,布局简单,移动端应用广泛PC端浏览器支持情况较差IE11或更低版本,不支持或仅部分支…

关于加密货币危机公关的智能钱包系列:该做和不该做哪些事情

我们的新一期 Twitter Spaces 为危机公关带来了加密镜头。与我们的主持人 Megan DeMatteo 一起出席本期节目的还有 Market Across 战略与消费者成功副总裁 Kim Bazak 和 Ambire CMO Vanina Ivanova。 Ambire Twitter Spaces 第 14 集以更广泛的视角来看待 FTX/Alameda 的故事。…

virtio虚拟化框架

virtio虚拟化 系统虚拟化技术是云计算最重要的核心技术之一。云计算平台的资源池化,资源统一管理以及后续的动态分配都是基于系统虚拟化技术才得以实现的。在计算机系统中,主要有计算资源,存储资源和网络资源。所以,系统虚拟化技术…

通讯录(3)

接着上一篇。 上一篇的指定删除还有一定的问题,我让用户输入要删除的联系人的名字,然后查询这个名字是否存在,再去删除。但是这里忽略了一个问题,如果两人名字一样呢?其它也有这样的问题,年龄&#xff0…

【vant组件安装】按需引入 完整引入 定制主题

vant官网:https://vant-contrib.gitee.io/vant/v2/#/zh-CN/定制主题: https://vant-contrib.gitee.io/vant/v2/#/zh-CN/theme 1. vant组件安装—按需引入 1.安装vant组件库 npm i vantlatest-v22.安装按需引入组件 npm i babel-plugin-import -D3.在babel.config.j…

cadence SPB17.4 - 从正常PCB文件反推原理图

文章目录cadence SPB17.4 - 从正常PCB文件反推原理图概述笔记用SPB17.4 allegro 出报表剩余的事情最重要的一件事情 - 核对整理出的原理图是否和PCB原图网络一致最后的事情备注ENDcadence SPB17.4 - 从正常PCB文件反推原理图 概述 和同学讨论问题, 他那有一个可以正常生产的立…

2-2-3-9-1-2、jdk1.7ConcurrentHashMap详解

数据结构 对比hashmap,hashmap数组对象类型是Entry对象类型,而ConcurrentHashMap数组对象类型是Segment[]数组,segment[]数组的对象类型为HashEntry类型(一个Segment里面包含一个HashEntry数组,每个HashEntry是一个链表结构,当对…

【youcans 的 OpenCV 学习课】1.2 编译生成带有 OpenCV_contrib 的 OpenCV 库

专栏地址:『youcans 的图像处理学习课』 文章目录:『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】1.2 编译生成 OpenCV_contrib 的 OpenCV 库 文章目录【youcans 的 OpenCV 学习课】1.2 编译生成 OpenCV_contrib 的 OpenCV 库1. 工…

机器学习笔记之Sigmoid信念网络(一)对数似然梯度

机器学习笔记之Sigmoid信念网络——对数似然梯度引言回顾:贝叶斯网络的因子分解Sigmoid信念网络对数似然梯度推导过程梯度求解过程中的问题引言 从本节开始,将介绍Sigmoid\text{Sigmoid}Sigmoid信念网络。 回顾:贝叶斯网络的因子分解 Sigmo…

.NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件

本文简述如何在Smobiler中使用Bluetooth。 Step 1. 新建一个SmobilerForm窗体&#xff0c;并在窗体中加入Button和Bluetooth&#xff0c;布局如下 Button的点击事件代码&#xff1a; /// <summary>/// 关闭蓝牙/// </summary>/// <param name"sender"…

飞项三招教你用协同工具杜绝远程办公“摸鱼”

共同社19日报道称&#xff0c;总务省在新冠紧急事态宣言全面解除后不久的2021年10月对日本约9万户家庭开展了社会生活基本调查&#xff0c;利用获得的数据&#xff0c;对上班族中在调查当天有过远程办公的人和完全没有远程办公的人的工作日时间分配进行了比较。 结果显示&…

【vue面试题】

vue谈谈你怼MVVM开发模式的理解vue优点渐进式框架的理解vue常用的指令v-if和v-showv-if和v-for的优先级如何让CSS只在当前组件中起作用?<keep-alive></keep-alive> 的作用是什么?如何获取dom?vue-loader是什么&#xff1f;使用它的用途有哪些&#xff1f;assets…

哺乳时宝宝一边吃奶,另一边却自动流出来,这是怎么回事?

别人眼中的母乳喂养只是简单地把宝宝抱在怀里&#xff0c;让宝宝吃饱&#xff0c;超级简单。事实上&#xff0c;有很多母乳喂养。“麻烦事”比如母乳不足、堵奶、乳腺炎等&#xff0c;甚至更多“简单”漏奶会让宝宝头疼。有些妈妈很幸运&#xff0c;不知道什么是漏奶&#xff0…

小程序之会议管理

会议管理 注意事项 一些需要注意的细节&#xff1a; 因为 WXML 节点标签名只能是小写字母、中划线和下划线的组合&#xff0c;所以自定义组件的标签名也只能包含这些字符。自定义组件也是可以引用自定义组件的&#xff0c;引用方法类似于页面引用自定义组件的方式&#xff0…

React DAY07

复习&#xff1a; 1.RN中的样式和布局 RN样式完全脱离浏览器&#xff0c;自成体系的一套样式&#xff0c;使用对象创建样式 行内样式&#xff1a; <Text style{{color: red}}>内部样式&#xff1a; let ss StyleSheet.create({danger: {color: red}}) <Text styl…

从业多年的Android开发,竟拿不到 Application Context?

Android 开发者们对于 Application 并不陌生。有的时候为避免内存泄漏&#xff0c;常常不直接使用 Context 而是通过其提供的 getApplicationContext() 确保拿到的是 Application 级别的 Context。而本次像通常一样&#xff0c;拿到的 Application 却是 null&#xff0c;到底是…

国考省考行测:细节理解,对错判断,要素查找,问什么,找什么,对比分析

国考省考行测&#xff1a;细节理解&#xff0c;对错判断&#xff0c;要素查找&#xff0c;问什么&#xff0c;找什么&#xff0c;对比分析 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要…

头戴式耳机适合运动吗、五款最适合运动的耳机分享

戴着耳机锻炼&#xff0c;听着动感的音乐&#xff0c;会让你心潮澎湃&#xff0c;瞬间感觉自己力大无穷。那什么样的耳机更适合在健身房锻炼时戴呢&#xff1f;首先稳固性和舒适度一定要比较好&#xff0c;毕竟在运动的过程中老是感觉到不适或者掉落&#xff0c;那真的是很令人…

旋转的扰动、导数和积分

The plus operator 设M\mathcal{M}M表示一个n维的流型&#xff0c;因为流型局部同胚与Rn\mathbb{R}^nRn&#xff0c;所以我们可以通过定义符号⊞\boxplus⊞和⊟\boxminus⊟建立一个流型M\mathcal{M}M的局部邻域和其正切空间的双射。 ⊞:MRn→M;⊟:MMn→Rn\boxplus:\mathcal{M}…