MySQL基础之STRAIGHT JOIN用法简介
创新互联建站主要从事成都网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务哈密,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
引用 mysql官方手册 的说法:
翻译过来就是:STRAIGHT_JOIN与 JOIN 类似,只不过左表始终在右表之前读取。这可用于联接优化器以次优顺序处理表的那些(少数)情况。
注意:总的来说STRAIGHT_JOIN只适用于内连接,因为left join、right join已经知道了哪个表作为驱动表,哪个表作为被驱动表,比如left join就是以左表为驱动表,right join反之,而STRAIGHT_JOIN就是在内连接中使用,而强制使用左表来当驱动表,所以这个特性可以用于一些调优,强制改变mysql的优化器选择的执行计划
ok,写个例子进行实验
创建部门表dept
创建员工emp表
先用inner join的看看
查看执行计划,可以看出是以dept表为驱动表的
ps:对于执行计划的知识可以参考我之前博客: MySQL调优之Explain执行计划学习笔记
用STRAIGHT_JOIN连接的写法:
从执行计划可以看出强制用emp表做驱动表了,而且不走索引,全表扫描了,之前的还是ref,是有走索引的
最简单的创建 MySQL 数据库的语句
在 MySQL 中创建一个名为 test_db 的数据库。在 MySQL 命令行客户端输入 SQL 语句CREATE DATABASE test_db;即可创建一个数据库,输入的 SQL 语句与执行结果如下。
mysql CREATE DATABASE test_db;
Query OK, 1 row affected (0.12 sec);
“Query OK, 1 row affected (0.12 sec);”提示中,“Query OK”表示上面的命令执行成功,“1 row affected”表示操作只影响了数据库中一行的记录,“0.12 sec”则记录了操作执行的时间。
若再次输入CREATE DATABASE test_db;语句,则系统会给出错误提示信息,如下所示:
mysql CREATE DATABASE test_db;
ERROR 1007 (HY000): Can't create database 'test_db'; database exists
提示不能创建“test_db”数据库,数据库已存在。MySQL 不允许在同一系统下创建两个相同名称的数据库。
可以加上IF NOT EXISTS从句,就可以避免类似错误,如下所示:
mysql CREATE DATABASE IF NOT EXISTS test_db;
Query OK, 1 row affected (0.12 sec)
首先要创建库 ;
mysql CREATE DATABASE test1;
mysql use test1;
2.创建表
mysql CREATE TABLE tab1(
- id INT NOT NULL AUTO_INCREMENT,
- name VARCHAR(32) NOT NULL,
- countrycode VARCHAR(40) NOT NULL,
- population VARCHAR(40) NOT NULL,
- gnp VARCHAR(32) NOT NULL,
- language VARCHAR(32) NOT NULL,
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
工具/材料
Navicat
01
我们可以利用Navicat这个客户端工具来创建表。
打开Navicat,连接上要操作的数据库,点击打开这个库。
02
打开后,在右边的视图上就可以看到这个库里所有的表了。
03
在这里右键点击空白的地方,点击菜单里的‘New Table’
04
点击后,就会创建一个新的表了,我们在这里设置表的字段,比如设置了二个字段,id,和name,
05
按下快捷键ctrl+s就会保存这个新建的表,先输入表的名字,点击ok按钮就行了。
06
在表视图里就可以看到刚才建好的表了。
1.打开MYSQL,如下。
2.首先必须在一个数据库里面工作,所以你必须创建一个数据库。利用create database +(数据库名称),来出创建数据库。
3.创建好了必须使用它,利用 use +(数据库名称) 语句。
4.你在这里可以熟悉一下显示数据库的语句,查看自己有多少个已经创建的数据库。
5.接着可以创建表格了。利用create table +(表格名称)。
6.如上图 如果显示说 'Query ok',说明已经创建好啦表格。
注意事项:
注意创建表格过程中必须是英文输入法,中文和英文的逗号,括号和引号都必须是英文的。
还必须注意期间的格式,这都是能否创建成功的基准。
id int 这一句 int 的约束可以省略。一般的形式是 int (100),100是你分配给这一类型的存储空间大小。
————————————————
版权声明:本文为CSDN博主「machaoo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接: