app界面設計流程圖河北搜索引擎優(yōu)化
是記錄,我不會記錄的特別詳細
第10章 創(chuàng)建和管理表
標識符命名規(guī)則
- 數(shù)據(jù)庫名、表名不得超過
30
個字符,變量名限制為29
個 - 只能包含 A–Z, a–z, 0–9, _共63個字符
- 數(shù)據(jù)庫名、表名、字段名等對象名中間不要包含空格
- 同一個MySQL軟件中,數(shù)據(jù)庫不能同名;同一個庫中,表不能重名;同一個表中,字段不能重名
必須保證你的字段沒有和保留字、數(shù)據(jù)庫系統(tǒng)或常用方法沖突。如果堅持使用,請在SQL語句中使
用`(著重號)引起來 - 保持字段名和類型的一致性:在命名字段并為其指定數(shù)據(jù)類型的時候一定要保證一致性,假如數(shù)據(jù)
類型在一個表里是整數(shù),那在另一個表里可就別變成字符型了
數(shù)據(jù)類型
類型 | 類型舉例 |
---|---|
整數(shù)類型 | TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT |
浮點類型 | FLOAT,DOUBLE |
定點數(shù)類型 | DECIMAL |
位類型 | BIT |
日期時間類型 | YEAR、TIME、DATE、DATETIME、TIMESTAMP |
文本字符串類型 | CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT |
枚舉類型 | ENUM |
集合類型 | SET |
二進制字符串類型 | BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB |
JSON類型 | JSON對象、JSON數(shù)組 |
空間數(shù)據(jù)類型 | 單值:GEOMETRY、POINT、LINESTRING、POLYGON; |
空間數(shù)據(jù)類型 | 集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION |
常用的
數(shù)據(jù)類型 | 描述 |
---|---|
INT | 從-231到231-1的整型數(shù)據(jù)。存儲大小為 4 個字節(jié) |
CHAR(size) | 定長字符數(shù)據(jù)。若未指定,默認為1 個字符,最大長度255 |
VARCHAR(size) | 可變長字符數(shù)據(jù),根據(jù)字符串實際長度保存,必須指定長度 |
FLOAT(M,D) | 單精度,占用4個字節(jié),M=整數(shù)位+小數(shù)位,D=小數(shù)位。 D<=M<=255,0<=D<=30,默認M+D<=6 |
DOUBLE(M,D) | 雙精度,占用8個字節(jié),D<=M<=255,0<=D<=30,默認M+D<=15 |
DECIMAL(M,D) | 高精度小數(shù),占用M+2個字節(jié),D<=M<=65,0<=D<=30,最大取值范圍與DOUBLE相同。 |
DATE | 日期型數(shù)據(jù),格式’YYYY-MM-DD’ |
BLOB | 二進制形式的長文本數(shù)據(jù),最大可達4G |
TEXT | 長文本數(shù)據(jù),最大可達4G |
創(chuàng)建和管理數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫
//方式1:創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE 數(shù)據(jù)庫名;
//方式2:創(chuàng)建數(shù)據(jù)庫并指定字符集合
CREATE DATABASE 數(shù)據(jù)庫名 CHARACTER SET 字符集;
//方式3:判斷數(shù)據(jù)庫是否已經(jīng)存在,不存在則創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE IF NOT EXISTS 數(shù)據(jù)庫名;
tips:數(shù)據(jù)庫不能改名,一些工具可以改名,它是先建庫,再復制所有表到新庫,刪除舊庫.
使用數(shù)據(jù)庫
- 查看當前所有數(shù)據(jù)庫
SHOW DATABASES;
- 查看當前正在使用的數(shù)據(jù)庫
SELECT DATABASE();
- 查看指定庫下所有的表
SHOW TABLES FROM 數(shù)據(jù)庫名;
- 查看數(shù)據(jù)庫的創(chuàng)建信息
SHOW CREATE DATABASE 數(shù)據(jù)庫名;
SHOW CREATE DATABASE 數(shù)據(jù)庫名\G;//這種在不使用可視化工具的前提下能好看點
- 使用/切換數(shù)據(jù)庫
USE 數(shù)據(jù)庫名;
修改數(shù)據(jù)庫
- 更改數(shù)據(jù)庫字符集
亂碼的時候需要用到這條命令
ALTER DATABASE 數(shù)據(jù)庫名 CHARACTER SET 字符集; //字符集就比如utf8,gbk等等
刪除數(shù)據(jù)庫
DROP DATABASE 數(shù)據(jù)庫名;
DROP DATABASE IF EXISTS 數(shù)據(jù)庫名;//存在就刪,不存在就不執(zhí)行操作
創(chuàng)建表
- 方式1
CREATE TABLE [IF NOT EXISTS] 表名(
字段1, 數(shù)據(jù)類型 [約束條件] [默認值],
字段2, 數(shù)據(jù)類型 [約束條件] [默認值],
字段3, 數(shù)據(jù)類型 [約束條件] [默認值],
……
[表約束條件]
);
//IF NOT EXISTS:若存在該表那么就不創(chuàng)建,反之就創(chuàng)建CREATE TABLE emp (
-- int類型
emp_id INT(8) AUTO_INCREMENT primary key,
-- 最多保存20個中英文字符
emp_name VARCHAR(20),
-- 總位數(shù)不超過15位
salary DOUBLE,
-- 日期類型
birthday DATE
);
- 方式2
使用AS subquery選項,將創(chuàng)建表和插入數(shù)據(jù)結合起來
CREATE TABLE table [(column1,column2,...)] AS subquery;CREATE TABLE e1 AS SELECT * FROM employees;
CREATE TABLE e2 AS SELECT * FROM employeees WHERE 1=2;//創(chuàng)建的emp2是空表
CREATE TABLE dept1
AS
SELECT employee_id, last_name, salary*12 ANNSAL, hire_date
FROM employees
WHERE department_id = 80;
查看數(shù)據(jù)表結構
SHOW CREATE TABLE 表名\G
修改表
這里是指修改表的結構,比如添加/刪除/重命名列
添加列
ALTER TABLE 表名 ADD [COLUMN] 字段名 字段類型 [FIRST | AFTER 字段名];
修改列
修改數(shù)據(jù)類型,長度,默認值和位置
ALTER TABLE 表名 MODIFY [COLUMN] 字段名1 字段類型 [DEFAULT 默認值] [FIRST | AFTER 字段名2]ALTER TABLE dept MODIFY last_name VARCHAR(30);//把last_name列的數(shù)據(jù)類型改為varchar(30)
ALTER TABLE dept MODIFY salary double(6,2) default 1000;//把salary的默認值改為1000
--重命名列
ALTER TABLE 表名 CHANGE [COLUMN] 列名 新列名 新數(shù)據(jù)類型;ALTER TABLE dept CHANGE department_name dept_name varchar(15);//把department_name列改為 dept_name varchar(15)ALTER TABLE 表名 DROP [COLUMN] 字段名;
ALTER TABLE dept DROP COLUMN job_id;
重命名表
- RENAME
RENAME TABLE emp TO emp1;
- ALTER TABLE
ALTER TABLE dept RENAME [TO] dept1;
刪除表
DROP TABLE [IF EXISTS] 數(shù)據(jù)表1 [,數(shù)據(jù)表2,..,數(shù)據(jù)表n];
這玩意不能回滾
清空表
刪除表中的所有數(shù)據(jù),釋放表的存儲空間
TRUNCATE TABLE test;
不能回滾