最近又看了一遍mysql的入门,总结如下:

1、unionunion all都可以起到关联结果集的作用,区别在于,union会自动去除关联的两个结果集中的重复数据,union all则不会主动去除两个结果集中的重复数据,会展示所有的数据;

2、insert、update、delete等操作时,一般来说在项目中select操作是最频繁的也是最紧急的,因此一般在进行其他操作时如果想降低优先级,可以使用low_priority关键字;例如:

INSERT LOW_PRIORITY INTO `db_sql`.`customers` ( `cust_id`, `cust_name`, `cust_address`, `cust_city`, `cust_state`, `cust_zip`, `cust_country`, `cust_contact`, `cust_email` )
VALUES
	( 16, 'Pep E.LaPew', '100 Main Street', 'Los Angeles', 'CA', '90046', 'USA', NULL, NULL );

3、insert、update多行数据时,一般某行报错后会导致后续sql都不能继续执行,此时可以在sql中加入ignore关键字;例如

INSERT IGNORE INTO `db_sql`.`customers` ( `cust_id`, `cust_name`, `cust_address`, `cust_city`, `cust_state`, `cust_zip`, `cust_country`, `cust_contact`, `cust_email` )
VALUES
	( 6, 'Pep E.LaPew', '100 Main Street', 'Los Angeles', 'CA', '90046', 'USA', NULL, NULL );

4、deletetruncate都可以删除表中的数据,delete可以分别删除单行或者多行数据,truncate table可以删除表中所有数据,清空表。在实际操作中,对于delete关键字mysql是逐行执行删除行操作,对truncate table 操作实际中mysql是删除原来的整个表结构以及表中的所有数据内容,然后重新新建一张完全一样的空表。

5、create 操作如果对该表需要有建立全文本搜索的字段,则该表需要指定支持全文本搜索的引擎,对于mysql不是所有的引擎都支持全文本搜索,常用的引擎有InnoDBMyISAM。InnoDB不支持全文本搜索,而MyISAM支持全文本搜索。在新建表的时候,可用 if not exists 先判断库中是否已存在同名表结构,例如:

CREATE TABLE
IF NOT EXISTS `custnew` (
	`cust_id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
	`cust_name` CHAR ( 50 ),
	`cust_address`CHAR ( 50 ),
	`cust_city` CHAR ( 50 ),
	`cust_state`CHAR ( 50 ),
	`cust_zip` CHAR ( 50 ),
	`cust_country` CHAR ( 50 ),
	`cust_contact` CHAR ( 50 ),
	`cust_email` CHAR ( 255 ),
	PRIMARY KEY ( `cust_id` ) USING BTREE 
	) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER 
	SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

6、在新建表的时候,如果没有指定表字段为 not null  ,则会默认是可以为null;在 not null 的字段中可以指定默认值为‘’(两个单引号中间没有字符),这被认为是一个空串。空串与null不是一个定义,null是没有数据,空串是一个有效值。

7、对于主键ID使用了auto_increment时,获取刚刚插入的主键值可以使用 select last_insert_id();

8、mysql不支持函数作为默认值,只支持常量作为默认值。与其他的DBMS不一样。