MySQL学习
Posted Tanglement
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL学习相关的知识,希望对你有一定的参考价值。
联结表
外键,为某个表的一列,包含另一个表的主键值。
使用联结可以用多个表查询信息。
使用完全限定列名,防止出现二义性。
SELECT vend_name, prod_name, prod_price
FROM vendors, products
WHERE vendors.venid = products.venid
ORDER BY vend_name, prod_name;
SELECT vend_name, prod_name, prod_price
FROM vendors INNER JOIN products
ON vendors.venid = products.venid
ORDER BY vend_name, prod_name;
//两个查询语句效果一样
使用表别名
作用:缩短SQL语句,允许在单条SELECT语句中多次使用相同的表。
SELECT cust_name, cust_contact
FROM customers AS c, oders AS o, orderitems AS oi
WHERE c.cust_id = o.cust_id
AND oi.order_num = o.order_num
AND prod_id = 'TNT2';
不同类型联结
自联结,自然联结,外部联结
联结包含了那些在相关表中没有关联行的行,这种联结称为外部联结。
SELECT customers.cust_id, orders.order_num
FROM customers LEFT OUTER JOIN orders
ON customers.cust_id = orders.cust_id;
组合查询
有两种基本情况,需要使用组合查询:
- 在单个查询中从不同的表返回类似结构的数据
- 对单个表执行多个查询,按单个查询返回数据
SELECT vend_id, prod_id, prod_price
FROM products
WHERE prod_price <= 5
UNION
SELECT vend_id,prod_id, prod_price
FROM products
WHERE vend_id IN (1001,1002);
SELECT vend_id, prod_id, prod_price
FROM products
WHERE prod_price <= 5
OR vend_id IN (1001,1002);
全文本搜索
MyISAM数据引擎支持全文本搜索,InnoDB不支持全文本搜索
使用两个函数Match()和Against()执行全文本搜索,Match()指定被搜索的列,Against()指定要使用的搜索表达式。
SELECT note_text
FROM productnotes
WHERE Match(note_text) Against('rabbit')
//会把note_text列匹配rabbit的文本打出来
插入数据
INSERT INTO table1(,,,) VALUES(,,,);
没有值用NULL。
插入多条,一个()一条
INSERT INTO table1 VALUES(,,,),(,,,);
将SELECT语句的结果插入表中,由一条INSERT语句和一条SELECT语句组成。
INSERT INTO customers(cust_id, cust_contact,···)
SELECT cust_id,cust_contact,···
FROM custnew;
更新和删除数据
UPDATE,更新表中特定行或表中所有行
UPDATE customers
SET cust_email = 'elmer@fudd.com'
WHERE cust_id = 10005;
如果UPDATE更新多行,有一行出现错误,则整个UPDATE操作被取消。
DELETE,删除表中特定行或表中所有行
TRUNCATE TABLE删除所有行,速度更快
创建表
CREATE TABLE创建表,PRIMARY KEY设置主键,ENGINE设置数据引擎。
CREATE TABLE customers
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char(50) NOT NULL,
PRIMARY KEY (cust_id)
)ENGINE=InnoDB;
可以创建多个列组成的主键,以逗号分隔 PRIMARY KEY(cust_id, cust_name)
AUTO_INCREMENT,自动增量
DEFAULT,设置默认值
InnoDB是一个可靠的事务处理引擎,不支持全文本搜索;MEMORY功能等同于MyISAM,数据存储在内存,速度快,适合临时表;MyISAM是一个性能极高的引擎,支持全文本搜索,不支持事务处理。
ALTER TABLE更新表
ALTER TABLE vendors
ADD vend_phone char(20);
ALTER TABLE vendors
DROP COLUMN vend_phone;
最常用是用来定义外键
ALTER TABLE orderitems
ADD CONSTRANT fk_orderitems_orders
FOREIGH KEY (order_num) REFERENCES order (order_num);
删除表,DROP TABLE;
重命名,RENAME TABLE;
以上是关于MySQL学习的主要内容,如果未能解决你的问题,请参考以下文章
连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段