1、 创建/使用数据库
mysql> create database me;
mysql> use me;
2、 创建表
mysql> create table Stu(Sno char(9) primary key,Sname char(20) unique,Ssex char(2),Sdept char(20));
mysql> insert into Stu(Sno,Sname,Ssex,Sdept) values('10001','one','boy','CS');
3、 操作表操作列(列:alter/add/drop;表:alter/create/drop)
Alter table XX;
Alter column XX;
完整的:alter table XX alter column XX;
mysql> alter table Stu drop column Ssex;
4、 查看表结构
mysql> select * from Stu;
5、查询语句
5.1 左右连接
左右2张表数据没有一一对应,完整性不一致,要保留左边的表全部数据就用left join,右边没有值的会自动用空填充,反之用right join。
SELECT * FROM grade a LEFT JOIN student b on a.id=b.id
5.2总数、最大值、最小值
有一列中存在相同值,对相同值汇总。总数:SELECT id,sum(score) FROM grade GROUP BY id;
有一列中存在相同值,找出这组中最大值。最高分:SELECT kemu,max(score) FROM grade GROUP BY kemu;
有一列中存在相同值,找出这组中最小值。最高分:SELECT kemu,min(score) FROM grade GROUP BY kemu;
有一列中存在相同值,找出这组平均值。平均分:SELECT kemu,avg(score) FROM grade GROUP BY kemu;
5.3排序
SELECT grade.score FROM grade ORDER BY score desc;;降序排列
SELECT grade.score FROM grade ORDER BY score asc;;升序排列
6、 存储过程(增/查/调用/删)
创建格式:
create procedure 存储过程名称(参数) begin …… …… end
执行格式:
call 存储过程名称(参数);
删除格式:
DROP PROCEDURE IF EXISTS 存储过程名称;
例:
mysql> delimiter // #修改结束标识 mysql> create procedure p1() #创建一个存储过程 begin select * from Stu; end// mysql>mysql> show procedure status G #查看 mysql> call p1(); #调用 mysql> drop procedure p1; #删除存储过程
6.1 参数,以下是带参数n的存储过程
mysql> delimiter // mysql> create procedure p2(n int) begin select * from where n > Sage; end// mysql> call p2(5)// #调用
6.2 控制结构,if……else……
mysql> create procedure p2(n int,a char(4)) begin if a='b' then select * from where n > Sage; else select * from where n < Sage; end if; end// mysql>call p3(5,’b’)// #调用
6.4 使用存储过程造批量数据举例
grade表中,id和num不能重复,然后用一个while循环让这个id持续加1
drop PROCEDURE if EXISTS grade; CREATE PROCEDURE grade() begin DECLARE id1 int; #定义一个变量 set id1=1; #初始化一个值 while id1<=10 do insert into grade(no,id,kemu,score) VALUES (id1,id1,"1","1"); set id1=id1+1; end while; end; call grade();