mysql数据库命令大全

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;

2.DDL:数据定义语言

用于用户创建、修改、删除库和表结构,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不支持外键。
作为外键的字段要求是主表中的主键(单字段主键))


3.DML:数据操作语言

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

3.1.insert 插入数据

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

3.2.update 更新数据

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

3.3.delete 删除数据

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


4.DQL:数据查询语言

  用于对数据表的查询 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.分组函数

 总数最大值最小值平均值总和
countmaxminavgsum

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.10.union联合查询


5.DCL:数据控制语言

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

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);

  • 5
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youngcave2

等待第一笔打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值