MySQL学习记录(二)

这篇博客详细介绍了MySQL的基本操作,包括创建表、添加数据、删除表和修改表的方法,还深入探讨了各种JOIN操作,如INNER JOIN、LEFT JOIN、RIGHT JOIN以及UNION的使用。此外,还提供了多个实战练习来巩固这些概念。
摘要由CSDN通过智能技术生成

数据类型

创建表

CREATE TABLE table_name (column_name column_type);

primary key (PK)      #标识该字段为该表的主键,可以唯一的标识记录,主键就是不为空且唯一当然其还有加速查询的作用
foreign key (FK)      #标识该字段为该表的外键,用来建立表与表的关联关系
not null              #标识该字段不能为空
unique key (UK)       #标识该字段的值是唯一的
auto_increment        #标识该字段的值自动增长(整数类型,而且为主键)
default               #为该字段设置默认值

unsigned              #将整型设置为无符号即正数
zerofill              #不够使用0进行填充
  • 通过命令行show tables ,desc table_name 查看表结构

添加数据
INSERT INTO table_name 
VALUES  ( value1, 
          value2,
            ...
          valueN );
INSERT INTO table_name ( field1, 
                         field2,
                         ...
                         fieldN )
VALUES  ( value1, 
          value2,
            ...
          valueN );
  • 在表名后的括号里明确给出了列名, 即使表的结构改变,这条INSERT 语句仍然能正确工作
alter table table_name add column column_name varchar(30); --添加列

删除表
DELETE FROM table_name
WHERE Clause; 

DROP TABLE table_name;

TRUNCATE TABLE table_name; 
  • DELETE FROM 要求指定从中删除数据的表名,WHERE 子句过滤要删除的行。如果省略 WHERE 子句,它将删除表中每个顾客
  • DELETE 删除整行而不是删除列,要删除指定的列,使用 UPDATE 语句
  • DELETE, DROP, TRUNCATE区别
alter table table_name drop column column_name; --删除列

修改表
UPDATE table_name 
SET field1=new-value1, field2=new-value2
WHERE Clause;
  • UPDATE 语句以WHERE 子句结束,它告诉 DBMS 更新哪一行。没有 WHERE
    子句,DBMS 将会用这个电子邮件地址更新表中的所有行
alter table test rename test1; --修改表名  

alter table test modify address char(10) --修改表列类型  
||alter table test change address address  char(40)  

alter table test change  column address address1 varchar(30)--修改表列名

练习一:超过5名学生的课
在这里插入图片描述


练习二:交换工资
在这里插入图片描述


练习三:有趣的电影
在这里插入图片描述


MySQL别名
  • 别名(alias)是一个字段或值的替换名。别名用 AS 关键字赋予。
    AS vend_title

表别名

SELECT RTRIM(vend_name) + ' (' + RTRIM(vend_country) + ')'
AS vend_title
FROM Vendors
ORDER BY vend_name;

INNER JOIN
  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录
  • 联结条件用特定的 ON 子句而不是 WHERE 子句给出。传递给 ON 的实际条件与传递给 WHERE 的相同。
SELECT vend_name, prod_name, prod_price
FROM Vendors INNER JOIN Products
ON Vendors.vend_id = Products.vend_id;

在这里插入图片描述


  • 两种基本的外联结形式:左外联结和右外联结。
  • 它们之间的唯一差别是所关联的表的顺序。换句话说,调整 FROM 或 WHERE
    子句中表的顺序,左外联结可以转换为右外联结
LEFT JOIN
SELECT Customers.cust_id, Orders.order_num
FROM Customers LEFT OUTER JOIN Orders
ON Customers.cust_id = Orders.cust_id;
RIGHT JOIN
SELECT Customers.cust_id, Orders.order_num
FROM Customers RIGHT OUTER JOIN Orders
ON Orders.cust_id = Customers.cust_id;

在这里插入图片描述

全外联结(full outer join)
  • 它检索两个表中的所有行并关联那些可以关联的行。
  • MySQL不支持。
SELECT Customers.cust_id, Orders.order_num
FROM Orders FULL OUTER JOIN Customers
ON Orders.cust_id = Customers.cust_id;

CROSS JOIN

自连接

UNION
  • UNION 指示 DBMS执行这两条 SELECT 语句,并把输出组合成一个查询结果集。
  • UNION 必须由两条或两条以上的 SELECT 语句组成,语句之间用关键
    字 UNION 分隔(因此,如果组合四条 SELECT 语句,将要使用三个 UNION
    关键字)。
  • UNION 中的每个查询必须包含相同的列、表达式或聚集函数(不过,
    各个列不需要以相同的次序列出)。
  • 列数据类型必须兼容:类型不必完全相同,但必须是 DBMS可以隐含
    转换的类型(例如,不同的数值类型或不同的日期类型)。
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

练习四:组合两张表
在这里插入图片描述


练习五:删除重复的邮箱
在这里插入图片描述
练习六:从不订购的客户
在这里插入图片描述


练习七:从不订购的客户
在这里插入图片描述


练习八:超过经理收入的员工

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值