mysql数据库基础命令+新手入门

0.简述

本文是简单sql命令,附加注释,并带有一些示例。

1.开篇

如何连接mysql服务器

方式一: mysql -u用户名 -p密码
		mysql中默认有一个超级管理员(具有所有权限),用户名就是root
方式二: mysql -u用户名 -p
		在下一行键入密码
方式三: mysql -u用户名 -p -h主机名或ip地址 -P端口
		-h: 后面跟的是主机名或ip地址,如果不写-h,默认连接localhost(127.0.0.1)
		-P: 后面跟的是端口, 如果不写-P,默认端口是3306

注释以及其他

-- 单行注释(注意--后面的空格不要省去)
  #单行注释
/* 多行注释 */
\c:取消当前sql语句的执行

2.数据库及表操作

2.0 前文

SQL语句对大小写不敏感。推荐关键字使用大写,自定义的名称(库名,表名,列名、别名等)使用小写
以下文章我全用的小写(笑),不影响命令执行
set names gbk;#用于查看内容时出现中文乱码

2.1 创建、删除、查看数据库

2.1.1 查看所有库

show databases;

2.1.2查看建库时的语句

#并验证库使用的编码
show create database 库名;

2.1.3创建数据库

create database 库名 charset utf8;
create database if not exists 库名 charset utf8;#如果不存在则创建库

2.1.4删除数据库

drop database 库名;
drop database if exists 库名;#如果存在,则删除

2.2创建、删除、查看表

2.2.1查看所有表

use 库名;#先进入一个库,再查看
show tables;

2.2.2查看表里内容

select * from 表名;

2.2.3查看表结构

desc 表名;

2.2.4创建表

create table 表名(
字段名 字段数据类型,
字段名 字段数据类型,
字段名 字段数据类型     #注意,最后一行不需要逗号
);

2.2.5删除表

drop table 表名;
drop table if exists 表名;#如果存在则删除

2.3新增、修改、删除表数据

2.3.1新增表数据

     insert into 表名(字段名1,字段名2,字段名3,字段名4,字段名5) value(1,2,3,4,5);
例如: insert into stu(id,name,gender,birthday,score) value(1,'tom','male','2000-1-1',85);
#1.当为所有列插入值时,可以省写列名,但值的个数和顺序必须和声明时列的个数和顺序保持一致!
insert into stu value(2,'曹操','male','2001-2-3',90);
#2.SQL语句中的值为字符串或日期时,值的两边要加上单引号(有的版本的数据库双引号也可以,但推荐使用单引号)。

2.3.2修改表数据

update 表名 set 字段1=1,字段2=2,字段3=3 [where 子句];#如果需要满足条件时才写中括号中的东西,如果不需要就不写
例如:update stu set score=score+10; -- 修改stu表中所有学生的成绩,加10分特长分
    update stu set score=83 where id=1;-- 修改stu表中编号为1的学生成绩,将成绩改为83分

2.3.3删除表数据

 delete from 表名 [where 子句];

3.查询表数据

3.1基础查询

       select * from 表名; #   *号是通配符,表示查询所有列
   或者 select 字段名1,字段名2,字段名3 from 表名;
   例如: select name from stu;  #查询学生表中姓名字段的所有数据

3.1.1去掉查询重复结果

select distinct 字段名1,字段名2,字段名3 from 表名;

3.2 WHERE 子句查询

     select * from 表名 where 字段 运算符 值;
或者  select 字段名1,字段名2 from 表名 where 字段 运算符 值;
例1select name, sal from emp where sal>3000;#查询emp表中【薪资大于3000】的所有员工,显示员工姓名、薪资2select name, sal+bonus from emp where sal+bonus > 3500;#查询emp表中【总薪资(薪资+奖金)大于3500】的所有员工,显示员工姓名、总薪资3select name, sal+ifnull(bonus,0) from emp where sal+ifnull(bonus,0) > 3500;# ifnull(列名, 值)函数: 判断指定的列是否包含null值,如果有null值,用第二个值替换 null值

3.2.1使用 as 指定别名

select 字段名 from 表名;
select name from stu;                select name as 姓名 from stu;
-- 其中as可以省略

在这里插入图片描述

3.2.2范围指定查询

      select 字段1,字段2 from 表名 where 字段2 between1 and2;
例如: select name,sal from emp where sal between 3000 and 4500# 查询薪资在3000到4500之间的员工 显示姓名和薪资

3.2.3多值指定查询

-- 查询emp表中薪资为 1400、1600、1800的员工,显示员工姓名和薪资
方式一: select name,sal from emp where sal=1400 or sal=1600 or sal=1800;
方式二: select name,sal from emp where sal in(1400,1600,1800);

3.2.4处理null值

-- 查询emp表中薪资大于3000并且奖金小于600的员工,显示员工姓名、薪资、奖金。
select name,sal,bonus from emp where sal>3000 and ifnull(bonus,0)<600;#如果有的员工奖金为null,那么我们就要处理null值,把null当作0来计算。

-- 查询没有部门的员工(即部门列为null值)
select * from emp where dept is null-- 查询有部门的员工(即部门列不为null值)
方式一: select * from emp where not(dept is null);
方式二: select * from emp where dept is not null

3.3模糊查询

select 字段名(或者*) from 表名 where 字段名 like;

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
可以和通配符(%、_)配合使用,其中"%"表示0或多个任意的字符,"_"表示一个任意的字符。

select name from emp where name like '孙%';   -- 孙权  孙悟空  都可以被查询到
select name from emp where name like '%孙%';  -- 公孙离  孙悟空  土行孙 孙权  都可以被查询到
select name from emp where name like '刘__'; (注意这里是两个下划线)  # 以'刘'开头,姓名为三个字的员工

3.4多行函数查询

多行函数也叫做聚合(聚集)函数,根据某一列或所有列进行统计。
常见的多行函数有: COUNT,SUM,AVG,MAX,MIN
-- 多行函数不能用在where子句中
-- 多行函数和是否分组有关,分组与否会直接影响多行函数的执行结果
-- 多行函数在统计时会对null值进行过滤,直接将null值丢弃,不参与统计
select count(字段名) from 表名 where 子句;
例如: select count(*) from emp where sal>3000;-- 统计emp表中薪资大于3000的员工个数

3.5分组查询

GROUP BY 语句根据一个或多个列对结果集进行分组。
在分组的列上我们可以使用 COUNT,SUM,AVG,MAX,MIN等函数。

select 字段名(或者*) from 表名 [where 子句] group by 字段名;#如果不需要满足条件,则可以去掉中括号的字
例如: select dept,count(*) from emp group by dept;#在员工表对部门进行分组,并显示部门和人数

3.6排序查询

使用 ORDER BY 子句将结果集中记录根据指定的列排序后再返回
select 字段名 from 表名 order by 字段名 [asc 或者 desc];#asc升序(默认)  desc降序

3.7分页查询

limit (页码-1)*每页显示记录数, 每页显示记录数
-- 分页查询:每页显示3条,返回第1页数据:
select * from emp limit 0, 3;
-- 分页查询:每页显示3条,返回第2页数据:
select * from emp limit 3, 3;
-- 分页查询:每页显示3条,返回第3页数据:
select * from emp limit 6, 3;
# 利用limit查询前几名/最后几名
-- 求emp表中薪资最高的前3名员工的信息,显示姓名和薪资
select name,sal from emp order by sal desc;-- 按照薪资对员工信息进行排序
select name,sal from emp order by sal desc limit 0, 3;-- 在上面查询的基础上,分页查询,每页显示3条,查询第一页

3.8其他函数

curdate()             -- 获取当前日期,格式是:年月日
curtime()             -- 获取当前时间 ,格式是:时分秒
sysdate()/now()       -- 获取当前日期+时间,格式是:年月日 时分秒
year(date)            -- 返回date中的年份
month(date)           -- 返回date中的月份
day(date)             -- 返回date中的天数
hour(date)            -- 返回date中的小时
minute(date)          -- 返回date中的分钟
second(date)          -- 返回date中的秒
concat(s1,s2)         -- 将s1,s2 等多个字符串合并为一个字符串
concat_ws(x,s1,s2)    -- 同concat(s1,s2,..)函数,但是每个字符串之间要加上x,x是分隔符
示例一:
-- 查询emp表中所有【在1993和1995年之间出生】的员工,显示姓名、出生日期。
方式一: select name,birthday from emp where birthday between '1993-1-1' and '1995-12-31';
方式二: select name,birthday from emp where year(birthday) between 1993 and 1995;
示例二:
-- 查询emp表中员工的姓名和薪资(薪资格式为: xxx(元) 、 xxx/元)
select name,concat(sal,'(元)') from emp;
select name,concat(sal,'/元') from emp;
select name,concat_ws('/',sal,'元') from emp;

后话

格式是简单的,在可操作的区域进行你想要的改动就可以了
select 可操作1from 表名 可操作2区;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值