MySQL常用命令
一、MySQL基础命令
1.创建数据库
create database shop;
#使用库
use shop;
2.创建表
create table user(
id int primary key,
name char(10)
)ENGINE=InnoDB DEFAULT CHARSET=utf8
3.查表
选择数据库:use <库名>;
使用查看表语句:show create table <表名>;
4.表重命名
选择数据库:use <库名>;
使用重命名语句:rename table 旧表名 to 新表名;
5.复制表结构、主键、索引
在create table语句的末尾添加like子句,语法结构如:create table <新表名> like <源表>;(只复制表达结构,不复制表的数据)
6.复制表数据跟表结构
insert into <新表名> select * from <源表>;
(特点:复制数据,新旧表中的数据结构完全一致)
7.只复制表数据
insert into <新表名> select * from <源表>
8.修改表中的数据:
update from 表名 where 列名=值;
删除表中的数据:
delete from 表名 where 列名=值;
9:删除表格:
drop table 表名;
10.向表中插入数据:
insert into 表名 values();
11.多条件查询单表信息:
-
select * from 表名 where 条件 or 条件;
-
select * from 表名 where in(条件,条件);
-
select * from 表名 where 条件 or 条件;
-
select * from 表名 where 数据名 between 条件 and 条件;
12.添加字段的语句:
alter table 表名 add 字段名 数据类型 [ first | after 字段名 ];
13.字段设置默认值:
alter table 表名 alter 字段名 set default 默认值;
14.删除默认值:
alter table 表名 alter 字段名 drop default;
15.删除字段:
alter table 表名 drop 字段名;
16.改字段名:
alter table <表名> change <字段名> <新字段名> <数据类型>;
17.模糊查询:
1:select * from 表名 where 字段名 like'%条件%';
例如:select * from one where name like'%a%';(查询one表中人名里面带有a的个人信息)
2:select * from 表名 where 字段名 like'__a%';
例如:select * from one where name like'__w%';
(查询one表中人名里面第三个字符为W的个人信息,注意:多少个下划线代表是第几个字符)
18.常用函数:
1.max(列名) 最大值
2.min(列名) 最小值
3.sum(列名) 求和
4.avg(列名) 求平均值
5.count(列名) 计算个数
例如:select max(sal) from 表名;
19.gruop by查询方法:
查询性别为nv平均工资,并且只显示性别为nv的平均工资信息
select sex,avg(sal) from two group by sex having sex='nv';
order by 列名 desc(降序)
order by 列名 asc(升序)
没有加desc或者asc,则默认为升序,只能放到语句末尾。
外键约束的概念:外键约束可以使两张表紧密的结合起来,确保数据的完整性
20.表级外键约束的格式:
constraint 约束名 foreign key(子表中的外键字段) references
父表(父表中被引用的字段)
21.主键自动增长:
功能:让主键的值从1开始增长
在约束条件后面添加 auto_increment;
二、MySQL存储过程
存储过程含义:
- 完成特定功能的SQL语句集合
- 经编译后保存在数据库中
- 通过指定存储过程的名字并给出参数的值
- mysql5.0版本开始支持存储过程,使数据库引擎更灵活和强大
- 可带参数,也可返回结果
- 可包含数据操纵语句、变量、逻辑控制语句等
存储过程优点:
- 减少网络流量
- 提升执行速度
- 减少数据连接次数
- 安全性高
- 复用性高
存储过程缺点:
- 可移植性差
(对于应用特别复杂的数据处理,可以选用存储过程进行实现)
创建存储过程:
#########
#如果存在则删除
drop procedure if exists proc_patient_countPatient;
delimiter// #声明分隔符
create procedure proc_patient_countPatient()
begin #过程体开始
select count(0) as totalCount from patient;
end// #过程体结束
delimiter; #恢复默认分割符
#调用执行存储过程
call proc_patient_countPatient();
#########
数据类型(in、out、inout)
IN:指输入参数
-
该参数的值必须在调用存储过程时指定
-
存储过程中可以使用该参数,但它不能被返回
OUT:指输出参数
-
该参数可以在存储过程中发生改变,并可以返回
INOUT:指输入输出参数
-
该参数的值在调用存储过程时指定
-
在存储过程中可以被改变和返回