MySQL -DDL 及表类型

DDL

创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name
[create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

1.CHARACTER SET :指定数据库采用的字符集,如果不指定字符集,默认utf8

2.COLLATE:指定数据库字符集的校对规则(常用的 utf8_bin、utf8_general ci注意默认是utf8_general_ci)

sql 复制代码
#创建一个数据库
CREATE DATABASE ww_db01;
#使用指令删除数据库
DROP DATABASE ww_db01;
#创建一个使用utf-8字符集的数据库
CREATE DATABASE ww_db02 CHARACTER SET utf8;
#创建一个使用utf8字符集,并带校对规则的数据库
CREATE DATABASE ww_db03 CHARACTER SET utf8 COLLATE utf8_bin;

#校对规则 utf8_bin 区分大小写 默认是 utf8_general ci 不区分大小写

查询数据库

显示数据库语句:

SHOW DATABASES

显示数据库创建语句:

SHOW CREATE DATABASE db name

数据库删除语句:DROP DATABASE [IF EXISTS] db name

sql 复制代码
#查看当前所有数据库
SHOW DATABASES;
#查看前面创建数据库的语句
SHOW CREATE DATABASE `ww_db01`;
#特别说明,在创建数据库、表时使用反引号, 可以规避关键字
CREATE DATABASE `SET`;

CREATE DATABASE SET;
#删除前面创建的数据库
DROP DATABASE ww_db01;
DROP DATABASE `SET`;

备份数据库

备份数据库(注意:在DOS执行)命令行mysqldump-u用户名-p-B数据库1数据库2数据库n >文件名.sql

恢复数据库(注意:进入Mysql命令行再执行)source 文件的全路径名.sql

示例

1、管理员打开cmd, 直接输入指令 C:\Users\Administrator>mysqldump -u root -p -B ww_db02 ww_db03 >e:test.sql

2、切换到数据库安装目录,进入数据库后,执行命令 source e:\\test.sql

创建表

CREATE TABLE table name

(

field1 datatype,

field2 datatype,

field3 datatype

)character set字符集collate 校对规则 engine 引擎

CREATE TABLE IF NOT EXISTS employees (

id INT PRIMARY KEY,

name VARCHAR(50),

age INT,

department VARCHAR(50)

);

DROP TABLE IF EXISTS `emp` ; //删除表, 这样写如果已经不存在这个表可以不用报错

示例

sql 复制代码
CREATE TABLE `user` (
				id INT,
				`name` VARCHAR(255),
				`password` VARCHAR(255),
				`birthday` DATE)
				CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;

修改表

使用ALTER TABLE语句追加,修改,或删除列的语法. (ALTER 改变的意思)

添加列 ALTER TABLE tablename

ADD (column datatype [DEFAULT expr][, column datatype]...);

修改列 ALTER TABLE tablename

MODIFY (column datatype [DEFAULT expr][, column datatype]..);

删除列 ALTER TABLE tablename

DROP (column);

查看表的结构:desc 表名;--可以查看表的列

修改表名:Rename table表名 to 新表名

修改表字符集:alter table 表名character set字符集;

示例: 像是在说话一样,很流畅

sql 复制代码
CREATE TABLE `emp` (
				`Id` INT,
				`name` VARCHAR(32),
				`sex` CHAR(1),
				`birthday` DATE,
				`entry_date` DATETIME,
				`job` VARCHAR(32),
				`Salary` DOUBLE,
				`resume` text)CHAR SET utf8 COLLATE utf8_bin ENGINE innodb;
sql 复制代码
#修改表的操作练习
#在emp表增加一个image列,VARCHAR类型(要求resume后面)。
ALTER TABLE emp ADD image VARCHAR(32) NOT NULL DEFAULT '' AFTER resume; 
#修改job列,使其长度为60
ALTER TABLE emp MODIFY job VARCHAR (60);
#删除sex列
ALTER TABLE emp DROP sex; 
#表名改为employee
RENAME TABLE emp TO employee;
#修改表的字符集为utf8
ALTER TABLE employee CHARACTER  SET utf8;
#列名name修改为user_name
ALTER TABLE employee CHANGE `name` `user_name` 
VARCHAR(32) NOT NULL DEFAULT '';

mysql列类型

整形数据

整形数据选择原则: 应该根据具体需求,选择占用空间小 的数据类型

sql 复制代码
#1.如果没有指定unsinged,则TINYINT就是有符号
#2.如果指定 unsinged,则TINYINT就是无符号0-255
CREATE TABLE t3 (id TINYINT);
CREATE TABLE t4 (id TINYINT UNSIGNED);

Bit位类型

bit这个数据类型用的比较少, 如果是需要存储0或1的情况,可以使用该类型

小数类型

数值型(小数)的基本使用

  1. FLOAT/DOUBLE [UNSIGNED]Float 单精度精度,Double 双精度.

单精度浮点数(float)的数值范围为-3.4E38~3.4E38,大约可以表示7位十进制下的有效数字。

双精度浮点数(double)可以表示的数字的绝对值范围大约是:-2.23E308 ~ 1.79E308,可以表示十进制的15或16位有效数字。

  1. DECIMAL[M,D] [UNSIGNED] //可以存放非常大的数

·可以支持更加精确的小数位。

M最大65。D最大是30。如果D被省略,默认是0。

如果M被省略,默认是10。

建议:如果希望小数的精度高,推荐使用decimal

以下是DECIMAL数据类型的语法示例:

sql 复制代码
CREATE TABLE table_name (  
  column_name DECIMAL(precision, scale)  
);

在上面的语法中,precision表示数字的总位数,包括小数点左侧和右侧的位数。scale表示小数点右侧的位数。

例如,如果要创建一个名为products的表,其中有一个名为price的列,可以将其定义为DECIMAL数据类型,精度为10,小数位数为2,如下所示:

sql 复制代码
CREATE TABLE products (  
  price DECIMAL(10, 2)  
);

这将创建一个能够存储最大值为99999999.99的price列。

字符串类型

·字符串使用细节

  1. 细节1 char(4)//**这个4表示字符数(最大255),不是字节数,**不管是中文还是字母都是放四个,按字符计算

按gbk编码方式,那么char(4)表示的是4*2=8个字节,

按utf8编码,那么char(4)表示的是4*3 = 12个字节

.varchar(4)/这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据.

不管是中文还是英文字母,都是最多存放4个,是按照字符来存放的.

2.细节2

char(4)是定长(固定的大小),就是说,即使你插入'aa',也会占用分配的4个字符d.

varchar(4)是变长,就是说,如果你插入了'aa',实际占用空间大小并不是4个字符,而是按照实际占用空间来分配(说明:varchar本身还需要占用1-3个字节来记录存放内容长度 , 即varchar 存放的其实是 aa 加上1-3个字节)

4.细节4

在存放文本时,也可以使用Text数据类型.可以将TEXT列视为VARCHAR列,注意Text不能有默认值.大小0-2へ16字节, 2へ16 = 65536即等于varchar的最大字节数

如果希望存放更多字符,可以选择MEDIUMTEXT 0-2へ24 或者LONGTEXT 0~2へ32

日期类型

1、date

2、datetime

3、timestamp

相关推荐
做梦敲代码3 分钟前
达梦数据库-读写分离集群部署
数据库·达梦数据库
苹果醋342 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行43 分钟前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
hanbarger1 小时前
nosql,Redis,minio,elasticsearch
数据库·redis·nosql
微服务 spring cloud1 小时前
配置PostgreSQL用于集成测试的步骤
数据库·postgresql·集成测试
先睡1 小时前
MySQL的架构设计和设计模式
数据库·mysql·设计模式
弗罗里达老大爷1 小时前
Redis
数据库·redis·缓存
仰望大佬0072 小时前
Avalonia实例实战五:Carousel自动轮播图
数据库·microsoft·c#
学不透java不改名2 小时前
sqlalchemy连接dm8 get_columns BIGINT VARCHAR字段不显示
数据库