创建数据库(CREATE)

# 语法
mysql> help create database
Name: 'CREATE DATABASE'
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification:
[DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name
# 创建数据库
mysql> create database mydb01;
Query OK, 1 row affected (0.00 sec) mysql> create SCHEMA mydb02;
Query OK, 1 row affected (0.00 sec)
# 建库时提示已存在,可以使用 IF NOT EXISTS 避免报错
mysql> create database mydb;
ERROR 1007 (HY000): Can't create database 'mydb'; database exists mysql> create database IF NOT EXISTS mydb;
Query OK, 1 row affected, 1 warning (0.00 sec) mysql> create database IF NOT EXISTS mydb;
Query OK, 1 row affected, 1 warning (0.00 sec)
# 查看建库语句
mysql> show create database mydb;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| mydb | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)
# 创建数据库并指定字符集
mysql> create database db3 charset utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec) mysql> show create database db3;
+----------+--------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------+
| db3 | CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec) # 不指定校验规则默认就是 utf8_general_ci
mysql> create database db4 charset utf8;
Query OK, 1 row affected (0.00 sec)

删除数据库(DROP)

mysql> drop database db1;
Query OK, 0 rows affected (0.00 sec)

修改数据库(ALTER)

mysql> show create database db2;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| db2 | CREATE DATABASE `db2` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec) mysql> alter database db2 charset utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.00 sec) mysql> show create database db2;
+----------+--------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------+
| db2 | CREATE DATABASE `db2` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)

创建数据表(CREATE)

# 语法
mysql> help create table;
Name: 'CREATE TABLE'
Description:
Syntax:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options] CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
[partition_options]
[IGNORE | REPLACE]
[AS] query_expression CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name) }
# 建表
# 1.进入一个库
mysql> use db2
Database changed
# 2.查看当前所在库
mysql> select database();
+------------+
| database() |
+------------+
| db2 |
+------------+
1 row in set (0.00 sec) # 3.1 建表,建表最少有一列
mysql> create table tb1;
ERROR 1113 (42000): A table must have at least 1 column mysql> create table tb1(id int);
Query OK, 0 rows affected (0.04 sec) # 3.2 建表,建表有多个列
mysql> create table student(
-> id int,
-> name varchar(12),
-> age tinyint,
-> gender enum('M','F'),
-> cometime datetime);
Query OK, 0 rows affected (0.01 sec) # 3.3 插入数据
mysql> insert into student values(1,'wqh',18,'male',now());
...
......
mysql> select * from student;
+------+------+------+--------+---------------------+
| id | name | age | gender | time |
+------+------+------+--------+---------------------+
| 1 | wqh | 18 | male | 2020-07-14 20:58:52 |
| 2 | wzh | 18 | male | 2020-07-14 20:58:58 |
| 3 | djd | 18 | male | 2020-07-14 21:00:24 |
| 4 | tcy | 18 | female | 2020-07-14 21:00:33 |
| 5 | gsp | 18 | male | 2020-07-14 21:00:43 |
| 6 | cjq | 18 | male | 2020-07-14 21:00:53 |
+------+------+------+--------+---------------------+
6 rows in set (0.00 sec) # 4.查看表
mysql> show tables;
+---------------+
| Tables_in_db2 |
+---------------+
| tb1 |
+---------------+
1 row in set (0.00 sec) mysql> desc tb1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

数据表的数据属性

# 查看创建数据表的语句
mysql> show create table students;
| students | CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生id',
`name` varchar(12) NOT NULL COMMENT '学生姓名',
`age` tinyint(3) unsigned NOT NULL COMMENT '学生年龄',
`gender` enum('M','F') DEFAULT 'M' COMMENT '学生性别',
`cometime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '入学时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |
1 row in set (0.00 sec) # 查看数据表的详细描述
mysql> desc students;
+----------+---------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(12) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| gender | enum('M','F') | YES | | M | |
| cometime | datetime | YES | | CURRENT_TIMESTAMP | |
+----------+---------------------+------+-----+-------------------+----------------+
5 rows in set (0.00 sec)

数据类型属性(Type)

# 字段数据类型(Type)

int			整数,范围 -2^31 - 2^31-1           # 即 -2147483648 - 2147483647
tinyint 最小整数 -128 - 127 # 如年龄,如果设置字段值非负数,范围变化为 0 - 255
varchar 字符类型(变长) # 如身份证号
char 字符类型(定长) # 如名字
enum 枚举类型 # 如性别,给其固定选项,只能选则固定选项中的值
datetime 时间类型 # 年月日时分秒
date 时间类型 # 年月日 # int 类型
mysql> create table tb1(id int);
Query OK, 0 rows affected (0.04 sec) mysql> insert tb1 values(1);
Query OK, 1 row affected (0.01 sec) # 下面这条虽然报错,但其实会显示 11111111111 ,因为 my.cnf 的一条默认配置(最底行)
mysql> insert tb1 values(11111111111);
ERROR 1264 (22003): Out of range value for column 'id' at row 1 # 删除默认配置,找到 /etc/my.cnf 删除下面的行
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # 删除默认配置后,不论插入多大的值,最大只能是 2147483647,最小只能是 -2147483648
mysql> insert tb1 values(2147483647);
Query OK, 1 row affected (0.00 sec)
# 报错,但插入成功,数据表中显示数据为 2147483647
mysql> insert tb1 values(2147483648);
ERROR 1264 (22003): Out of range value for column 'id' at row 1 mysql> insert tb1 values(-2147483648);
Query OK, 1 row affected (0.00 sec)
# 报错,但插入成功,数据表中显示数据为 -2147483648
mysql> insert tb1 values(-2147483649);
ERROR 1264 (22003): Out of range value for column 'id' at row 1 # enum 类型
mysql> create table tb2(id int,sex enum('male','female'));
Query OK, 0 rows affected (0.02 sec) mysql> insert into tb2 values(1,'male');
Query OK, 1 row affected (0.00 sec)
# 如果插入的数据不符合 enum 类型设置的固定选项,会报错、或者值为空
mysql> insert into tb2 values(1,'other');
ERROR 1265 (01000): Data truncated for column 'sex' at row 1

其他属性(Null,Key,Default,Extra)

NOT NULL: 			# 非空
PRIMARY KEY: # 主键(唯一且非空的)
AUTO_INCREMENT: # 自增(此列必须是:PRIMARY KEY 或者 UNIQUE KEY)
UNIQUE KEY: # 唯一键,单独的唯一的
DEAFULT: # 默认值
UNSIGNED: # 非负数
COMMENT: # 注释

创建数据表(设置更多属性,CREATE)

# 1.建表语句
mysql> create table students
-> (id int primary key auto_increment comment "学生ID",
-> name varchar(12) not null comment "学生名字",
-> age tinyint unsigned not null comment "年龄",
-> gender enum('M','F') default 'M' comment "性别",
-> register_time datetime default now() comment "注册时间"); # 2.查看建表语句
mysql> show create table students;
| students | CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生ID',
`name` varchar(12) NOT NULL COMMENT '学生名字',
`age` tinyint(3) unsigned NOT NULL COMMENT '年龄',
`gender` enum('M','F') DEFAULT 'M' COMMENT '性别',
`register_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
1 row in set (0.00 sec) # 3.插入数据
mysql> insert into students values(1,'zzzwqh',18,'M',now());
Query OK, 1 row affected (0.00 sec)
# 因为主键相同无法插入数据
mysql> insert into students values(1,'zzzwqh',18,'M',now());
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
# 正确插入数据方法
mysql> insert into students values('2','zzzwqh',18,'M',now());
Query OK, 1 row affected (0.00 sec)
# 主键已经设置自增没必要自己插入 # 插入数据的正规书写格式
mysql> insert into students(name,age) values('wqh',18);
Query OK, 1 row affected (0.00 sec) mysql> insert into students(name,age) values('wzh',18);
Query OK, 1 row affected (0.00 sec) mysql> insert into students(name,age) values('djd',18);
Query OK, 1 row affected (0.00 sec) mysql> insert into students(name,age,gender) values('tcy',18,'F');
Query OK, 1 row affected (0.00 sec) mysql> insert into students(name,age) values('gsp',18);
Query OK, 1 row affected (0.00 sec) mysql> insert into students(name,age) values('cjq',18);
Query OK, 1 row affected (0.00 sec) mysql> select * from students;
+----+------+-----+--------+---------------------+
| id | name | age | gender | register_time |
+----+------+-----+--------+---------------------+
| 1 | wqh | 18 | M | 2020-07-14 22:01:58 |
| 2 | wzh | 18 | M | 2020-07-14 22:02:04 |
| 3 | djd | 18 | M | 2020-07-14 22:02:11 |
| 4 | tcy | 18 | F | 2020-07-14 22:02:27 |
| 5 | gsp | 18 | M | 2020-07-14 22:02:36 |
| 6 | cjq | 18 | M | 2020-07-14 22:02:40 |
+----+------+-----+--------+---------------------+
6 rows in set (0.00 sec)

删除数据表(DROP)

# 删除数据表 student
mysql> drop table student;

修改数据表(ALTER)

# 1.新建表
mysql> create table tabletest(daijiadong tinyint);
Query OK, 0 rows affected (0.04 sec # 2.修改表名
mysql> alter table tabletest rename stu;
Query OK, 0 rows affected (0.01 sec) # 3.插入新字段
mysql> alter table stu add rengyufeng int;
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc stu;
+------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------+------+-----+---------+-------+
| daijiadong | tinyint(4) | YES | | NULL | |
| rengyufeng | int(11) | YES | | NULL | |
+------------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec) # 4.插入多个新字段
mysql> alter table stu add liukong int,add wangzhangxing int;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc stu;
+---------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+------+-----+---------+-------+
| daijiadong | tinyint(4) | YES | | NULL | |
| rengyufeng | int(11) | YES | | NULL | |
| liukong | int(11) | YES | | NULL | |
| wangzhangxing | int(11) | YES | | NULL | |
+---------------+------------+------+-----+---------+-------+
4 rows in set (0.00 sec) # 5.插入字段到最前面
mysql> alter table stu add kangpeiwen varchar(100) first;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc stu;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| kangpeiwen | varchar(100) | YES | | NULL | |
| daijiadong | tinyint(4) | YES | | NULL | |
| rengyufeng | int(11) | YES | | NULL | |
| liukong | int(11) | YES | | NULL | |
| wangzhangxing | int(11) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
5 rows in set (0.01 sec) # 6.插入字段到指定字段后面
mysql> alter table stu add chenjianqing varchar(100) after daijiadong;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc stu;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| kangpeiwen | varchar(100) | YES | | NULL | |
| daijiadong | tinyint(4) | YES | | NULL | |
| chenjianqing | varchar(100) | YES | | NULL | |
| rengyufeng | int(11) | YES | | NULL | |
| liukong | int(11) | YES | | NULL | |
| wangzhangxing | int(11) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec) # 7.删除指定列
mysql> alter table stu drop daijiadong;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc stu;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| kangpeiwen | varchar(100) | YES | | NULL | |
| chenjianqing | varchar(100) | YES | | NULL | |
| rengyufeng | int(11) | YES | | NULL | |
| liukong | int(11) | YES | | NULL | |
| wangzhangxing | int(11) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec) # 8.修改字段
mysql> alter table stu change rengyufeng congtianqi int;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc stu;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| kangpeiwen | varchar(100) | YES | | NULL | |
| chenjianqing | varchar(100) | YES | | NULL | |
| congtianqi | int(11) | YES | | NULL | |
| liukong | int(11) | YES | | NULL | |
| wangzhangxing | int(11) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec) # 9.修改字段属性
mysql> alter table stu modify congtianqi tinyint;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc stu;
+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| kangpeiwen | varchar(100) | YES | | NULL | |
| chenjianqing | varchar(100) | YES | | NULL | |
| congtianqi | tinyint(4) | YES | | NULL | |
| liukong | int(11) | YES | | NULL | |
| wangzhangxing | int(11) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

DDL 数据定义语言的更多相关文章

  1. oracle学习笔记(三) DCL 数据控制语言与 DDL 数据定义语言

    DCL 数据控制语言 Data control language 之前说过的授权和收权利语句 grant, revoke DDL 数据定义语言 Data define language create ...

  2. sql 两大类 DDL数据定义语言 和DCL数据控制语言

    SQL分为五大类: DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言. DDL (date definition lang ...

  3. Hive 官方手册翻译 -- Hive DDL(数据定义语言)

    Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache ...

  4. mysql DDL数据定义语言

    DDL数据定义语言 本节涉及MySQL关键字:create.alter(rename,add,chang,modify,drop).drop.delete.truncate等. -- 创建表:-- 数 ...

  5. DDL数据定义语言

    DDL数据定义语言 (一)概述 DDL(Data Definition Language):数据定义语言,用来定义数据库对象,库.表.列等:创建.删除.修改 库,表结构.主要分为操作数据库的DDL和操 ...

  6. Oracle language types(语言种类) 表的相关操作 DDL数据定义语言

    数据定义语言 Data Definition Language Statements(DDL)数据操纵语言 Data Manipulation Language(DML) Statements事务控制 ...

  7. 【MySQL】DDL数据定义语言的基本用法create、drop和alter(增删改)

    DDL 的基础语法 文章目录 DDL 的基础语法 对数据库进行定义 对数据表进行定义 创建表结构(数据表) 设计工具 修改表结构 小结 参考资料 简单复习一波 SQL必知必会 DDL 的英文全称是 D ...

  8. MySQL之DDL数据定义语言:库、表的管理

    库的管理 常用命令 #创建库 create database if not exists 库名 [ character set 字符集名]; create database if not exists ...

  9. ODPS SQL <for 数据定义语言 DDL>

    数据定义语言:(DDL) 建表语句: CREATE TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...

随机推荐

  1. 使用call、apply、bind继承及三者区别

    js里的继承方法有很多,比如:使用原型链的组合继承.es6的Class.寄生继承以及使用call.apply.bind继承.再说继承之前,我们先简单了解下它们的区别. 一.区别: 同:三者都是改变函数 ...

  2. ts类与修饰符

    最近在用egret做游戏,就接触到了ts,刚开始的时候觉得类挺难的,毕竟大多数的JavaScript工程师工作中不怎么需要用到这个,但是学起来就不愿意撒手了,真香! typescript其实是es6的 ...

  3. Linux下载并安装JDK1.8

    https://blog.csdn.net/Future_LL/article/details/84667634

  4. Windows下nginx设置开机自启动

    第一步:下载 WinSW https://github.com/winsw/winsw/releases/download/v2.10.3/WinSW.NET4.exe 64位系统 https://g ...

  5. Mybatis plus通用字段自动填充的最佳实践总结

    在进行持久层数据维护(新增或修改)的时候,我们通常需要记录一些非业务字段,比如:create_time.update_time.update_by.create_by等用来维护数据记录的创建时间.修改 ...

  6. XV6学习(1) Lab util

    正在学习MIT的6.S081,把做的实验写一写吧. 实验的代码放在了Github上. 第一个实验是Lab util,算是一个热身的实验,没有涉及到系统的底层,就是使用系统调用来完成几个用户模式的小程序 ...

  7. Java并发组件三之Semaphore

    使用场景:常用于使用有限的资源,限制线程并发的最大数量.默认情况下,信号量是非公平性的(先等待先执行为公平.类似于买东西的时候大家排队付款,先来的先付款是公平的.但是这时候有人插队,那就是非公平的)设 ...

  8. Boyer-Moore 投票算法

    Boyer-Moore 投票算法 http://theory.stanford.edu/~trevisan/cs154-12/notestream.pdf 众数

  9. spring restTemplate 进行http请求的工具类封装

    本文为博主原创,未经允许不得转载: 1.对常用调用的方法进行封装: import org.springframework.http.HttpHeaders; import com.alibaba.fa ...

  10. loj10001种树

    好久不写博客了,发现不好找做过和题!还得接着写啊! ------------------------------------------------------------------ 题目描述 某条 ...