MySQL 基础知识1 (表的创建和更新)

一、表的创建方式

1. 使用具有交互式创建和管理表的工具

2. 直接使用MySQL语句操

3. 示例1:这里以第二种方式创建一个表名为 test 的例子:

 /* 使用SQL语句创表:不指定if not exists语句创建表 */
CREATE TABLE test (
 test_id INT NOT NULL AUTO_INCREMENT,
 test_name CHAR(50) NOT NULL,
 test_state CHAR(50) NULL,
 test_date  TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (test_id) 
 )ENGINE=INNODB;
 /* 使用SQL语句创表:指定if not exists语句创建表*/
CREATE TABLE  IF NOT EXISTS test (
 test_id INT NOT NULL AUTO_INCREMENT,
 test_name CHAR(50) NOT NULL,
 test_state CHAR(50) NULL,
 test_date  TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (test_id) 
 )ENGINE=INNODB

二、创建表的主要技巧

1. MySQL不允许使用函数作为默认值, 它只支持常量
2. 使用默认值而不是NULL值, 特别是对用于计算或数据分组的列尤为重要
3. 使用NULL值:不要将NULL值与空串相混淆, NULL值是没有值,它不是空串;如果指定''(或一对双引号),其间没有字符, 这在NOT NULL列中是允许的,
 空串是一个有效的值, 它不是无值, NULL值用关键字NULL而不是空串指定

三、主键再介绍

1. 主键值必须唯一,即表中的每行必须具有唯一的主键值
2. 主键值可分为单列主键和组合主键
3. 主键中只能使用不允许NULL值的列, 允许NULL值得列不能作为唯一标识

4. 示例2:这里简单创建一个组合主键(即两个及以上的主键,可以来自其他不同表的主键)

CREATE TABLE  IF NOT EXISTS test (
 test_id INT NOT NULL AUTO_INCREMENT,
 test_num INT NO NULL,
 test_name CHAR(50) NOT NULL,
 test_state CHAR(50) NULL,
 test_date  TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (test_id, test_num) 
 )ENGINE=INNODB

四、更新表结构

1. 关键字:ALTER TABLE之后给出需要更改的表名
2. 所做更改的列表
3. 注意:使用ALTER TABLE语句要极为小心, 应该在进行改动前做一个完整的备份(模式和数据的备份);数据表的更改不能撤销, 若增加不需要的列, 可能不能删除它们;  若删除了不该删除的列, 则可能导致该列所有数据丢失

4. 示例3:添加列和删除列

ALTER TABLE vendors ADD vend_phone CHAR(20);    -- 添加列
ALTER TABLE vendors DROP COLUMN vend_phone;     -- 删除列

主要用途:定义外键

ALTER TABLE orderitems ADD CONSTRAINT fk_orderitems_orders FOREIGN KEY (order_num) REFERENCES orders (order_num);    
ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (cust_id) REFERENCES customers (cust_id);    

五、重命名和删除表

RENAME TABLE test TO demo;                                      -- 重命名单表
RENAME TABLE demo1 TO test1, demo2 TO test2, demo3 TO test3;    -- 重命名多表
DROP TABLE test1;                         -- 删除单表 
DROP TABLE test2, test3, test4, test5;    -- 删除多表

六、MySQL引擎类型对比

1.INNODB:一个可靠的事务处理引擎, 但它不支持全文本搜索

2.MyISAM:一个性能极高的引擎, 它支持全文本搜索,但不支持事务处理

3.MEMORY:在功能上等同于MyISAM, 但由于数据存储在内存中, 速度很快(特别适合于临时表)

4.FULLTEXT关键字:

 (1). 不要在导入数据的时候时候该关键字, 在更新索引的时候需要花费少量时间;

 (2). 如果正在导入数据到一个新表,,此时不应该启用FULLTEXT索引, 应该首先导入所有数据,然后再修改表, 定义FULLTEXT, 这样将有助于更快地导入数据

SELECT note_text FROM  productnotes WHERE MATCH(note_text) Against('rabbit');

SELECT note_text FROM  productnotes WHERE note_text LIKE '%rabbit%';

SELECT note_text, MATCH(note_text) Against('rabbit') AS rank FROM  productnotes;

5.注意:引擎类型可以混用, 但缺陷在于:外键不能跨引擎, 即使用一个表的引擎不能引用具有不同引擎的表的外键

posted @ 2023-01-28 10:38  像风一样狂奔的独身犬  阅读(197)  评论(0)    收藏  举报