提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
本期内容主要是对SQL中DDL(DATA Definition Language)语句进行基本的学习和应用
``
一、DDL-库操作
① 查询:
查询所有数据库SHOW DATABASES;
查询当前数据库:SELECT DATABASE();
② 创建:
CREATE DATABASE [if not exists] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
tips:关于指定字符集:数据库中常用UTF8MB4 支持四个字节,一般汉字在UTF-8中占三个字节;
③ 删除:
DROP DATABASE [IF EXISTS];
④ 使用数据库:
USE 数据库名
以上就是关于DDL的库操作基本语句
二、DDL-表操作
①查询当前数据所有表:
SHOW TABLES;
如查询系统数据库中的所有表:
②创建表:
CREATE TABLE 表名(
字段1 字段1类型[COMMENT ‘字段1注释’],
字段2 字段2类型[COMMENT ‘字段2注释’],
…………
字段n字段n类型[COMMENT ‘字段n注释’]
)[COMMENT 表注释];
③查询表结构
DESC 表名;
④查询指定表的建表语句
SHOW CREATE TABLE 表名
关于引擎ENGINE暂不做了解
⑤添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
⑥修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新类型(长度);
⑦修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
⑧删除字段
ALTER TABLE 表名 DROP 字段名;
⑨修改表名
ALTER TABLE 表名 RENAME TO 新表名;
⑩删除表
DROP table 表名;
TRUNCATE TABLE 表名;(只删除表数据而保留表结构)
3、练习
Task1:设计员工信息表:
1、编号(纯数字)
2、员工工号(字符类型)
3、员工姓名(字符串类型)
4、性别(男/女,存储一个汉字)
5、年龄(正常人年龄,不可能存储负数)
6、身份证号(二代身份证号均为18位,身份证中有X这样的字母)
7、入职时间(年月日)
8、备注
Task2:为emp表添加字段nickname 类型为varchar(20);
Task3:将nickname字段改为username,类型改为varchar(30)
Task4:删除字段username
Task5:重命名emp表名为employee
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/be142f2ae1c74de299239c9c085f6f99.png)
Task6:删除表
用truncate 删除:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e001fc8a65d04f12bc4b469809ab3205.png)
DROP:
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/559d946d864b458bb99fc26c8da0900b.png)
写在最后
补充
MySQL的字段类型
大致分为三类,学完后自行搜索了一下,常用的基本上如下所示:
数值类型:
整型:tinyint 1byte 有符号范围(-128-127)无符号范围(0-255)
smallint 2bytes 有符号范围(-32768-32767)无符号范围(0-65535)
mediumint 3bytes
int 4bytes
bigint 8bytes
浮点数:float(M,D) 4bytes 单精度浮点
double(M,D) 8bytes 双精度浮点
decimal(M,D) 依赖于精度M与标度E(如23.78,精度[长度]4,标度[小鼠数位数]为2
字符串类型:
char() 0-255bytes 定长字符串
varchar() 0-65535bytes 变长字符串
tinyblob 0-255bytes 二进制数据
tinytext 0-255bytes 短文本数据
blob 0-65535bytes 二进制长数据
text 0-65535bytes 长文本数据
mediumblob 中长二进制数据
mediumtext 中长文本数据
longblob 超长二进制数据
longtext 超长文本数据
== 时间类型:==
date 1000-01-01至9999-12-31
time -838:59:59至838:59:59 HH:MM:SS
datetime 1000-01-01 00:00:00至9999-12-31 23:59:59 混合时间日期
timestamp 1970-01-01 00:00:00 至2038-01-19 03:14:07 混合日期和时间值