一、准备工作
1.1 安装mysql
一路next的操作这里就不做记录了。
1.2 配置mysql
- 安装完成后,将下面路径
C:\Program Files\MySQL\MySQL Server 5.7\bin
配置到环境变量中去。 - 控制台下,输入
>mysql -hlocalhost -uroot -p123456
,进入mysql。
二、创建并且使用databases
2.1 查看已有databases
show databases
命令和use tb_test
2.2 创建表
show tables
命令
create table
命令和describe
命令
2.3 向表中添加数据
load data local infile 'c:/pet.txt' into table pet
命令,加载txt文件中数据。
首先,先写一个pet.txt文件,里面的数据用tab隔开,
然后,对pet.txt中的数据进行加载,
insert into pet values()
命令
2.4 检索表中数据
2.4.1. select * from pet
命令,查询整个表
2.4.2. update pet set birth = '1989-08-31' where name = 'Bowser';
命令 如果检索到的数据有误,对表中数据进行更新
现在发现,Bowser这条小狗的出生日期登记有误,进行更新,
2.4.3. 检索满足特定要求的记录(一个记录也就是一行)。
1 .select * from pet where name = 'Bowser';
命令
2 SELECT * FROM pet WHERE birth >= '1989-09-01';
命令
注意!!! 这里的关键字都进行了大写!!!因为如果不大写关键字会产生错误,说是mysql语法错误!!!
因此,最好养成大写关键字的习惯。前面的截图效果,都是用小写来记录,就偷个懒不从头更改了。从这里开始,大写关键字。所以标红字体,在此做个记录!!!
3.SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
命令。
4. SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
命令
5. SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm') OR (species = 'dog' AND sex = 'f');
命令
2.4.4. 按照列来检索
-
SELECT name,birth FROM pet;
和SELECT owner FROM pet;
。
-
SELECT DISTINCT owner FROM pet;
命令
-
SELECT name,species,birth FROM pet WHERE species = 'dog' OR species = 'cat';
命令
2.4.5. 对检索结果进行排序
SELECT name,birth FROM pet ORDER BY birth;
命令
2.SELECT name,birth FROM pet ORDER BY birth DESC;
命令,降序排列
SELECT name,species,birth FROM pet ORDER BY species,birth DESC;
命令
2.4.6. 带日期计算的检索
SELECT name,birth,CURDATE(),TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age FROM pet ORDER BY name;
命令SELECT name,birth,death,TIMESTAMPDIFF(YEAR,birth,death) AS age FROM pet WHERE death IS NOT NULL ORDER BY age;
命令
MONTH()
命令
SELECT name,birth FROM pet WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));
命令
2.4.7. 模式匹配 ( Pattern Matching )
与Unix中的vi
,grep
,sed
命令类似,MySQL提供了模式匹配的检索方式。其中使用_
来匹配单一字符,使用%
来匹配任意数量的字符和空字符。最后值得一提的一点是,这里使用LIKE
和NOT LIKE
来作为比较运算符,而不是=
。
- 利用
%
匹配开头和结尾。
- 利用
%
匹配任意位置
- 利用
_
匹配包含5个字符的字符串
REGEXP
命令实现LIKE
命令的功能
2.4.8. 利用COUNT(*)
计算行数
SELECT COUNT(*) FROM pet;
命令
SELECT owner,COUNT(*) FROM pet GROUP BY owner;
命令
SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
命令
注意!!!使用COUNT(*)时,
如果还想要指定其它列,必须加GROUP BY
语句。否则会出错!!!
这里补充一些sql_mode的概念。
sql_mode
: 它定义了你的MYSQL应该支持的SQL语法和对数据的校验等等。
可以使用SELECT @@sql_mode;
命令查看你当前的sql_mode
。
2.4.9. 多表检索
再创建一个event
表,在event.txt中填入数据。
执行LOAD DATA LOCAL INFILE 'c:/event.txt' INTO TABLE event LINES TERMINATED BY '\r\n';
命令(这里是Windows系统),将event.txt中的数据加载到event
表中。
1.
mysql> SELECT pet.name,TIMESTAMPDIFF(YEAR,birth,date) AS age, remark
-> FROM pet INNER JOIN event
-> ON pet.name = event.name
-> WHERE event.type = 'litter';
2.
mysql> SELECT p1.name,p1.sex,p2.name,p2.sex,p1.species
-> FROM pet AS p1 INNER JOIN pet AS p2
-> ON p1.species = p2.species
-> AND p1.sex = 'f' AND p1.death IS NULL
-> AND p2.sex = 'm' AND p2.death IS NULL;