MySQL常用命令

数据库操作

--登陆MySQL

mysql -u用户名 -p密码

--退出MySQL

exit;  或 quit;

--创建数据库

create database 数据库名;

--查看当前在那个库里

select database();

--进入库

use 库名;

--判断数据库是否存在,不存在直接创建

create database if not exists 数据库名;

--创建数据库并指定字符集

crate database 数据库名 default character set gbk;

--查看库的字符集

show create database 数据库名;

表操作

字段:

整数型:tinyint、smallint、mediumint、int(4字节,有符号范围-2147483648,2147483647)、bigint

浮点型:float(m,d) 4 字节 单精度浮点型 备注:m代表总个数,d代表小数位个数

double(m,d) 8 字节 双精度浮点型 备注:m代表总个数,d代表小数位个数

字符串型:char(0-255)、varchar(范围0-65535)、tinytext、text、mediumtext、longtext

时间型:date、time、year、datetime(字节8为,格式 yyyy-MM-dd HH:mm:ss)、timestamp

定点型:DECIMAL(m,d) 依赖于M和D的值 备注:m代表总个数,d代表小数位个数

--创建表

 create table 表名(

 字段名 数据类型 约束条件 备注

 )engine=innodb charset=utf8;

 例:

   CREATE TABLE student (

id tinyint(5) zerofill auto_increment not null comment '学生学号', 

name varchar(20) default null comment '学生姓名', 

age tinyint default null comment '学生年龄', 

class varchar(20) default null comment '学生班级', 

sex char(5) not null comment '学生性别',

unique key (id) 

    )engine=innodb charset=utf8;;

--查看所有表

show database;

--修改表名

rename table 旧表名 to 新表名;

--修改表的字符集

alter table 表名 character set 字符集;

--删除表

drop table 表名;

DML数据操纵

增:

--inset into 表名(字段名) values (值);  若给所有字段都添加数据,则可省略(字段名) 

例:insert into employee (empno,ename,job,mgr,hiredate,sal,deptnu) values ('1000','小明','经 理','10001','2019-03-03','12345.23','10');

--一次性插入多条数据:insert into 表名 (字段名) values (对应值1),(对应值2),(对应值3);

删:

--delete from 表名 where 条件

--删表

truncate table 表名;  、 delete from 表名;  、 drop table 表名;

delete与truncate与drop 这三种删除数据的共同点都是删除数据,他们的不同点是什么? 

delele 会把删除的操作记录给记录起来,以便数据回退,不会释放空间,而且不会删除定义。

truncate不会记录删除操作,会把表占用的空间恢复到最初,不会删除定义 

drop会删除整张表,释放表占用的空间。

删除速度:drop > truncate > delete

改:

--update 表名 set 字段1=值1,字段2=值2 where 条件

查:

-- 简单查询

select * from 表名

select deptnu as d,addr as a from dept  --as 设置别名查询

 

-- 条件查询

select * from 表名 where 条件

-- 模糊查询

 select * from employee WHERE ename like '张%';  --查询姓张的员工

--范围查询

 select * from employee where sal between 10000 and 20000; -- 查询工资10000-20000的员工

-- 离散查询

 select * from employee WHERE deptnu in ('10','20','100') -- 查询符合结果条件的内容,若没有则不显示

-- 去除重复值

 select distinct(job) FROM employee -- 查询公司职务有哪些

-- 统计查询

*count() 或 count(*)

*sum()

*max()

*avg

*min()

select sum(sal) FROM employee --统计总工资

select count(*) FROM employee --查询数据总条数

select max(sal) FROM employee --查询工资最大值

concat函数:select concat(ename,'是',job) FROM employee --连接字段

-- group by分组查询

 select job,count(*) FROM employee group by job;  -- 查询每个职务分别多少人

 select deptnu,job,count(*) FROM employee group by job,deptnu;  -- 支持多个字段查询,查询每个部分对应职务多少人

--having 筛选查询

  select deptnu,job,count(*) FROM employee group by job,deptnu HAVING  job="经理";  --对查询结果再进行条件筛选

  select deptnu,job,count(*) FROM employee group by job,deptnu HAVING  count(*)>2;

--order by排序查询

  select * from employee WHERE job='文员' ORDER BY sal asc;  -- 默认 asc 升序,降序 desc  -- 按文员工资升序查询

 

--limit 限制查询

  select * from employee limit 5; -- 只显示5条数据

  select * from employee limit 5,3; -- 从第5条数据开始,查询3条数据

--exists 子查询

      select * from 表名 a where exists (select 1 from 表名2 b where 条件); --括号里面的条件成立,则执行外面的语句

  select * from dept a WHERE exists (SELECT * FROM employee b WHERE a.deptnu = b.deptnu);  -- 查询有员工的部门信息

  select * from dept a WHERE not exists (SELECT * FROM employee b WHERE a.deptnu = b.deptnu);  -- 查询没有员工的部门信息

  

--左连接、右连接查询

  select  a.dname as '部门名称',b.* from dept a left JOIN employee b on a.deptnu = b.deptnu;  --左连接查询,左表信息全部显示,右表显示符合条件的信息,没有则为null展示

select  a.dname as '部门名称',b.* from dept a right JOIN employee b on a.deptnu = b.deptnu;  --右连接查询,右表信息全部显示,左表显示符合条件的信息,没有则为null展示

--内连接查询,联合查询

内连接查询 inner JOIN

select  a.dname as '部门名称',b.* from dept a inner JOIN employee b on a.deptnu = b.deptnu;  -- 根据字段匹配两个表都有的信息,才显示出来

select  a.addr,b.ename from dept a inner JOIN employee b on a.deptnu = b.deptnu and b.ename="张飞";  -- 查询飞的地址信息

  select  a.addr,b.ename from dept a ,employee b WHERE a.deptnu = b.deptnu and b.ename="张飞";   -- 也可以用这种,效率更高

 联合查询 union

UNION 的默认行为:去重和重新排序,用ORDER BY排序时需加limit,需要对子句用括号括起来

UNION ALL不会对合并后的结果集去重,即保留所有记录(包括重复记录)

(select * from employee a WHERE a.job='文员' ORDER BY a.sal limit 10 ) union (select * from employee b WHERE b.job='销售员' ORDER BY b.sal desc limit 10);

以下是一些 MySQL 常用命令的分类介绍: ### 数据库连接和管理 - 连接 MySQL 服务器:`mysql -h host -u username -p`,其中 `host` 是服务器地址,`username` 是用户名,输入该命令后会提示输入密码 [^1]。 ### 数据库操作命令 - 创建数据库:`CREATE DATABASE database_name;` - 删除数据库:`DROP DATABASE database_name;` - 使用数据库:`USE database_name;` ### 数据表操作命令 - 创建表: ```sql CREATE TABLE table_name ( column1 datatype, column2 datatype, ... ); ``` - 删除表:`DROP TABLE table_name;` - 修改表结构,例如添加列:`ALTER TABLE table_name ADD column_name datatype;` ### 数据查询命令 - 基本查询: ```sql SELECT column1, column2, ... FROM table_name WHERE condition; ``` - 分组查询: ```sql SELECT column1, COUNT(*) FROM table_name GROUP BY column1 HAVING condition; ``` - 排序查询: ```sql SELECT column1, column2 FROM table_name ORDER BY column1 ASC|DESC; ``` - 分页查询:`SELECT * FROM table_name LIMIT offset, count;` [^2] ### 数据修改命令 - 插入数据:`INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);` [^3] - 更新数据: ```sql UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition; ``` - 删除数据: ```sql DELETE FROM table_name WHERE condition; ``` ### 索引管理命令 - 创建索引:`CREATE INDEX index_name ON table_name (column1, column2, ...);` - 删除索引:`DROP INDEX index_name ON table_name;` ### 用户权限管理 - 创建用户:`CREATE USER 'username'@'host' IDENTIFIED BY 'password';` - 授予权限:`GRANT privilege_type ON database_name.table_name TO 'username'@'host';` - 撤销权限:`REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';` ### 备份与恢复 - 备份数据库:`mysqldump -u username -p database_name > backup_file.sql` - 恢复数据库:`mysql -u username -p database_name < backup_file.sql` ### 性能优化命令 - 分析表:`ANALYZE TABLE table_name;` - 优化表:`OPTIMIZE TABLE table_name;` ### 系统信息查看 - 查看 MySQL 版本:`SELECT VERSION();` - 查看当前使用的数据库:`SELECT DATABASE();`
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值