Mysql的DDL操作
DDL(Data Definition Language):数据定义语言,对数据库和表的创建、删除等动作### 数据库的列举、创建、删除
列举数据库:SHOW
-- 语法
SHOW {DATABASES | SCHEMAS} ;
-- 例:
SHOW DATABASES;
创建数据库:CREATE DATABASE
-- 语法
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [db_option];
-- 例
CREATE DATABASE IF NOT EXISTS db_test CHARSET='utf8';
数据库的切换:USE
-- 语法
USE db_name;
-- 例
USE db_test;
数据库的删除:DROP
-- 语法
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name ;
-- 例
DROP DATABASE IF EXISTS db_test;
数据表的列举、创建、删除
数据表的列举:SHOW
-- 语法:
SHOW TABLES [ IN db_name ];
-- 例
SHOW TABLES IN db_test;
数据表的创建:CREATE
-- 语法
CREATE TABLE [IF NOT EXISTS] [数据库名称.]表名
(
列名1 类型 [约束] [列的注释] ,
列名2 类型 [约束] [列的注释] ,
……
列名N 类型 [约束] [列的注释]
) [表的配置] [表的注释];
-- 列名、类型必选
-- 约束、列的注释、表的配置和表的注释可选
-- 例
CREATE TABLE IF NOT EXISTS db_test.tb_students
(
stu_id varchar(20) PRIMARY KEY AUTO_INCREMENT COMMENT '学生id',
stu_name varchar(30) NOT NULL COMMENT '学生姓名',
stu_birth date COMMENT '出生日期',
stu_gender int COMMENT DEFAULT 0 '性别, 0-女, 1-男',
stu_stature int COMMENT '身高, 单位cm',
stu_city varchar(10) COMMENT '籍贯'
) ENGINE = InnoDB DEFAULT CHARSET = UTF8 COMMENT '学生基础信息表';
-
常用字段类型:
-
数值:bit(存0或1)、tinyint、int、bigint、decimal,double
类型 介绍 bit 0 或者 1 tinyint -128 ~ +127, 无符号只算正数:从0开始 到255 int -2147483648 ~ +2147483647 bigint -2^63 ~ + 2^63 - 1 double double(M, D),M总个数,D是小数位,双精度浮点型,16位精度,适合精确度一般的 decimal decimal(M, D), M最大为65,D最大为30,定点数类型,适合精确度非常高的 -
字符串:varchar,char,text
类型 介绍 char 固定长度,最多255个字符 varchar 固定长度,最多65535个字符 text 可变长度,最多65535个字符 -
日期时间:date, time, datetime
类型 介绍 date YYYY-MM-DD datetime YYYY-MM-DD HH:mm:ss timestamp 时间戳,从1970年1月1日00:00:00到目前为止的秒数
-
-
常用约束
- 主键 primary key:物理上存储的顺序。 MySQL 建议所有表的主键字段都叫 id, 类型为 int unsigned。
- 唯一 unique:此字段的值不允许重复。
- 非空 not null:此字段不允许填写空值。NULL表示空,注意 null【没有值】 和 ‘null’ 【字符串】 是否一样?
- 默认 default:当不填写字段对应的值会使用默认值,如果填写时以填写为准。
- 外键 foreign key:对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常。
数据表的描述:DESC
-- 语法
DESC [db_name.]tb_name ;
-- 例
DESC db_test.tb_students;
数据表的删除与清空
-- 数据表的删除
-- 语法
DROP TABLE [IF EXISTS] [db_name.]tbname ;
-- 例
DROP TABLE IF EXISTS db_test.tb_students;
-- 数据表的清空
-- 语法
TRUNCATE [db_name.]tbname
-- 例
TRUNCATE db_test.tb_students;
数据表的修改
-- 语法
-- 添加
ALTER TABLE 表名 ADD 列名 类型(长度) [约束];
-- 修改
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) 约束;
-- 删除
ALTER TABLE 表名 DROP 列名;
-- 例
-- 给 students 增加一列 stu_weight 体重,单位KG
ALTER TABLE db_test.tb_students ADD stu_weight double not null;
-- 给 students 的性别列修改为tinyint类型
ALTER TABLE db_test.tb_students CHANGE stu_gender stu_gender tinyint(4);
-- 删除 students 的stu_weight 列
ALTER TABLE db_test.tb_students DROP stu_weight;