1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Mysql学习(二)创建数据库和表

Mysql学习(二)创建数据库和表

时间:2021-12-31 17:41:55

相关推荐

Mysql学习(二)创建数据库和表

MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站或者大小型的网站的开发都选择 MySQL 作为网站数据库。支持集群处理。

MySQL版本选择:5.7的版本,最稳定。不建议下载exe类型的MySQL,尽量使用zip类型

MySQL可视化软件SQLyog

登录界面:密码是MySQL设置的密码,用户名与MySQL一样,端口默认3306

主要功能区

操作MySQL

操作数据库 > 操作数据库中的表 > 操作数据库中表的数据

MySQL关键字不区分大小写

操作数据库(了解)

1、创建数据库

create database [if not exits] 数据库名; -- IF EXISTS 可要可不要

2、删除数据库

DROP DATABASE [IF EXISTS] 数据库名;

3、使用数据库

USE `数据库名`; -- 如果表名或字段名是一个特殊字符,就需要带``-- 跳转到指定的数据库

4、查看数据库

SHOW DATABASES;

学习思路:

对照sqlyog的可视化历史记录查看sql固定的语法或关键字必须要强行记住

数据库列的类型

文本类

| 数据类型 | 描述 |

| ————————- | ————————————————- |

| CHAR(size) | 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 |

|VARCHAR(size)|保存可变长度的字符串(可包含字母、数字以及特殊字符)。MySQL4.1以前,VARCHAR数据类型所支持的最大长度255,5.0以上版本支持65535字节长度,utf8编码下最多支持21843个字符(不为空)|

| TINYTEXT | 存放最大长度为 255 个字符的字符串。 |

|TEXT|存放最大长度为 65,535 个字符的字符串。|

| BLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。 |

| MEDIUMTEXT | 存放最大长度为 16,777,215 个字符的字符串。 |

| MEDIUMBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。 |

| LONGTEXT | 存放最大长度为 4,294,967,295 个字符的字符串。 |

| LONGBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。 |

| ENUM(x,y,z,etc.) | 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。 注释:这些值是按照你输入的顺序存储的。 可以按照此格式输入可能的值:ENUM(‘X’,’Y’,’Z’) |

| SET | 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。 |

数字类

| 数据类型 | 描述 |

| —————————- | —————————————————————————————— |

| TINYINT(size) | 占1字节 |

| SMALLINT(size) | 占2字节 |

| MEDIUMINT(size) | 中等大小,占3个字节 |

|INT(size)|标准的整数,占4个字节|

| BIGINT(size) | 大于int,占8个字节 |

| FLOAT(size,d) | 带有浮动小数点的小数字。单精度浮点型,占4个字节 |

| DOUBLE(size,d) | 带有浮动小数点的大数字。双精度浮点型,占8个字节 |

|DECIMAL(size,d)|作为字符串存储的 DOUBLE 类型,允许固定的小数点。(精度不会丢失)|

这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数

日期/时间类

| 数据类型 | 描述 |

| ———————- | —————————————————————————————— |

| DATE() | 日期。格式:YYYY-MM-DD 注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’ |

| TIME() | 时间。格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’ |

|DATETIME()|日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’|

|TIMESTAMP()|时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC|

| YEAR() | 2 位或 4 位格式的年。 注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。 |

即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。

NULL

没有值,未知的。不要使用NULL进行运算(可以运算但没有必要),结果一定为NULL。

数据库的字段属性(重点)

Unsigned: 无符号的整数,声明了该类不能声明为负数。

Zerofill: 不足的位数,使用0来填充。例如:定义一个长度为2的int类,输入3会默认填充03。

自增(AUTO_INCREMENT)

通常理解为自动在上一条记录的基础上+1(默认)。通常用来设计唯一的主键,必须是整数类型。可以自定义设计主键自增的起始值和步长。

非空(NULL not null)

假如勾选非空,如果不给值,程序将会报错。不勾选非空,并且不填写值,默认为NULL。

默认: 设置的默认值,如果不指定该列的值,设置的默认值将会自动填充。

阿里数据库规范

每一个表,都必须存在以下五个字段! 项目规范

设置数据库表的字符集编码

不设置的话,会是mysql默认的字符集编码(Latin1)~(不支持中文!)

方法一:在创建表的后面写下代码ENGINE=INNODB DEFAULT CHARSET=utf8mb4

CREATE TABLE IF NOT EXISTS `school` ()ENGINE=INNODB DEFAULT CHARSET=utf8

方法二:在my.ini文件里面输入代码character-set-sever=utf8(此方法不建议使用,本地修改,意义不大)

[mysqld]basedir=D:\Exploit\mysql-5.7.33\ datadir=D:\Exploit\mysql-5.7.33\data\port=3306character-set-sever=utf8

What's the difference between utf8_general_ci and utf8_unicode_ci

注:由于MySQL5.5.3应该使用utf8mb4,而不是utf8。它们都指的是UTF-8编码,但是旧的utf8有一个特定于mysql的限制,防止使用超过0xfffd的字符。

准确度

utf8mb4_unicode_ci是基于Unicode排序和比较标准的,该标准在非常广泛的语言范围内精确排序。

utf8mb4_general_ci未能实现所有的unicode排序规则,这将导致在某些情况下(例如使用特定语言或字符时)出现不希望的排序。

性能

utf8mb4_general_ci在比较和排序方面速度更快,因为它采用了一系列与性能相关的快捷方式。

在现代服务器上,这种性能提升几乎可以忽略不计。它是在服务器的CPU性能只占当今计算机的一小部分的时候设计的。

utf8mb4_unicode_ci使用Unicode规则进行排序和比较,它使用一种相当复杂的算法在各种语言中以及在使用各种特殊字符时进行正确排序。这些规则需要考虑到特定于语言的约定;并不是每个人都按照我们称之为"字母顺序"的方式对字符进行排序。

简而言之:

如果需要更好的排序顺序,请使用utf8_unicode_ci(这是首选方法)。

但是,如果你对性能非常感兴趣——使用utf8_general_ci,但是要知道它有点过时。

性能方面的差异很小。

创建数据库表(重点)

格式:

-- 注意点,使用英文(),表的名称和字段尽量使用``括起来-- 字符串使用单引号括起来-- 所有的语句后面加 , 最后一个不用加-- PRIMARY KEY 主键,一般一个表只有一个唯一的主键create table [if not exists] `表名`('字段名' 列类型 [属性] [索引] [注释],'字段名' 列类型 [属性] [索引] [注释],'字段名' 列类型 [属性] [索引] [注释],......'字段名' 列类型 [属性] [索引] [注释]) [表类型] [字符集设置] [注释]

常用指令:

SHOW CREATE DATABASE 数据库名 -- 查看创建数据库的语句SHOW CREATE TABLE 表名 -- 查看创建数据表的定义语句DESC 表名 -- 显示表的结构

案例:创建一个表,里面保存了学生的学号id,名字name,密码pwd,以及地址address,性别sex,生日birthday和邮件email。

CREATE TABLE IF NOT EXISTS `school` (`id` BIGINT (100) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` VARCHAR (10) NOT NULL DEFAULT '匿名' COMMENT '姓名',`pwd` VARCHAR (20) NOT NULL DEFAULT '123456..' COMMENT '密码',`sex` VARCHAR (2) NOT NULL DEFAULT '男' COMMENT '性别',`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',`address` VARCHAR (200) DEFAULT NULL COMMENT '地址', `email` VARCHAR (100) DEFAULT NULL COMMENT '电子邮件',PRIMARY KEY (`id`))ENGINE=INNODB DEFAULT CHARSET=utf8

数据库表的基本操作

修改数据表名:

ALTER TABLE `旧表名` RENAME AS `新表名`

增加数据库表字段:

ALTER TABLE `表名` ADD `增加新的字段名` 参数类型(size)

修改表:

修改约束

ALTER TABLE `表名` MODIFY `字段名` 字段类型(size) -- 修改约束,即修改原来字段的的字段类型以及大小

字段重名

ALTER TABLE `表名` CHANGE `旧字段名` `新字段名` 字段类型(size) -- 便于修改字段名

拓展:modify和change都可以修改字段类型,但是change却需要写两次列名,不是很方便。但是change的优点是可以修改列名称,modify则不能

删除表:

删除表的字段

ALTER TABLE `表名` DROP `字段名` -- 删除表中其中的一个字段

删除表

DROP TABLE IF EXISTS `表名` -- 删除表,尽量加上IF EXISTS判断

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。