打开:/usr/local/mysql/bin/mysql -u root -p
键入密码:***666
概览
1 基于数据库的操作
2 基于表的操作
2.1 对字段(列)的操作
2.2 对数据(行)的操作
2.3 表连接(横向)
2.4 表连接(纵向)
2.5 数据导入导出
1 基于数据库的操作
创建数据库:create database mydatabase;
显示数据库:show database;
更改数据库中的字符集:alter database mydatabase charset GBK ;
使用某一个数据库:use mydatabase;
显示该数据库中的表:show tables;
2 基于表的操作
创建表:
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
….
)
create table tb1 (
name varchar(10) ,
gender varchar(10)
);
检查表的创建是否成功:show tables;
ps:在->之后用分号结束当前命令
修改表名:rename table tb1 to tb2;
查看表中字段的信息:desc tb2;
2.1 对字段(列)的操作:
随时检查表的状态的一行语句: select * from 表名;
【增】–给学生表增加ID放到第一个位置
alter table 表名 add 字段名 数据类型[位置];
alter table my_student add id int first;
ps:表示位置有两种方式,方式1是用first,如果不是在第一列,那么就用after [其他列名字]。
【改数据类型】—将学生表中的number学号字段变成固定长度,且放到第二位。
alter table 表名 modify 字段名 数据类型 [位置];
eg:alter table my_student modify number char(10) after id;
【改列名字】—修改学生表中的gender字段为sex alter table 表名 change 旧字段名 新字段名 数据类型 ; alter table my_student change gender sex varchar(10);
【删】—删除学生表中的字段age
alter table 表名 drop 字段名;
2.2 对数据(行)的操作:
【增】
方式1: 增加完整一行记录
insert into table 表名 values(数据1,数据2,数据3);
方式2:增加多行记录
insert into tb2 values(‘002’,’01’,’lesley’,52),(‘003’,’03’,’daffy’,60);
方式3: 针对某些列来增加数据
insert into 表名(字段1,字段2) values(数据1,数据2);
【删】
delete from 表名 where 字段=’数据’;
delete from tb2 where name=’lesley’;
【改】
update 表名 set 字段 = 值[where 条件];
e.g. update tb2 set class=’02’ where name=’anita’;
【查】其实就是显示
select * from 表名;
1)常规查找方式
select *
from 表名
[where 条件];
2)带条件的查找
e.g. 带条件的查找
select * from tb2 where id in (‘001’,’003’);
3)多条件and / or的查找
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
4)按组,带描述性统计的查找
注意:分组是为了统计数据,按分组字段进行数据统计;使用group by却不使用统计函数,没意义,查找无效!
select age,count(*),max(weight),avg(weight),sum(weight) from tb2 group by age;
按age这一字段,进行描述性统计。
5)按降序查找
注意:默认是升序,后面加了desc才是降序
select * from tb2 order by weight desc;
2.3 表连接(横向):
原始表格
- 内连接 join
ps: innner join和join是一样的
原理:内联合(inner join)只生成同时匹配表A和表B的记录集。
代码示例:
select persons.lastname,persons.firstname,orders.orderno from persons,orders
where persons.Id_P=orders.Id_P;
2.左连接 left outer join
原理:左外联合(left outer join)生成表A的所有记录,包括在表B里匹配的记录。如果没有匹配的,右边将是null。
代码示例:
select persons.lastname,persons.firstname,orders.orderno
from persons
left join orders
on persons.Id_P=orders.Id_P
order by persons.lastname;
3.左外连接
原理:为了生成只在表A里而不在表B里的记录集,我们用同样的左外联合,然后用where语句排除我们不想要的记录。
技巧:where后面跟的表B的变量就是连接变量。
代码示例:
select *
from orders
left join persons
on orders.Id_P=persons.Id_P
where persons.Id_P is null;
4.全外连接I
全外联合(full outer join)生成表A和表B里的记录全集,包括两边都匹配的记录。如果有一边没有匹配的,缺失的这一边为null。
代码示例:
select persons.lastname, persons.firstname,orders.orderno
from persons
full join orders
on persons.Id_P=orders.Id_P
order by persons.lastname;
5.全外连接II
原理:为了生成对于表A和表B唯一的记录集,我们用同样的全外联合,然后用where语句排除两边都不想要的记录。
代码示例:
select *
from orders
full join persons
on orders.Id_P=persons.Id_P
where persons.Id_P is null or orders.Id_P is null;
2.4 表连接(纵向):
union操作符用于合并两个或多个select语句的结果集。 请注意,union内部的select语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条select语句中的列的顺序必须相同。
ps1: 默认地,union操作符选取不同的值。如果允许重复的值,请使用 union all。
ps2: union结果集中的列名总是等于union中第一个select语句中的列名。
代码:
select Id_P from persons
union
select Id_P from orders;
select Id_P from persons
union all
select Id_P from orders;
2.5 数据导入导出:
1)excel数据
2)txt文本
3)与python的连接