mysql DDL(数据库、表的创建与修改等) 语句操作与数据类型

发布于:2023-01-17 ⋅ 阅读:(216) ⋅ 点赞:(0)

DDL语句


不要在系统的数据库里面进行操作

1:数据库基本操作

查询

mysql> show databases;

查询当前数据库

mysql> select database();  #查询当前所在的数据库

创建

create database [if not exists] 数据库名 [defaul charest 字符集] [collate 排序规则];
if not exists : 数据库名存在则不创建,防止则创建
default charset 字符集: 设置字符编码
mysql> create database ittest;  #
Query OK, 1 row affected (0.01 sec)
mysql> create database if not exists ittest;  #数据库存在则不创建,不存在则创建
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> create database test default charset utf8mb4;  #创建test数据库并设置编码格式,utf8存储为3个字节,utf8mb4支持4个字节
Query OK, 1 row affected (0.01 sec)

删除

mysql> drop database if exists test;  #if exists 如果数据库存在则删除,不存在则不进行操作

使用

mysql> use ittest;  #切换数据库
Database changed

2:DDL-表操作-查询

查询当前数据库所有表(前提是要进入到数据库)

mysql> show tables;
Empty set (0.00 sec)  #空数据

查询表结构

desc version;

查询指定表的建表语句

mysql> show create tables 表名

表的创建

create table 表名(
	字段1 字段1类型 [comment字段1 注释]#使用,分隔表
	字段2 字段2类型 [comment字段2 注释],
	字段3 字段3类型 [comment字段3 注释],
	字段4 字段4类型 [comment字段4 注释]  #最后一个字段写完没有,
)[content 表注释];

创建表示例

mysql> create table tb_user(
    -> id int comment '编号',
    -> name varchar(50) comment '姓名',
    -> age int comment '年龄',
    -> gender varchar(1) comment '性别'
    -> )comment '用户表';
Query OK, 0 rows affected (0.05 sec)

查看表的类型

mysql> desc tb_user;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | YES  |     | NULL    |       |
| name   | varchar(50) | YES  |     | NULL    |       |
| age    | int         | YES  |     | NULL    |       |
| gender | varchar(1)  | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> show create tb_user;  #查看表的创建详细信息

3:数据类型

主要分为三类,数值类型,字符串类型,日期和时间类型

(1)数值类型

类型 大小 有符号(SIGNED)取值范围 无符号(UNSIGNED)范围 描述
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2bytes (-32768,32767) (0,65535) 大整数值
MEDIUMINT 3bytes (-8388608,8388607) (0,16777215) 大整数值
INT或者INTEGER 4bytes (-2147483648,2147483647) 4294967295) 大整数值
BIGINT 5bytes (-263,263-1Z) (0,2^64-1) 极大整数值
FLOAT 4bytes (-3.402823466 E+38.3.402823466351 E+38) 和( 1.175494351 E-38,3.402823466E+38) 单精度浮点数值
DOUBLE 8bytes (-1.7976931348623157 E+308,1.7976931348623157 E+308) 0和(2.2250738585072014 E-308,1.7976931348623157 E+308) 双精度浮点数值
DECIMAL 依赖于M(精度)和D(标度)的值 依赖于M(精度)和D(标度)的值 小数值(精确定点数)

注:有符号范围,允许出现负数的范围

​ 无符号范围,不允许出现负数的范围

示例:123.45,精度为整个数值的位数5,标度为小数位数2

age TINYINT UNSIGNED 表示取无符号范围

(2)字符串类型

类型 大小 描述
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TINYBLOB 0-255 bytes 不超过255个字符的二进制数据
TINYTEXT 0-255 bytes 短文本字符串
BLOG 0-65535 bytes 二进制形式的长文本数据
TEXT 0-65535 bytes 长文本数据
MEDIUMBLOB 0-16777215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967295 bytes 极大文本数据

vrchar(10) 变长字符串 根据所存储的大小来决定所占大小,存储一个字符就占一个字符的存储空间

char(10) 定长字符串,此处直接占用10个字符,例如占用1个长度,剩下的使用空格填充

char和varchar在使用是都需要使用(10)来表示最大占用大小

(3)日期时间类型

类型 大小 范围 格式 描述
DATE 3 1000-01-01至9999-12-31 YYYY-MM-DD 日期值
TIME 3 -838:59:59 至838:59:59 HH:MM:SS 时间值或持续时间
YEAR 1 1901至2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00至9999-12-31 23:59:59 YYYY-MM-DD HH:MM :SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:01至2038-01-19 03:14:07 rrYY-MM-DD HH:MM :SS 混合日期和时间值,时间戳

示例:创建一个员工表

要求:
编号(纯数字)
员工工号(字符串类型,长度不超过10位)
员工姓名(字符串类型,长度不超过10位)
性别(男/女,存储一个汉字)
年龄(正常年龄)
身份证号(18,带有x类型)
入职时间(取值年月日)
mysql> create table emp(
    -> id int comment '编号',
    -> worknomber varchar(10) comment '工号',
    -> name varchar(10) comment '姓名',
    -> gender char(1) comment '性别',
    -> age tinyint unsigned comment '年龄',
    -> idcard char(18) comment '身份证号',
    -> entydate date comment '入职时间'
    -> )comment '员工表';
Query OK, 0 rows affected (0.05 sec)

4:DDL–表修改

示例:添加表

alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];

mysql> alter table emp add nickname varchar(20) comment '昵称';  #添加字段到表
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

示例:修改数据类型

alter table 表名 modify 字段名  新数据类型(长度) #修改数据类型
alter table 表明 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];  #需改字段名和字段类型

mysql> alter table emp change nickname username varchar(20) comment '用户名';  #修改字段
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

示例:删除字段

alter table 表名 drop 字段名;  #删除某个字段

mysql> alter table emp drop username;  #删除username字段
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

示例:修改表名

alter table rename to 新表名  #修改表名

mysql> alter table emp rename to employ;
Query OK, 0 rows affected (0.02 sec)

5:DDL–表删除

drop table [if exists] 表名;  如果表存在则删除,不存在则不删除
mysql> drop table if exists tb_user;  #删除表
Query OK, 0 rows affected (0.02 sec)

truncate table 表名;  #删除指定表,并重新创建该表,会删除所有数据
mysql> truncate table employ;  #删除并重新创建,成为新表 
Query OK, 0 rows affected (0.05 sec)

网站公告

今日签到

点亮在社区的每一天
去签到