mysql数据库命令大全

时间:2025-03-14 19:37:19
DDL:数据定义语言 用于用户创建、修改、删除库和表结构,create/alter/drop
DML:数据操作语言 用于对数据表的增删改, insert/update/dalete
DQL:数据查询语言  用于对数据表的查询 select/from/where/group by/having/order by/limit
TCL:事务控制语言 commit/rollback


 

1.对数据库常用命令


1.连接数据库
 

#mysql -u用户名 -p密码
mysql -uroot -p333


2.显示已有数据库

show databases;


3.创建数据库

create database test;


4.选择数据库

#use 数据库名
use test;


5.显示数据库中的表

show tables;


6.显示当前数据库的版本信息

select version();

7.显示当前数据库的用户

select user();


8.删除数据库

drop database test;

9.注释

#我是注释

10.退出mysql

exit

11.查看指定表的结构

desc test;

:数据定义语言

用于用户创建、修改、删除库和表结构,create/alter/drop


1.创建表

create table test(
	id int primary key auto_increment,
	name varchar(20),
	email varchar(80),
	birth date
)

2.增加列

Alter table test add column balance int;


1.非空约束 not null(字段不允许为空)
2.默认约束 default(设置默认值)
3.唯一约束 unique key(uk)(设置字段的值是唯一的,可为空,但只能有一个空值)
4.主键约束 primary key(pk)(作为表记录的唯一标识)
5.外键约束 foreign key(fk)(用于两个表之间建立关系,需要指定引用主表的哪一字段。在数据库的存储引擎中InnoDB支持外键,MyISAM不支持外键。
作为外键的字段要求是主表中的主键(单字段主键))


:数据操作语言

用于对数据表的增删改, insert/update/delete

3. 插入数据

#插入部分字段
insert into test(name,email,birth) values('jack','1313123@','1999-01-12');
#插入全部字段,可省略数据库后面的字段名
insert into test values(2,'java','1313123@','1999-01-12',2000);
#插入多行数据
insert into test values(3,'java','1313123@','1999-01-12',2000),
(4,'java','1313123@','1999-01-12',900),
(5,'java','1313123@','1999-01-12',2000),
(6,'java','1313123@','1999-01-12',2000),
(7,'java','1313123@','1999-01-12',2000),
(8,'java','1313123@','1999-01-12',2000),
(9,'java','1313123@','1999-01-12',3100);

3. 更新数据

#修改一个字段
update test set name='hello' where id = 2;
#修改多个字段
update test set name='haha',email='9999@',birth='2008-08-08' where id = 2;

3. 删除数据

#根据id来删除数据
delete from test where id = 2;
#根据name来删除数据
delete from test where name = 'jack';


:数据查询语言

  用于对数据表的查询 select/from/where/group by/having/order by limit

4.1.基础查询

#查询所有数据
select * from test;
#查询部分字段
select id,name,email from test;
#查询总行数
select count(*) from test;

4.2.条件查询

条件运算符 >   <   >=   <=   =   !=   <>
逻辑运算符 and   or  not
模糊查询 like   %   _

条件查询就是where后面跟条件表达式

#查询存款大于2100的数据
SELECT id,balance FROM test where balance >2100;
#查询名字中第二个字符是a的数据
select id,name from test where name like '_a%'

4.3.排序查询

order by asc(默认,可不写,从小到大排序)/desc

select id,balance from test order by balance desc;

4.4.常见函数

1.字符函数
concat

拼接

select concat('java','script');
substr 截取子串 select SUBSTR('javacript',2,3);
upper 转换成大写 select UPPER('javascript')
lower 转换成小写 select lower('JAVA')
trim 去除前后空格或字符 select TRIM('a' from 'aabbbbaaa');
ltrim 去除左边空格 select ltrim('     java     ');
rtrim 去除右边空格 select rtrim('     java     ');
replace 替换 select REPLACE('java','a','T')
lpad 左填充 select LPAD('java',10,'a')
rpad 右填充 select rpad('java',5,'b')
instr 返回子串第一次出现的位置 select INSTR('javascript','va')
length 获取字节个数 select LENGTH('java')
2.数学函数
round 四舍五入 select round(4.5)
rand 随机数 select RAND();
floor 向下取整 select floor(4.3);
ceil 向上取整 select ceil(4.3);
mod 取余 select mod(9,2);
truncate 截断 SELECT TRUNCATE(3.4567, 2);
3.日期函数
now 获取系统当前日期和时间 select NOW();
curdate 当前系统日期 select CURDATE();
curtime 当前系统时间 select CURTIME();
str_to_date 将字符转换成日期 select str_to_date('1999/02/01','%Y/%m/%d');
date_format 将日期转换成字符 select date_format(NOW(),'%Y/%m/%d');
4.流程控制函数
if 条件判断
case 多分支条件判断
5.其它函数
version 查看版本 select VERSION();
database 当前数据库 select DATABASE();
user 当前用户 select user();
#拼接字符串,结果是javascript
select concat('java','script');          # javascript 
#截取字串,从第2个位置开始,截取3个字符
select SUBSTR('javacript',2,3);          # ava
#截取字串,从第2个位置开始截取所有的字符
select substr('javascript',2);           # avascript
#转换成大写
select UPPER('javascript');              # JAVASCRIPT
#转换成小写
select lower('JAVA');                    # java
#去除前后空格
select trim('     java     ');           # java
#去除前后字符a
select TRIM('a' from 'aaaaabbbbaaaa');   # bbbb
#替换字符
select REPLACE('javascript','a','T');    # jTvTscript
#在左边填充a,让字符串到10个
select LPAD('java',10,'a');              # aaaaaajava
#在右边填充b到5个
select rpad('java',5,'b');               # javab
#返回子串第一次出现的位置
select INSTR('javascript','va');         # 3
#返回字节个数
select LENGTH('java');                   # 4

#四舍五入
select round(4.5);          # 5
#四舍五入,并且保留小数点后两位
select round(4.5555,2)      # 4.56
#随机数
select RAND();              # 0.5474727335828102
#向下取整
select floor(4.3);          # 4
#向上取整
select ceil(4.3);           # 5
#取余     
select mod(9,2);            # 1

#截断,不四舍五入,直接截断小数
SELECT TRUNCATE(123.4567, 3);   # 123.456
SELECT TRUNCATE(123.4567, 2);   # 123.45
SELECT TRUNCATE(123.4567, 1);   # 123.4
SELECT TRUNCATE(123.4567, 0);   # 123
SELECT TRUNCATE(123.4567, -1);  # 120
SELECT TRUNCATE(123.4567, -2);  # 100
SELECT TRUNCATE(123.4567, -3);  # 0

SELECT TRUNCATE(-123.4567, 3);   # -123.456
SELECT TRUNCATE(-123.4567, 2);   # -123.45
SELECT TRUNCATE(-123.4567, 1);   # -123.4
SELECT TRUNCATE(-123.4567, 0);   # -123
SELECT TRUNCATE(-123.4567, -1);  # -120
SELECT TRUNCATE(-123.4567, -2);  # -100
SELECT TRUNCATE(-123.4567, -3);  # 0

#获取系统当前日期和时间
select NOW();                                # 2021-07-03 15:02:07
#获取系统当前日期
select CURDATE();                            # 2021-07-03
#获取系统当前时间
select CURTIME();                            # 15:02:07
#把字符串转换成mysql的时间格式
select str_to_date('1999/02/01','%Y/%m/%d'); # 1999-02-01
#把mysql的时间格式化
select date_format(NOW(),'%Y/%m/%d');        # 2021/07/03

4.4.1.str_to_date 

把字符串转换成mysql默认的时间格式

select str_to_date('1999/02/01 12/2/1','%Y/%m/%d %H/%i/%s');
select str_to_date('1999-02-01 12/2/1','%Y-%m-%d %H-%i-%s');
select str_to_date('1999.02.01 12/2/1','%Y.%m.%d %H.%i.%s');
#转换结果都是  1999-02-01 12:02:01

4.4.2.date_format

把mysql的时间格式化

select date_format(NOW(),'%Y/%m/%d %H:%i:%s');
# 2021/07/03 15:33:54

4.4.3.时间格式符

格式符 2021-07-03 15:29:30
%Y  四位年 2021
%y  二位年 21
%m  二位月,不够补零 07
%c  月份 7
%d  二位日期,不够补零 03
%H  小时,24小时制 15
%h  小时,12小时制 3
%i  分钟 29
%s  秒 30


 

4.5.分组函数

 总数 最大值 最小值 平均值 总和
count max min avg sum

4.5.1.不考虑null值

select count(*) from test;
#以下四项忽略了null值
select max(balance) from test;
select min(balance) from test;
select avg(balance) from test;
select sum(balance) from test;

4.5.2.考虑null值,把null当成0处理         

select max(IFNULL(balance,0)) from test;
select min(IFNULL(balance,0)) from test;
select avg(IFNULL(balance,0)) from test;
select sum(IFNULL(balance,0)) from test;

  

4.6.分组查询

group by

4.7.连接查询

join

left join

right join

4.8.子查询

4.9.分页查询

4.联合查询


:数据控制语言

用来定义访问权限和安全级别

6.杂项

6.1.存储对象

创建一个存储对象,往表中插入10条数据

#删除存储对象
drop procedure mypro;
#把结束标记改为$
delimiter $
#创建存储对象
create procedure mypro(in insertCount int)
BEGIN
	declare i int default 1;
	a:while i<insertCount DO
		insert into test(name) values(CONCAT('java',i));
		if i>20 then leave a;
		end if;
		set i = i+1;
	end while a;
END $
#调用存储对象
call mypro(11);