MySQL基础操作命令

数据库的定义

是指长期存储在计算机内、有组织的数据集合。简而言之,数据库就是一个存储数据的地方

数据库的分类

  • 常用的关系型数据库

1、oracle:在大型项目中使用
2、MySQL:web项目中使用最广泛的关系型数据库
3、Microsoft SQL Server:在微软的项目中使用
4、SQLite:轻量型数据库,主要应用在移动平台中

  • 非关系型数据库

1、Redis
2、mongpdb
3、HBASE

SQL语言分类

  • DQL:数据查询语言,用于对数据进行查询,eg:select(重点内容)
  • DML:数据操作语言,对数据进行增加、修改和删除。eg:insert、update、delete(重点内容)
  • TPL:事务处理语言,对事务进行处理。eg:begin transaction、commit、rollback
  • DCL:数据控制语言,进行授权与权限回收。eg:grant、revoke
  • DDL:数据定义语言,进行数据库、表的管理登录。eg:create、drop
  • CCL:指针控制语言,通过控制指针完成表的操作。eg:declare cursor

MySQL特点

  • 可移植性好
  • 支持多操作系统
  • 支持多种编程语言
  • 开源、社区版免费
  • 支持多线程
  • 优化SQL查询算法
  • 多种数据库连接方式
  • 支持多语言编码格式

连接数据库

  • 在终端输入命令连接数据库

mysql -h数据库ip地址 -P端口号 -u数据库登录用户名 -p数据库登录密码

注意:若是在本机登录,无需输入ip地址和端口号,不知道ip地址 ,可以通过 “netstat -anptu | grep 端口号 ” 来查询,或者ifconfig来查询ip地址

  • navicat 工具连接数据库

操作MySQL数据库

  • Navicat操作MySQL

数据备份操作:选中备份的数据库或表,右键选择 “ 转储SQL文件——结构和数据 ” 进行备份

数据还原操作:选中还原的数据库,右键选择 ” 运行SQL文件 “ 进行还原

  • SQL语句操作MySQL

数据约束

  • 主键(primary key):物理上存储的顺序

1、当把某个字段设定为主键后,该字段的值必须唯一,不能为空 2、针对主键的字段,可以设定为自动自增,自动在原来最大的ID值加1

  • 外键(foreign key):维护两个表之间的关联关系
  • 非空(not null):此字段不能为空值
  • 空(null)和 “ “ 空字符不一样
  • 唯一(unique):此字段的值不允许重复
  • 默认值(default):当不填写此值时会使用默认值,如果填写则以填写为准

基础操作命令

操作数据库

  • 查看所有数据库:show databases;
  • 使用数据库:use 数据库名;
  • 查看当前使用的数据库:select database();
  • 创建数据库:create database 数据库名 charset=utf8;
  • 删除数据库:drop database 数据库名;

操作数据表

  • 查看当前数据库所有的表:show tables;
  • 查看表结构:desc 表名;
  • 查看表的创建语句:show create table 表名;
  • 删除数据表:drop table 数据表名;

增删改查

插入数据

1、插入完整的每个字段的数据:insert into 表名 values(...........);
2、插入对应某个字段的数据:insert into 表名 (字段1,字段2,字段3......) values(字段1的值,字段2的值,字段3的值......);
3、插入多条数据:insert into 表名 values(.........),(...........),(.................);

主键自增长(auto_increment)的,可以用0或者null代替

查询语句

格式:select * from 表名;

查询分段数据

格式:select 字段1,字段2,...... from 表名;

eg:select name,sex,age from students;

数据表或字段起别名

格式:
1、select 别名.字段1,别名.字段2,......from 表名 as 别名;
2、select 字段1 as 别名1,字段2 as 别名2,......from 表名;

eg :
1、select s.name,s.sex,s.age from students as ;
2、select name as 姓名,sex as 性别,age as 年龄 from students;

去重查询

格式:select distinct 字段1,字段1,......from 表名;

eg :select distinct sex,sname from students;

关键字查询

like : 关键字
% :匹配任意多个字符
_ : 匹配一个任意字符

eg: 1、查询姓余的学生:select * from students where sname like ‘余%’;
2、查询姓余且名字是一个字的学生:select * from students where sname like ‘余_’;
3、查询姓名中包括“白”的学生:select * from students where sname like ‘%白%’;

条件查询

in :表示在一个非连续的范围内
between......and...... :表示在一个连续的范围内

eg:
1、查询家庭住址在北京或上海或广东的学生:select * from students where hometown in(‘北京’,‘上海’,‘广东’)
2、查询年龄在18到20的学生:select * from students where age between 18 and 20;

排序查询

格式:select * from 表名 order by 字段名1 asc|desc,字段名2 asc|desc,......;

注:
1、将行数据按照字段1排序,如果某些字段1的值相同是,则按照字段2排序,以此类推。
2、默认按照列值从小到大排列
3、asc从小到大排序,即升序 4、desc从大到小排序,即降序

聚合函数

max:最大
min:最小
avg:平均值
sum:值的总和数
count:数据条的总和数

分组查询

格式:select 字段1,字段2,聚合函数......from 表名 group by 字段1,字段2,......;

eg:查询各种性别的人数:select sex,count(*) from students group by sex

分组后的数据筛选

格式:select 字段1,字段2,聚合函数......from 表名 group by 字段1,字段2,......having条件;

eg:
查询男生总人数:
方法一:select count() from students where sex=‘男’
方法二:select sex,count(
) from students group by sex having sex=‘男’

1、where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
2、having是对group by的结果进行筛选
3、having后面的条件中可以用聚合函数,where后面不可用聚合函数

分页查询

1、格式:select * from 表名 limit start,count;

当前格式是用来获取一部分的数据或者用来分页

注:从start开始,获取count条数据,start索引从0开始

eg:
查询前3行学生信息:select * from students limit 0,3;
查询第3行到第8行学生信息:select * from students limit 3,5

2、格式:select * from 表名 limit (n-1)*m,m;

注:
n表示的是页数,即显示第几页的数据,n=1,2,3,4,5
m表示的是每页显示的记录数,即显示多少条数据,m = 3

(n-1)*m , m是公式,不是语法格式,不能直接写在SQL语句中

内连接

格式:
方法一:select * from 表1 inner join 表2 on 表1.列 = 表2 . 列;
方法二:select * from 表1,表2 where 表1.列 = 表2.列;

左连接

格式:select * from 表1 left join 表2 on 表1.列 = 表2.列;

右连接

格式:select * from 表1 right join 表2 on 表.列 = 表2.列;

自关联

当前自关联的表当中一定存在两个相关联的字段关联
注:自关联要用别名

格式:select * from 表1 as A1 inner join 表1 as A2 on A1.列1 = A2.列2;

子查询(充当结果)

1、标量子查询:表示子查询的结果只有一个值

格式:select 字段1 from 表名1 where 字段2 = (select 字段2 from 表2 where 条件);

注:用等于 “=” 号连接

2、列子查询 :表示子查询的结果为一个列的值

格式:select 字段1 from 表名1 where 字段2 in (select 字段2 from 表2 where 条件);

注:用 “in” 连接

3、行子查询 :表示子查询的结果为一行的值

格式:select 字段1 from 表名1 where 字段2 on (select 字段2 from 表2 where 条件);

注:用 “on” 连接

1、in 和 =any等价
2、not in 和 !=all 等价

子查询(充当数据源)

查询数据库和系统测试的课程成绩

select a.cname b.score from scores as b inner join (select * from courses where cname in ('数据库','系统测试'))as a on a.cno = b.cno;

注:select * from courses where cname in(‘数据库’,‘系统测试’:重新定义一个数据库。别名为 “a”。再通过内连接的方式 与scores表进行连接

修改数据

格式:update 表名 set 字段名1 = 值1,字段名2 = 值2...... where 条件;

eg: update students set sname = ‘小雨’ , age = 25 where sno = 25;

删除数据
1、delete

格式:delete from 表名 where 条件 (物理删除对应的数据)

eg:delete from students where sno = 24:

2、drop 删除表,删除表的数据和表结构

格式:drop table 数据表名;

eg : drop table students;

3、truncate 删除数据,只删除数据,不删除表结构

格式:truncate table 表名;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值