MySql學習(三)DDL常見操作

2021-09-29 05:32:53 字數 2247 閱讀 2020

環境:mysql5.7.25,cmd命令中進行演示。

ddl:data define language資料定義語言,主要用來對資料庫、表進行一些管理操作。

如:建庫、刪庫、建表、修改表、刪除表、對列的增刪改等等。

文中涉及到的語法用包含的內容屬於可選項,下面做詳細說明。

建立庫:

create database [if not exists] 庫名;
刪除庫

drop database [if exists] 庫名;
建庫通用寫法:

drop database [if exists] 舊庫名;

create database 新庫名;

建立表:

create table 表名(

欄位名1 型別[(寬度)] [約束條件] [comment '字段說明'],

欄位名2 型別[(寬度)] [約束條件] [comment '字段說明']

)[表的一些設定]

注意:

在同一張表中,欄位名不能相同

寬度和約束條件為可選引數,欄位名和型別是必須的

最後乙個欄位後不能加逗號

型別是用來限制 字段 必須以何種資料型別來儲存記錄

型別其實也是對字段的約束(約束欄位下的記錄必須為xx型別)

型別後寫的 約束條件 是在型別之外的 額外新增的約束

約束說明:

not null : 標識該字段為非空

default value: 為該字段設定預設值,預設值為value

primary kkey:  標識該字段為該錶的主鍵,可以唯一標識記錄,插入重複會報錯

foreign key:為表中的字段設定外來鍵

語法:foreign key(當前表的列名) references 引用的外來鍵表(外來鍵表中欄位名稱)

注意幾點:

兩張表中需要建立外來鍵關係的字段型別需要一致

要設定外來鍵的字段不能為主鍵

被引用的字段需要為主鍵

被插入的值在外鍵表必須存在,如上面向test6中插入ts5_a為2的時候報錯了,原因:2的值在test5表中不存在

unique key(uq):標識該字段的值是唯一的

auto_increment : 標識該字段的值自動增長(整數型別,而且為主鍵)

關於自動增長欄位的初始值、步長可以在mysql中進行設定,比如設定初始值為1萬,每次增長10

注意:

自增長列當前值儲存在記憶體中,資料庫每次重啟之後,會查詢當前表中自增列的最大值作為當前值,如果表資料被清空之後,資料庫重啟了,自增列的值將從初始值開始(只有清空資料,資料庫重啟,自增列的值才從初值開始)

刪除表:

drop table [if exists] 表名
修改表名:

alter table old_table rename [to] new_table;

alter table table_name comment '備註資訊'

只複製表結構:

create table 表名 like 被複製的表名;
複製表結構和+ 資料:

create table 表名 [as]  select 字段,.... from 被複製的表  [where 條件]
新增列:

alter table 表名 add column 列名 型別  [列約束];
修改列:

alter table 表名 modify colum 列名 新型別 [約束]

或者alter table 表名 change column 列名 新列名 新型別 [約束]

2種方式區別:modify不能修改列名,change可以修改列名

刪除列:

alter table 表名 drop column 列名;

DDL語言之常見約束(mysql)

含義 一種限制,用於限制表中的資料,為了保證表中的資料的準確和可靠性。分類 六大約束 1 not null 非空,用於保證該字段的值不能為空,比如姓名 學號等 2 default 預設,用於保證該字段有預設值,比如性別 3 primary key 主鍵,用於保證該字段的值具有唯一性,並且非空 比如學...

MySQL常用DDL操作命令

本篇內容涉及兩個方面 資料庫操作的常用的ddl命令 表操作的常用的ddl命令 建立資料庫 create databases if notexists db name character set 註解 db name 資料庫名 if not exists 表示資料庫不存在時,才能建立資料庫。chara...

學習MySQL之DDL語言

1庫和表的管理 1 庫的管理 建立庫 create database if not exists 庫名 刪除庫 drop database if exists 庫名 2 表的管理 建立表 create table if not exists 表名 欄位名字段型別 字段約束 欄位名字段型別 字段約束 ...