MySQL數據庫02(數據類型 字段的約束及屬性 表的DML語句 )

一、MySQL數據類型--數值類型

類型說明取值範圍存儲需求
TINYINT非常小的數據

有符值:-2(7次方)~ 2(7次方)-1 

 無符號值:0 ~ 2(8次方)-1

1字節
SMALLINT較小的數據有符值:  -2(15次方) ~ 2(15次方)-1  
無符號值:  0 ~ 2(16次方)-1 
2字節
MEDIUMINT中等大小的數據有符值:  -2(23次方) ~ 2(23次方)-1  
無符號值:  0 ~ 2(24次方)-1 
3字節
INT標準整數有符值: -2(31次方) ~ 2(31次方)-1  
無符號值:0 ~ 2(32次方)-1  
4字節
BIGINT較大的整數有符值: -2(63次方)~2(63次方)-1
無符號值:0 ~2(64次方)-1   
8字節
FLOAT單精度浮點數±1.1754351e -38
4字節
DOUBLE雙精度浮點數±2.2250738585072014e -308
8字節
DECIMAL
字符串形式的浮點數Decimal(M,D)
M+2個字節

UNSIGNED屬性:標識爲無符號數

ZEROFILL屬性:寬度(位數)不足以0填充

例:

 
CREATE DATABASE python7;
SHOW DATABASES;
USE python7;
#創建一個名稱爲tb_type的表 這一列名稱爲爲sid 存儲數據類型爲INT字節寬度爲4  ZEROFILL:默認補齊不足指定位數用0填充如果超出則填寫實際寬度
CREATE TABLE `tb_type`(
	`sid` INT(4) ZEROFILL);
#給tb_type 中添加內容
INSERT INTO `tb_type`
	VALUE(12),(1234),(123456);

執行命令得


二、字符串、日期類型

字符串類型說明長度
CHAR[(M)]定長字符串M字節
VARCHAR[(M)]可變字符串可變長度
TINY TEXT微型文本串0~2(8次方)–1字節
TEXT文本串0~2(16次方)–1字節
日期類型格式取值範圍
DATEYYYY-MM-DD  日期格式1000-01-01~ 9999-12-31
DATE TIMEYY-MM-DD hh:mm:ss:1000-01-01 00:00:00 ~9999-12-31 23:59:59
TIMEhh:mm:ss-835:59:59 ~ 838:59:59
TIMES TAMPYYYYMMDDHHMMSS1970年某時刻~2038年某時刻,精度爲1秒
TEARYYYY格式的年份1901-2155

若某日期字段默認值爲當前日期,一般設置爲TIMESTAMP類型

三、字段的約束及屬性

約束是確保一個表數據的唯一性和完整性

主鍵每行的唯一標識符,僅僅通過它就能準確定位到一行,其中主鍵列在整個表中不能有重複,必須包含唯一的值(不能爲NULL)

外鍵既能確保數據完整性,也能表現表之間的關係。添加了外鍵之後,插入引用表的記錄要麼必須被引用表中被引用列的某條記錄匹配,要麼外鍵列的值必須設置爲NULL

  外鍵和主鍵不一樣,每個表中的外鍵數目不限制唯一性。在每個表中,每一有-~253個外鍵。唯一的限制是一個列只能引用一個外鍵。一個列可以被多個外鍵引用。

如果表A的主關鍵字是表B中的字段,則該字段稱爲表B的外鍵,表A稱爲主表,表B稱爲從表。外鍵是用來實現參照完整性的。

名稱                          代 碼                                                             說明
無符號UNSIGNED無符號
非空約束 NOT NULL字段不允許爲空
默認約束DEFAULT賦予某字段默認值
唯一約束UNIQUE KEY(UK)

設置字段的值是唯一的

允許爲空,但只能有一個空值

主鍵約束PRIMARY KEY(PK)

設置該字段爲表的主鍵

可謂一表示該表記錄 

外鍵約束FOREIGN KEY(FK)

用於在兩表之間建立關係,

需要指定引用主表的哪一字段 

自動增長AUTO_INCREMENT

設置該列表自增字段

默認每條自增1 

通常用於設置主鍵 

語法:

CREATE TABLE [IF NOT EXISTS]表名(

字段1 數據類型[字段屬性|約束][索引][註釋],

...

字段n 數據類型[字段屬性|約束][索引][註釋]

)[表類型][表字符集][註釋];

(注:多字段使用逗號隔開   保留字用撇號括起來  單行註釋:#....   多行註釋/#....#/)

創建學生表

 
CREATE TABLE `student`(
  `studentNo` INT(4) PRIMARY KEY,`name` CHAR(10),
...);

主鍵

 
CREATE TABLE student (
  `studentNo` INT(4) PARIMARY KEY,
...);

 註釋

 
CREATE TABLE text(
  `id` INT(11) UNSIGNED COMMENT'編號'#無符號
)COMMENT='測試表';'

設置字符集編碼

 
CREATE TABLE[IF NOT EXISTS] 表名(
 #省略代碼
)CHARSET=字符集名;

例:

在python7數據中建一個學生表


代碼如下:

 
CREATE TABLE student(
	studentNo INT(4) NOT NULL PRIMARY KEY COMMENT'學號',
	loginPwd VARCHAR(20) NOT NULL COMMENT'密碼',
	studentName VARCHAR(50) NOT NULL COMMENT'姓名',
	sex CHAR(2) NOT NULL DEFAULT'男' COMMENT'性別',
	gradeID INT(4) UNSIGNED COMMENT'年級編號',
	phone VARCHAR(50) COMMENT'電話',
	address VARCHAR(255) DEFAULT'地址不詳' COMMENT'地址',
	bornDate DATETIME COMMENT'出生日期',
	email VARCHAR(50) COMMENT'郵件賬號',
	identityCard VARCHAR(18) UNIQUE KEY COMMENT'身份證號'
)COMMENT='學生表'

執行命令得



四、1.<1>查看錶是否存在

 
USE python7;
SHOW tables;

執行命令得


<2>查看錶定義

語法:DESCRIBE 表名;  或者DESC 表名;

 
DESC student

執行命令得


(避免DOS窗口亂碼,可執行SET NAMES jbk;)


2.刪除表

語法: DROP TABLE[IF EXISTS] 表名;

 
USE python7;
DROP TABLE IF EXISTS `student`;#if語句可以不寫 但是所刪除內容必須存在讀取的表中否則報錯

3.修改表

<1>修改表名

語法:ALTER TABLE 舊錶名 RENAME[TO] 新表名;

<2>添加字段

語法:ALTER TABLE 表名 ADD 字段名 數據類型 [屬性];

<3>修改字段

語法:ALTER TABLE 表名 CHANGE 原字段名 新字段名 數據類型[屬性];

例:

 
#修改表名
ALTER TABLE student RENAME TO student1;
#添加字段
ALTER TABLE student1 ADD nikeName VARCHAR(30) NOT NULL;
#修改字段
ALTER TABLE student1 CHANGE nikeName haha INT(5);

執行命令得


<4>刪除字段

語法:ALTER TABLE 表名 DROP 字段名

 
#刪除字段
ALTER TABLE student1 DROP haha;

五、1.添加主鍵

語法: 

ALTER TABLE 表名 ADD CONSTRAINT 主鍵名

PRIMARY KEY 表名(主鍵字段);

 
CREATE TABLE grade(
	gradeID INT(4) UNSIGNED,
	gradeName VARCHAR (30) NOT NULL
)
ALTER TABLE grade ADD CONSTRAINT pk_gradeid
PRIMARY KEY grade(gradeID)

執行命令得


2.添加外鍵

語法: 

ALTER TABLE 表名 ADD CONSTRAINT 外鍵名

FOREIGN KEY (外鍵字段)

REFERENCES 關聯表名(關聯字段);

代碼如下

 
ALTER TABLE student1 ADD CONSTRAINT fk_gradeid
FOREIGN KEY(gradeID)
REFERENCES grade(gradeID)

執行命令得


3.刪除外鍵

注:刪除表時先刪除子表再刪除主表

刪除不能只刪除外鍵 否則還會存在,緊接着必須刪除索引

 
 #刪除外鍵  刪除表時 先刪除子表 再刪除主表
ALTER TABLE student3 DROP FOREIGN KEY fk_gradeid #刪除不能只刪除外鍵 否則還存在
ALTER TABLE student3 DROP INDEX fk_gradeid#還必須刪除索引

練習

需求說明
 result表需要添加的內容
主鍵約束:學號、課程編號和日期構成組合主鍵

外鍵約束:主表student和從表result通過studentNo字段建立主外鍵關聯

 
CREATE TABLE result(
	studentNo INT(4) NOT NULL COMMENT'學號',
	subjectNo INT(4) NOT NULL COMMENT'課程編號',
	examDate DATETIME NOT NULL COMMENT'考試日期',
	studentResult INT(4) NOT NULL COMMENT'考試成績'
)
#組合主鍵
ALTER TABLE result ADD CONSTRAINT pk_st_su_date
PRIMARY KEY result(studentNo,subjectNo,examDate)
#外鍵約束
ALTER TABLE student1 ADD CONSTRAINT fk_st_su_date
FOREIGN KEY(studentNo)
REFERENCES result(studentNo)

3.MySQL系統幫助

 
HELP contents;
HELP DATA TYPES;
HELP INT;

在DOS命令之執行得





在student表和result表中添加一些學生信息

student表


result表


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章