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