mysql学习笔记(1):基本概念及数据库创建以及数据表简单的增删改查(CRUD)

1.概述

1.1什么是数据库

数据库就是一个文件系统,可以通过标准SQL语句进行访问和操作。

1.2常见数据库

  • MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.

  • Oracle :收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.

  • DB2 :IBM公司的数据库产品,收费的.银行系统中.

  • SQLServer:微软公司.收费的中型的数据库.

  • SyBase :已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.

  • SQLite : 嵌入式的小型数据库,应用在手机端.

Java开发中,常用的数据库是MYSQL和Oracle。

1.3关系型数据库

所谓的关系型数据库就是存放实体与实体之间关系的数据库,本质上是一张二维表。例如,在电商业务中,数据库常用的表有用户,订单,商品;这三者也称为实体,且互相不是独立的,有一定关系。

  • 用户包含订单
  • 订单包含商品

1.4数据库服务器

就是安装了某个数据库,例如MySql,软件的一台服务器。安装了数据库软件后,就可以在上面创建数据库,然后在数据库中创建数据表,然后就可以在表中存取数据了。

2.sql基础语句

2.1 SQL

SQL就是结构化的语句,用来管理数据库的,常用分类如下:

  • DDL(Database Define Language):数据库定义语言
    • create,alter,drop…
  • DML(Database Manipulate Language):数据库操纵语言:
    • insert,delete,update
  • DQL(Database Query Language):数据查询语句
    • select
    • 这是开发人员使用最频繁的语句
  • DCL(Database Control Language):数据控制语言
    • if,grant
    • 专业的数据库管理员常用操作,操作的对象是用户,事务,权限等。

2.2 开启sql服务并查看

  • net start mysql
    在这里插入图片描述
  • 查看服务是否开启
    在这里插入图片描述

2.3登录到mysql

  • mysql -u用户名 -p密码
    在这里插入图片描述

3.DDL(Database Define Language):数据库定义语言

3.1常用语句

  • 创建数据库
    • 创建数据库之前要保证数据库服务是开启的
    • create database 数据库名称;
    • create database 数据库名 character set 字符集;
    • create database 数据库名 character set 字符集 collate 校对规则;
    • 例如:如下的创建方式可以避免中文乱码
CREATE DATABASE `day06`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
  • 删除数据库

    • drop database 数据库名称
  • 查看当前系统所有数据库

    • show databases;
      在这里插入图片描述
    • 这里显示的都是文件,那如何获取数据库文件存放在硬盘中的实际位置呢?
    • 通过命令:show global variables like "%datadir%";
      在这里插入图片描述
    • 查看该文件夹
      在这里插入图片描述
    • 发现并没有包含所有的数据库,则尝试查看Program Data(注意这在C盘是个隐藏文件夹)文件夹下对应的目录
      在这里插入图片描述
    • 查看某个数据库的具体信息
      • show create database 数据库名;
        在这里插入图片描述
  • 修改数据库

    • alter database 数据库名 character set 字符集 collate 校对规则;
      在这里插入图片描述
  • 其他命令

    • 切换数据库: use 数据库名;
    • 查看正在使用的数据库:select database();
      在这里插入图片描述

3.2操作表常用命令

3.2.1常用命令

  • 切换进入数据库: use 数据库名称;
  • 查看当前数据库所有表:show tables;
  • 查看表结构:desc 表名
  • 查看建表语句:show create table 表名;
    在这里插入图片描述

3.2.2创建表

  • create table 表名(字段描述,字段描述)
  • 字段描述:
    • 字段名称 字段类型 [约束] ([ ]号中的内容表示可有可无)
      • 字段类型
        • JavaMYSQL
        • int   int
        • float   float
        • double   double
        • char/String   char/varchar(char固定长度字符串,varchar可变长度的字符串)
        • Date   date,time,datetime,timestamp
        • 文件类型   BLOB、TEXT TEXT指的是文本文件 BLOB二进制文件
      • 单表约束:
        • 主键约束:primary key
        • 唯一约束:unique
        • 非空约束:not null
  • 实例:
create table products(
	pid int primary key auto_increment,
	pname varchar(20),
	price double,
     pnum int,
     cno int,
	pdate timestamp
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.2.3修改表

  • 1.格式:alter table 表名
  • 2.修改表名:alter table 旧表名 rename to 新表名;
    • 例如:alter table user1 rename to user10;
      在这里插入图片描述
  • 3.添加字段:alter table 表名 add [column] 字段描述
    • 例如:alter table user add password varchar(20);
      在这里插入图片描述
  • 4.修改字段名:alter table 表名 change 旧字段名称 新字段名称 新字段描述
    • 例如:alter table user change password pwd varchar(20)
      在这里插入图片描述
  • 5.修改字段描述:alter table 表名 modify 字段名称 字段描述 [约束]
    • 例如:alter table user modify pwd int;
      在这里插入图片描述
  • 6.删除字段:alter table 表名 drop 字段名;
    • 例如:alter table user drop pwd;
      在这里插入图片描述

3.2.4删除表

  • 格式:drop table 表名
    • 例如:drop table user10;
      在这里插入图片描述

4.DML(Database Manipulate Language):数据库操纵语言

  • 操作对象:记录,即数据库一行
  • 关键词:insert,update,delete

4.1插入

  • 格式1:insert into 表名 values(字段值1, 2,3...);
    • 注意:
      • 1.默认插入全部字段
      • 2.必须保证values后面的内容的类型和顺序和表结构中的一致
      • 3.若字段类型为数字,可以省略引号
    • 例如:
      • insert into user values(1,'tom');
      • insert into user values('2','tom');
      • insert into user values('3'); --错误!
  • 格式2:insert into 表名(字段名,字段名1...) values(字段值,字段值1)
    • 注意:
      • 1.插入指定的字段
      • 2.必须保证values后面内容的类型和顺序和表名后面的字段的类型和顺序保持一致
    • 例如:
      • insert into user(name,id) values('jack',4);
      • insert into user(id, name) values(5,'mark');
      • insert into user(name,id) values('jack');–报错

4.2修改

  • 格式:update 表名 set 字段名=字段值,字段名1=字段值1... [where 条件]
  • 例如:update user set name='jerry' where name='jack';

4.3删除

  • 格式:delete from 表名 [where 条件]
  • 例如:delete from user where id = 2;

5.DQL(Database Query Language):数据查询语句

  • 关键词:select
  • 格式:select .. from 表名 where 条件 group by 分组字段 having 条件 order by 排序字段 ase|desc

5.1 初始化环境

  • 先建立一个表,并插入少许数据
create table products(
	pid int primary key auto_increment,
	pname varchar(20),
	price double,
     pnum int,
     cno int,
	pdate timestamp
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into products values (null,'泰国大榴莲',98,12,1,null);
insert into products values (null,'新疆大枣',38,123,1,null);
insert into products values (null,'新疆切糕',68,50,2,null);
insert into products values (null,'十三香',10,200,3,null);
insert into products values (null,'老干妈',20,180,3,null);
insert into products values (null,'豌豆黄',20,120,2,null);

5.2 简单查询

  • 1.查询所有的商品(查询该数据表的全部字段的全部数据)
    • select * from products;
  • 2.查询商品价格和名称(查询数据表的指定字段)
    • 格式:seletc 字段名1,2... from 表名
    • select pname, price from products;
      在这里插入图片描述
  • 3.查询所有商品都有哪些价格
    • 去重查询:distinct
    • 格式:select distinct 字段名1,2,... from 表名;
    • select distinct price from products;
      在这里插入图片描述
  • 4.将所有商品价格+10元进行显示(别名)在这里插入图片描述
    • 可以在查询结果上进行运算,且运算结果不会影响数据库的存储值
    • 给列起别名:select 字段名+运算 [as] 别名 from 表名
    • select price+10 from products;
    • select price+10 新价格 from products;
    • select price+10 '新价格' products;
    • select price+10 新 价 格 from products;报错,因为遇空格会认为是下一个关键字
    • select price+10 '新 价 格' from products;
    • select price+10` 新 价 格`from products;
      在这里插入图片描述

5.3 条件查询

  • 1.查询商品名称为十三香 的商品的所有信息:

    • select * from products where pname = '十三香';
      在这里插入图片描述
  • 2.查询商品中价格大于60元的所有商品的信息

    • select * from products where price>60;
      在这里插入图片描述
  • 3.查询商品名称中包含的商品

    • 模糊匹配
    • 格式:字段名 like "匹配规则";
    • 匹配规则有两种:
    • 匹配内容:%
      • “龙”  值为龙
      • “%龙” 值以龙结尾
      • “龙%” 值以龙开头
      • “%龙%”  值包含龙
    • 匹配个数 "__" 占两个位置
    • select * from products where pname like "%新%";
      在这里插入图片描述
  • 4.查询价格为38,68,98的商品

    • select * from products where price = 30 or price = 68 or price = 98;
    • select * from products where price in(38,68,98);
      在这里插入图片描述
  • 5.小结:where后的条件写法

    • > ,<,=,>=,<=,<>
    • like 使用占位符 _ 和 % _代表一个字符 %代表任意个字符.
      • select * from product where pname like '%新%';
    • in在某个范围中获得值
      • select * from product where pid in (2,5,8);
    • between 较小值 and 较大值
      • select * from products where price between 50 and 70;

5.4 排序查询

  • 1.查询所有商品,并按价格排序 (asc-升序,desc-降序)
    • select * from products order by price desc
      在这里插入图片描述
  • 2.查询名称有的商品的信息并按价格降序排序
    • select * from products where pname like "%新%" order by price desc;
      在这里插入图片描述

5.5 聚合查询

  • 1.简介
    • 对一列进行计算,返回值是一个值
    • 会忽略null值
    • * sum(),avg(),max(),min(),count();
  • 2.获得所有商品的价格的总和
    • select sum(price) from products;
  • 3.获取商品价格平均数
    • select avg(price) from products;
    • round(值,保留小数位)
    • select round(avg(price),2) from products;
  • 4.获取整个表中的记录条数
    • select count(*) from products;

5.6 分组查询

  • group by
  • 1.根据cno字段分组,分组后统计商品的个数.
    • select cno, count(*) from products group by cno;
      在这里插入图片描述
  • 2.根据cno分组,分组统计每组商品的总数量,并且总数量> 200;
    • select cno,sum(pnum) from products group by cno;
    • select cno,sum(pnum) from products group by cno having sum(pnum) > 200;
      在这里插入图片描述
  • 3.注意:where 和 having的区别
    • 1.where 是对分组前的数据进行过滤;having是对分组后的数据进行过滤
    • 2.where后面不能使用聚合函数;having可以
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值