一. DML(数据操作语言)
insert
方式一:
insert into stars values('1','薛之谦',32, 50000, '上海');
默认不指定字段,值是从第一个按顺序往后加.
方式二:
insert into stars(name, money, province) values('赵本山', 100000, '东北');
方式三:
insert into stars(name, age, money, province) values('黄晓明',40, 80000,'山东'),
('柳岩',38, 30000, '四川'),
('杨颖', 28, 40000, '上海'),
('范冰冰', 38, 90000, '山东'),
('林志颖',40, 70000, '台湾'),
('林志玲', 40, 120000, '台湾'),
('朱茵', 45, 10000,'香港'),
('张国荣', 50, 0, '香港'),
('成龙', 60, 150000, '香港');
**delete**
删除数据,[注]删除数据时候要注意有where条件
delete from stars where id=18;件,
**update**
修改数据,,[注]修改数据时候要注意有where条件
update stars set money=1 where id=13;
修改多条数据,中间使用逗号隔开
update stars set province='shanghai',money=2 where id=13;
二. DQL(数据查询语言)
**基础查询**
select * from stars;
指定字段查询(重复和不重复)
select name,money from stars;
[注]查询的时候,多个字段之间使用逗号隔开.
select distinct province from stars;(不重复)
**条件查询**
select name from stars where id > 13;
select name, age, money from stars where age > 38 and money > 100000;
select name, age from stars where age between 30 and 40;
select name from stars where name like '_冰';
[注]'_'只匹配一个字符
select name from stars where name like '%冰';
[注] '%冰',匹配的是冰前边的所有字符
**结果集排序**
降序排列:desc
select * from stars order by id desc;
升序排列:asc
select * from stars order by id asc;
**限制结果集**
select * from stars order by age desc limit 5;
select * from stars order by age desc limit 0,5;
limit(偏移量,每页显示的条数)
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
第一页: limit 0, 5
第二页: limit 5, 5
第三页: limit 10, 5
....
第n页: limit (n-1)* 5 , 5
**常用统计函数**
max
min
sum
count
avg
**分组**
分组统计
select * from stars group by province;
这样分组没有任何意义.
结果集过滤
结果集:
select province, count(province) from stars group by province;
如果要对结果集限制:使用having
select province, count(province) from stars group by province having count(province) >= 2;
[注]使having和where都是条件限制,where是对表的限制,having是对结果集的限制.
整体使用
**多表联合查询**
连表查询:
select * from user,goods;
这样的结果是显示两张表的乘积.将所有的信息都显示出来.
**内连接**
隐士
select user.name,goods.name from user,goods where user.gid=goods.gid;
[注]两张表之间使用逗号隔开.
显式
select user.name,goods.name from user inner join goods on user.gid=goods.gid;
[注]使用表1 inner join 表2 on 条件
**外连接**
左连接
select * from user left join goods on user.gid=goods.gid;
右连接
select * from user right join goods on user.gid=goods.gid;
[注]在有外链接时,根据left或者right来决定哪张表是主表,如果是主表,它的信息是完整的.
请选出哪些商品没有被购买过
select goods.name from user right join goods on user.gid=goods.gid where user.gid is null;
找出那类商品销量冠军???
select goods.name,count(user.name) from user right join goods on user.gid=goods.gid group by goods.name order by count(user.name) desc limit 1;
找出销量冠军产品及价格
select goods.name,count(user.name),goods.price from user right join goods on user.gid=goods.gid group by goods.name order by count(user.name) desc limit 1;
子查询
记录联合
两个表同时更新
清空表记录
三. 数据库导入导出
unsigned和zerofill
unsigned(无符号): 主要用于整型和浮点类型,使用无符号。即没有前面面的负号,所有的数都为正数
zerofill: 0填充
auto_increment:自动增加经常结合primary key 使用
default: 默认
not null:不为空
导出:
首先推出MySQL,进入正常的终端下边
mysqldump -uroot -p 数据库名 > 导出到的本地的文件路径
导入:
首先要有一个库名
mysql -uroot -p 数据库名 < 导入的本地文件路径
[总结]无论是导入还是导出,只要输入命令没有出现错误就表示成功了.