数据库mysql的一些命令
【一】数据库操作
1、显示所有数据库命令:
show databases;
2、选择数据库:
use 数据库名称;
3、创建数据库:
create databese 数据库名称
4、删除数据库:
drop database 数据库名称
【二】 表单操作
1、查看数据库的表:
show tables;
2、创建表:
create table 表名 (id int(4),name char(20),age int(4));
3、删除表:
drop table 表名
4、修改表名:
alter table 老表名 rename 新表名
5、查看表结构:
desc 表名
6、增加字段:
alter table 表名 add sex char(10)
7、删除字段:
alter table 表名 drop sex
8、修改字段:
alter table 表名 change 老字段名 新字段名 字段属性;
例如:
alter table students change id id int(4) auto_increment; //给id添加自动增长的属性
9、 修改某个字段 --- 修改属性
//修改id的属性,去除auto_increment属性
alter table students change id id int(4);
10、 修改某个字段 --- 删除主键
alter table 表名 drop primary key (一个表只有一个主键)
11、修改某个字段 --- 添加主键
alter table students add primary key(id);
alter table students change id id int(4) primary key;
【三】 表单数据操作
1、查询表中的所有数据:
select * from table_name;
2 增加数据:
insert into table_name(id ,name,age)values (1002,"王志雄",20)
3、删除数据:
delect from 表名 where id= 100;
4、修改数据:
updata table_name set name=“李亚利”where id = 100;
【4.1】:
1、模糊查询数据: like带%%号来实现查询,%:表示任意个或多个字符。可匹配任意类型和长度的字符: 例如: 查询出学生姓王的学生信息; select * from students where name like "王%";
2、and并且 例如: 显示math和chinese成绩大于90的学生信息;
select * from students_test where math>=90 and chinese>=90;
3、or或者 例如: 显示math或chinese成绩大于90的学生信息;
select * from students_test where math>=90 or chinese>=90;
4、between x and y //在x与y之间的 例如: 显示math成绩在90~100之间的学生信息;
select * from students_test where math between 90 and 100;
5、in在..里面,允许规定多个值 例如: 显示1703和1704两个班级学生信息;
select * from students where class="1704" or class="1703"; select * from students_test where class in ("1703","1704‘’);
6、limit指定显示多少行,limit后面2个数字,用逗号隔开,第一个表示数字后。第二数字表示显示几行
例如: 显示前面10行数据: select * from students limit 10;
显示4到7行的数据: select * from students limit 3,4;
按chinese排序,显示4,5行数据: select * from students limit 3,2;
显示english成绩在70~90之间的学生信息,显示开头2行: select * from students where english between 70 and 90 limit 0,2;
7、逻辑运算符 > 大于 < 小于 >= 大于等于 <= 小于等于 = 等于 != 不等于 8、算术运算符 + 加法 - 减法 * 乘法 / 除法 % 取余
【4.2】:
1、count() 统计数量 select class,count(class) from students group by class;
2、avg() 求平均分 select avg(math) from students;
3、sum() 求和 select sum(math) from students;
4、max()最大值 select max(math) from students;
5、min()最小值 select min(math) from students;
6、distinct() 去重复 select distinct(goods_number) from students ;
7、order by 排序 select * from students order by id; // 默认是升序 select * from students order by id desc; // 降序
8、group by 分组 select class,count(class) from students group by class;
【四】多表:
1、内连接
select table_01 inner join table_02 on table_01.id = table_02.id where table_02.age>20;
2、左连接
select table_01 left join table_02 on table_01.id = table_02.id where table_02.age>20;
3、右连接
select table_01 right join table_02 on table_01.id = table_02.id where table_02.age>20;
4、多表查询
select 需要显示条件 from table_A,table_B where table_A.id = table_B.id(两个表相关联的地方) and ( 条件 ) table_A.name = "liwang"
【五】索引:
1、添加索引:
普通索引: alter table table_name add index (id)
唯一索引: alter table table_name add unique 索引名称(列名)
2、删除索引:
drop index 索引名 on 表名
3、显示索引信息:
show index from table_name
【六】视图:
1、创建视图:
create view 视图名称 as "select语句“
create view student_score
as
select student.*,score.c_name,score.grade
from
student,score
where
student.id=score.stu_id;
2、删除视图:
drop view 名称
【七】存储过程:
DELIMITER // 5.1 `DELIMITER //`定义好结束符;
CREATE PROCEDURE p2() 5.2 `CREATE PROCEDURE p2()`使用`CREATE PROCEDURE+`方法创建存储过程;
LANGUAGE SQL 5.3 ` LANGUAGE SQL`指定了使用的语句;
DETERMINISTIC 5.4 `DETERMINISTIC`当确定每次存储过程输入和输出都是相同内容时,可以使用该关键字,
否则默认为`NOT DETERMINISTIC`;
SQL SECURITY DEFINER 5.5 `SQL SECURITY DEFINER`表示调用时检查用户的权限,`INVOKER`值表示用户调用该
存储过程时检查,`DEFINER`值创建存储过程时检查;
COMMENT "存储过程程序测试" 5.6 `COMMENT`其表示存储过程的注释说明部分;
BEGIN 5.7 `BEGIN`和`END`之间的,是存储过程的主题部分;
SELECT "hello world!"; select其实可以当做输出语句使用(类似于print);
END //
DELIMITER ; 5.8 最后` DELIMITER ;`恢复mysql分号定界符;
简化版:
更为简单写法,mysql存储存储过程,封装sql(默认是分号为结束符):
delimiter // # 定义好结束符(为了区分默认的分号结束符)
create procedure p1()
begin
select * from actor;
end
//
delimiter ; # 恢复mysql分号定界符
调用存储过程的方法:
call 存储过程名字();
call p2();
显示存储过程的相关信息:
show procedure status;
删除存储过程:
drop procedure 名称;