# 表基本操作
## MySQL的存儲引擎
MySQL的主要存儲引擎:
* **InnoDB:**支持事務
> 事務:多條指令原子性的執行。
* MyISAM:不支持事務,但是它的數據訪問效率較高
## 表操作
**創建表**
> 表的元素有:表名、表的字段
>
> 表字段的元素有:字段名、**數據類型**、字段長度、**約束**
[mysql 常用數據類型](https://www.runoob.com/mysql/mysql-data-types.html)
```sql
CREATE TABLE table_name (
字段名稱 字段數據類型 [字段約束],
字段名稱 字段數據類型 [字段約束]
)
```
示例:
```sql
-- 創建表的語句
CREATE TABLE student_info (
code VARCHAR(50),
name VARCHAR(50)
)
```
**SQL語言的注釋**
用`--`表示注釋部分的內容
**MySQL 字段數據類型**
> 主要分為:數值、日期、字符串三種類型。
數值類型:MySQL 是支持所有標準 SQL 中的數值類型。在絕大多數的應用程序中,我們使用 INT 和 DECIMAL 類型就可以了。
* INT:整型
* DECIMAL:浮點類型
* 其他數值類型:SMALLINT、NUMBERIC
日期類型:一般使用 DATETIME (用日期和時間構成)、DATE(只是表示日期),其他不常用的還有 TIME 、YEAR等等。
字符串類型:一般最常使用 VARCHAR(可變長度)、CHAR(定長)、TEXT(長文本類型,例如博客文章等數據),其他不常用的還有 LONGTEXT、TINYTEXT等等。
> VARCHAR 和 CHAR 的區別:例如 VARCHAR 定義的長度為 200,在使用的時候是存儲了 4 個字符長度的字符串,那么在數據庫中只會占用 4 個字符的數據空間,CHAR 是定長,無論存儲多少數據,在數據空間中都會占用到定義的長度。
在數據中,我們一般不會去存儲類似照片、視頻這樣的二進制文件,而是把這些文件在服務器中的訪問地址用字符串類型的數據進行存儲。
> 在定義數據庫字段名稱時,由于數據庫不區分大小寫,所以,一般碰到了多個單詞,我們用`_`分隔
示例:
```sql
-- 創建表的語句
CREATE TABLE student_info (
code CHAR(2),
name VARCHAR(50),
age INT(12),
weight DECIMAL(10, 2),
birthday DATE,
in_school DATETIME,
description TEXT
)
```
**表的約束**
在一個完整的表中,是需要對表中的字段進行相關約束的。
> 使用約束主要是為了保證數據表中數據的合法性以及相對完整性。
約束類型包括:
* 主鍵約束(PRIMARY KEY:PK):唯一的確定在數據表中的記錄,而且主鍵約束是不能為空的,我們一般使用沒有業務含義的字段去進行主鍵定義,在MySQL中可以使用自增長類型的主鍵或者可以使用 UUID 。
* 非空約束(NOT NULL)
* 默認值(DEFAULT)
* 唯一約束(UNIQUE KEY:UK)
* 外鍵約束(FOREIGN KEY:FK)
語法:
```sql
CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段) REFERENCES 外鍵關聯表(關聯表的字段)
```
* 自動增長(AUTO\_INCREMENT)、
綜合示例:
```sql
-- 創建表的語句
CREATE TABLE student_info1 (
id INT AUTO_INCREMENT PRIMARY KEY,
-- 建立非空和唯一性約束
code CHAR(2) NOT NULL UNIQUE,
name VARCHAR(50) NOT NULL DEFAULT 'zhangsan',
age INT(12) NOT NULL,
weight DECIMAL(10, 2),
birthday DATE NOT NULL,
in_school DATETIME NOT NULL,
description TEXT
)
CREATE TABLE student_account1 (
id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT,
account VARCHAR(20),
password VARCHAR(20),
CONSTRAINT FK_SI_SA_01 FOREIGN KEY (student_id) REFERENCES student_info1(id)
)
```
> 主鍵是用來定義一條記錄的唯一性的,在應用程序中,一般通過 ID 找到某條記錄,主鍵是不會用過更新的。
>
> 在建立了外鍵關系的兩個表中,一般是子表通過某個字段引用主表的**主鍵**數據,如果要去對外鍵數據進行處理,一般我們會先解除外鍵關系,然后對數據處理后再加上。
**刪除表**:自學完成。
**修改表**:自學完成。
- 我們在做什么?
- 為什么是內存?
- 我們實際上在做什么
- HTML基礎
- Web原理和HTML簡介
- Web原理
- HTML概念
- HTML標簽
- 標簽
- HTML固定基本結構
- 第一個HTML頁面
- 工具的使用
- 標題
- <hr>和<p>標簽
- 路徑概念
- 超級鏈接
- 列表
- 表格
- 表單的設計與使用
- 表單域的原理
- 文本框和密碼框
- 單選框和復選框
- 下拉列表框
- 多行文本和上傳
- 提交按鈕和重置按鈕
- 為CODING COFFEE加入在線購買頁
- HTML5
- 定位服務
- CSS
- CSS的基礎使用
- CSS簡介
- CSS樣式規則和加載方式
- 選擇器
- 偽類
- CSS優先級和層疊
- CSS顏色
- 背景圖片
- 文本
- CSS列表
- DIV+CSS布局
- 內聯元素和區塊元素介紹
- Display屬性
- 盒子模型的邊距和邊框
- 浮動和清除浮動
- 用Position屬性進行定位
- 專題:居中和對齊
- flex布局
- CSS新特性
- CSS3邊框
- 動畫
- Javascript
- HelloWorld
- 語句與變量
- 一切皆對象
- 標識符、注釋和區塊
- 基本數據類型和引用數據類型
- 語句
- 條件語句
- 循環語句
- 標準庫
- Array對象
- Number對象
- String對象
- JSON對象
- Math對象
- Date對象
- 數據類型
- typeof運算符
- number
- 字符串
- 布爾類型
- 函數
- 數組
- Dom模型
- Dom和Dom節點
- 特征相關屬性
- 節點對象方法
- Element對象
- Attribute對象
- Text節點和CSS操作
- 事件模型
- WebStorage
- BOM模型
- window對象
- 計時事件
- jQuery基礎
- 認識jQuery
- jQuery對象和DOM對象
- jQuery選擇器
- jQuery Dom操作
- 查找節點和創建節點
- 插入節點和刪除節點
- 復制節點和替換節點
- 包裹節點和屬性操作
- 樣式操作
- 設置和獲取HTML、文本和值
- 遍歷節點和CSS操作
- jQuery 事件和動畫
- 事件綁定與冒泡處理
- jQuery動畫
- jQuery 插件
- validate 插件
- jQuery與Ajax的應用
- Ajax簡介
- jquery中的Ajax
- Vue.js基礎與實戰
- HelloWorld
- v-for、v-on、v-model
- 組件化編程
- 生命周期函數(鉤子)
- 計算屬性、偵聽器、方法
- class與style綁定
- 關于組件的一些問題
- 單項數據流和Prop驗證
- 項目環境搭建
- 關于git的一些情況
- JavaWeb教程
- 對象和類的概念
- 對象和類的介紹
- 對象和類的介紹2
- 類的繼承與權限控制
- Object類
- 多態的內容
- 容器
- 流
- Servlet
- Servlet練習
- Session和Cookie
- JSP
- 內置對象
- JSTL和EL
- JDBC
- 文件上傳和下載
- 過濾器
- 數據庫
- 數據庫介紹
- MySQL的安裝
- SQL
- 表基本操作
- 修改數據語句
- 數據檢索操作
- 多表數據操作
- 表結構設計
- 綜合應用
- 作業與練習
- Maven教程
- Maven安裝配置