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

相关推荐
PGCCC33 分钟前
【PGCCC】Postgresql 存储设计
数据库·postgresql
PcVue China2 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
魔道不误砍柴功4 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
锐策4 小时前
〔 MySQL 〕数据库基础
数据库·mysql
远歌已逝5 小时前
管理Oracle实例(二)
数据库·oracle
日月星宿~5 小时前
【MySQL】summary
数据库·mysql
爱吃土豆的程序员6 小时前
在oracle官网下载资源显示400 Bad Request Request Header Or Cookie Too Large 解决办法
java·数据库·oracle·cookie
睿思达DBA_WGX6 小时前
Oracle 11g rac 集群节点的修复过程
数据库·oracle
尘浮生6 小时前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
希忘auto7 小时前
详解MySQL安装
java·mysql