1. 程式人生 > 其它 >Mysql-02-建立表,約束,修改表的結構等

Mysql-02-建立表,約束,修改表的結構等

技術標籤:Mysql資料庫mysqljavasql

Mysql-02-建立表,約束,修改表的結構等

文章目錄

  • 建立資料庫並設定編碼格式

create database testmy charset utf8

create database if not exists testmy charset utf8

  • 刪除資料庫

drop database name;

  • 修改資料庫字符集

alter databases testmy charset gbk

查詢資料庫

show databases

設計表:

表中有以下約束

表的欄位

欄位資料型別和長度

約束

設計表資料型別

char(n) 長度為n的字串

varchar(n) 最大長度為n的可變長字串

date 日期 包含年月日

datetime 時間 時分秒

整數

TINYINT1-128127
SMALLINT2-3276832767
MEDIUMINT3-83886088388607
INT4-21474836482147483647
BIGINT8-92233720368547758089223372036854775807

浮點數

型別位元組
float4
double8

資料型別(M,D)

M:精度,資料的總長度;
D:標度,小數點後的長度
Float(6,2)、Double(6,2)

BOLB用於儲存圖片視訊

BOLB是一個二進位制大物件,可以容納可變數的資料,用於儲存圖片視訊等資訊

有四種BLOB型別: tinyBLOB BLOB mediumBLOB 和longBLOB,他們只是可以容納的最大長度不同

在這裡插入圖片描述

主鍵:

  • 在一張表中代表唯一的一條記錄,不能為空,不能重複

約束

  • primary key 設定主鍵約束

  • not null 不能為空

  • unique 唯一鍵

  • defaulit 預設值

    comment 註釋

主鍵的自動增長

  • AUTO_INCREMENT

預設值

  • DEFAULT default_value

建立表語法:

CREATE TABLE 表名(列名 資料型別 [約束] [預設值] [ 註釋],…)

CREATE TABLE  t_student(
                      stu_num INT,
                      stu_name  VARCHAR(10),
                      stu_sex CHAR(1),
                      stu_birthday DATE,
                      stu_score FLOAT(4,1),
                      stu_phone VARCHAR(11),
                      stu_reg_time DATETIME
                )
#刪除表
DROP TABLE t_student

刪除表:

drop table 表名

修改表

rename table 舊錶名 to 新表名

複製表名

create table 新表名 like 被複制的表名

建立表: 新增約束

主鍵約束 primary key 表示唯一的一條記錄 不能為空 不能重複
不能為空 not null
唯一約束 unique
檢察約束 chaeck()
主鍵自動增長 AUTO_INCREMENT 主鍵必須為整數

方式1 在列後面直接新增

# 方式1 在列後面直接新增
CREATE TABLE t_student(
stu_num  INT PRIMARY KEY COMMENT '主鍵',
stu_name VARCHAR(10) NOT NULL COMMENT '姓名',
stu_sex CHAR(1)  DEFAULT '男',# 預設值
stu_birth DATE    ,
stu_score FLOAT(4,1)  CHECK(stu_score<=100),  # 插入條件
stu_phone VARCHAR(11)  NOT NULL UNIQUE, #NOT NULL 不能為空    UNIQUE唯一
stu_reg_time DATETIME   
 )
 DROP TABLE  t_student; # 刪除表

方式2將約束新增在後面

 
 # 方式2將約束新增在後面
 CREATE TABLE t_student(
stu_num  INT COMMENT '主鍵',
stu_name VARCHAR(10) COMMENT '姓名',
stu_sex CHAR(1)  DEFAULT '男',# 預設值
stu_birth DATE    ,
stu_score FLOAT(4,1)  CHECK(stu_score<=100),  # 插入條件
stu_phone VARCHAR(11)  NOT NULL UNIQUE, #NOT NULL 不能為空    UNIQUE唯一
stu_reg_time DATETIME,   
CONSTRAINT num_pk PRIMARY KEY(stu_num),
  CONSTRAINT score_check CHECK(stu_score<=100),,
CONSTRAINT phone UNIQUE(stu_phone)

 )

修改表結構

新增主鍵約束

ALTER TABLE 表名 ADD PRIMARY KEY(列名)
ALTER TABLE 表名 DROP PRIMARY KEY

設定自動增長

ALTER TABLE 表名 MODIFY 列名 型別 AUTO_INCREMENT;
ALTER TABLE users MODIFY 列名 型別 AUTO_INCREMENT;

設定不能為空

ALTER TABLE 表名 MODIFY 列名 型別 NOT NULL;
ALTER TABLE 表名 CHANGE COLUMN 列名 列名 型別 NULL;

新增唯一約束

ALTER TABLE 表名 ADD UNIQUE(列名)
ALTER TABLE 表名 DROP INDEX 索引名;

新增檢查約束

ALTER TABLE 表名 ADD CONSTRAINT 約束名 CHECK(條件)
ALTER TABLE 表名 DROP CHECK 約束名;

新增列

ALTER TABLE 表名 ADD 列名 資料型別
ALTER TABLE 表名 ADD 列名 資料型別 FIRST
ALTER TABLE 表名 ADD 列名 資料型別 AFTER 列名

刪除列

ALTER TABLE 表名 DROP 列名

修改列名

ALTER TABLE 表名 CHANGE 舊列名 新列名 資料型別

修改列的資料型別

ALTER TABLE 表名 MODIFY 列名 新資料型別

相關程式碼

 #修改表名
 RENAME TABLE 	`t_student` TO student;
 
 # 複製表
 CREATE TABLE 新表名 LIKE  被複制的表名
 
 CREATE TABLE student1(
stu_num  INT,
stu_name  VARCHAR(10),
stu_sex CHAR(1),
stu_birth DATE,
stu_score FLOAT(4,1),
stu_phone VARCHAR(11),
stu_reg_time DATETIME
 )
 
 /*
新增主鍵約束
Alter table 表名 add primary key(列名)
 ALTER TABLE 表名  DROP PRIMARY KEY
 */
 
 ALTER	TABLE student1 ADD  CONSTRAINT num_pk PRIMARY KEY(stu_num)
 ALTER TABLE	student1 DROP PRIMARY KEY
 
 /*
 設定自動增長
 slter table 表名 modify 列名  型別 AUTO_INCREMENT;
 */
 
 ALTER TABLE student1 MODIFY stu_num INT AUTO_INCREMENT;
 
 #設定列表不能為空
 ALTER TABLE student1 MODIFY stu_name VARCHAR(10) NOT NULL;
 
 
 #設定列表可以為空
 ALTER TABLE student1 CHANGE COLLATE stu_name stu_name  VARCHAR(10) NULL;
 
 
 #新增唯一約束
 ALTER TABLE student1 ADD UNIQUE(stu_phone)
 ALTER TABLE student1 DROP INDEX stu_phone;
 
 
 #新增檢查約束
 #ALTER TABLE  表名 ADD CONSTRAINT 約束名 CHECK(條件)
#ALTER TABLE 表名  DROP CHECK  約束名;

ALTER TABLE  student1 ADD CONSTRAINT score_check CHECK(stu_score<=100)
ALTER TABLE student1  DROP CHECK  score_check;


#新增列名
#alter table 表名 add 列名 資料型別
ALTER	 TABLE student1 ADD COLUMN   address VARCHAR(50)  

ALTER	 TABLE student1 ADD COLUMN   address VARCHAR(50)  FIRST
ALTER	 TABLE student1 ADD COLUMN   address VARCHAR(50)   AFTER stu_sex


# 刪除列
ALTER	TABLE	student1 DROP COLUMN address;


#修改列名 ALTER TABLE    表名    CHANGE    舊列名   新列名    資料型別
ALTER TABLE   student1    CHANGE    address   stu_address    VARCHAR(50)



#修改列的資料型別
#ALTER TABLE   表名  MODIFY   列名  新資料型別
ALTER TABLE student1 MODIFY stu_phone INT