一、安装方法:https://blog.csdn.net/midi666/article/details/102599133
二、导入数据库样例
导入外部的.sql文件:这里指的是《MySQL必知必会》这本书中的样例,首先下载下来两个文件,放在E盘的根目录下,名字如下:
然后在mysql的命令行中,选择一个自己建的数据表或者选定已有的:
CREATE DATABASE midi;
USE midi;
然后:source F:/create.sql;
可以:SHOW tables; 来查看一下
再:source F:/populate.sql; 来填充这些表
想查看一下就用:select * from orders; 就行。
三、基本指令
1. 进入mysql:
mysql -u root -p //然后输入密码即可
2. 创建数据库:
CREATE DATABASE midi; //midi是数据库名
3. 显示数据库:
SHOW DATABASES;
4. 删除数据库:
DROP DATABASE midi;
5.选择数据库:
USE midi;
SHOW tables; //或者 DESCRIBE tables;
四、检索数据
select prod_name
from products; //单个列
select prod_name,prod_id,prod_price
from products; //多个列
select *
from products; //所有列,其中 * 叫通配符
select distanct vend_id
from products; //只返回不同的值
select prod_name
from products
limit 5,5; //限制检索的开始行和行数
五、排序检索数据
select prod_name
from products
order by prod_name; //按字母升序
select prod_id,prod_price,prod_name
from products
order by prod_price,prod_name; //按多个列排序
select prod_id,prod_price,prod_name
from products
order by prod_price desc; //降序
select prod_id,prod_price,prod_name
from products
order by prod_price desc
limit 1; //返回一行
六、过滤数据
select prod_name,prod_price
from products
where prod_price = 2.50; //order by 在 where 之后
select prod_name,prod_price
from products
where prod_name = 'fuses'; //字符串加引号
//同理,还有 < <= <>(也是不等与的意思) != 等符号
select prod_name,prod_price
from products
where prod_price between 5 and 10; //在范围中间,且有and
七、数据过滤
select prod_id,prod_price,prod_name
from products
where vend_id = 1003 and prod_price <= 10; //两个where语句用and
select prod_name ,prod_price
from products
where vend_id = 1002 or vend_id = 1003; //这里用的是or
select prod_name ,prod_price
from products
where (vend_id = 1002 or vend_id = 1003) and prod_price >= 10; //and的优先级高于or,用圆括号
select prod_name,prod_price
from products
where vend_id in (1002,1003)
order by prod_name; //IN用来指定条件范围,用圆括号和逗号
select prod_name,prod_price
from products
where vend_id not in (1002,1003)
order by prod_name; //NOT用来否定跟在它之后的条件
八、用通配符进行过滤
like操作符:表示后面的搜索模式利用通配符而不是直接相等匹配进行比较
通配符:用来匹配值的一部分的特殊字符
一、百分号通配符(%):最常用
select prod_id, prod_name
from products
where prod_name like 'jet%'; //%表示任何字符出现任意次数,检索任意以jet开头的词
select prod_id, prod_name
from products
where prod_name like '%anvil%'; //检索任何位置包含文本anvil的词
二、下划线通配符(——):匹配单个字符
select prod_id,prod_name
from products
where prod_name like '_ ton anvil'; //只能匹配一个字符
九、用正则表达式进行搜索
select prod_name
from products
where prod_name regexp '.000'
order by prod_name; // . 表示匹配任意一个字符
这里说一下like和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符)。而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。这是一
个非常重要的差别。
select prod_name
from products
where prod_name regexp '1000|2000'
order by prod_name; //进行OR匹配, | 表示匹配其中之一
select prod_name
from products
where prod_name regexp '[123] Ton'
order by prod_name; //[123]的意思是匹配1或2或3
select prod_name
from products
where prod_name regexp '[1-5] Ton'
order by prod_name; //[1-5]的意思是匹配1到5
select vend_name
from vendors
where vend_name regexp '\\.'
order by vend_name; //匹配特殊字符,需要用 \\ 是转义的意思
匹配多个实例时,用:
select prod_name
from products
where prod_name regexp '\\([0-9] sticks?\\)'
order by prod_name;
//正则表达式\\([0-9] sticks?\\)需要解说一下。\\(匹配),[0-9]匹配任意数字(这个例子中为1和5),sticks?匹配stick和sticks(s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现),\\)匹配)。没有?,匹配stick和sticks会非常困难。
select prod_name
from products
where prod_name regexp '[[:digit:]]{4}'
order by prod_name; //匹配连在一起的任意四位数
select prod_name
from products
where prod_name regexp '^[0-9\\.]'
order by prod_name;
//想找出以一个数(包括以小数点开始的数)开始的所有产品,^[0-9\\.]只在.或任意数字为串中第一个字符时才匹配它们
十、创建拼接字段
1.拼接字段:将值连接在一起构成单个值 Concat
select Concat(vend_name,'(',vend_country,')')
from vendors
order by vend_name;
Concat()拼接串,即把多个串连接起来形成一个较长的串。Concat()需要一个或多个指定的串,各个串之间用逗号分隔。上面的SELECT语句连接4个元素。
select concat (rtrim(vend_name),'(',rtrim(vend_country),')')
from vendors
order by vend_name;
//这里RTrim()函数去掉值右边的所有空格,还支持LTrim()(去掉串左边的空格)以及
Trim()(去掉串左右两边的空格)。
使用别名(alias):
select concat(rtrim(vend_name),'(',rtrim(vend_country),')') as
vend_title
from vendors
order by vend_name;
//这里的语句中计算字段之后跟了文本AS vend_title。它指示SQL创建一个包含指定计算的名为vend_title的
计算字段。从输出中可以看到,结果与以前的相同,但现在列名为vend_title
2.执行算术计算
select prod_id,quantity,item_price
from orderitems
where order_num = 20005;
select prod_id,quantity,item_price,quantity*item_price as expended_price
from orderitems
where order_num = 20005;
输出中显示的expanded_price列为一个计算字段,此计算为quantity*item_price。