MySQL基础

MySQL 介绍

MySQL 是一种关系型数据库,主要用于持久化存储我们的系统中的一些数据比如用户信息
由于 MySQL 是开源免费并且比较成熟的数据库,因此,MySQL 被大量使用在各种系统中。任何人都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进行修改。MySQL 的默认端口号是3306(Oracle默认端口是1521)。

MySQL中的数据类型
MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:

  • 数字类型
    • 整数: tinyint、smallint、mediumint、int、bigint
    • 浮点数: float、double、real、decimal
    • 补充:int(4)长度只是影响显示长度,这里的显示长度是指左侧补0后的长度(比如存储1,显示的时候前面会补三个0),不影响存储长度
  • 日期和时间: date、time、datetime、timestamp、year
  • 字符串类型
    • 字符串: char、varchar
    • 文本: tinytext、text、mediumtext、longtext
    • 二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

使用MySQL数据库
登录到MySQL
mysql -h 主机名 -u 用户名 -p

  • -h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
  • -u : 所要登录的用户名;
  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

创建数据库和表:

/**
   创建数据库
   create database 数据库名;
*/
CREATE DATABASE mydatabase;

-- 创建带有编码的:
create database 库名 character set 编码
-- 查看数据库编码:
show create database 库名

/**
   命令查看已经创建了哪些数据库。
*/
show databases; 

/**
   使用数据库
   Use 数据库名;
*/
USE mydatabase;

/**
   创建数据表的格式
   create table 表名(
	列名1 数据类型 约束,
	列名2 数据类型 约束,
   );
   创建用户表,用户编号,姓名,用户的地址
   将编号列,设置为主键约束,保证列的数据唯一性,非空性
   primary key AUTO_INCREMENT
   让主键列数据,实现自动增长
*/
CREATE TABLE users(
    uid INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    uname VARCHAR(20),
    uaddress VARCHAR(50)
);

/*
  show tables 显示所有数据表
  desc users 查看表中结构
  drop table users删除数据表
*/
SHOW TABLES;

修改表:

CREATE TABLE users(
  	uid INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    uname VARCHAR(20),
    uaddress VARCHAR(50)
);

/*
  添加列,添加字段
  alter table 表名 add 列名 数据类型 约束 
*/
ALTER TABLE users ADD tel INT;

/*
  修改列,在原有的列上修改
  修改列名,数据类型,约束 
  alter table 表名 modify 列名 数据类型 约束
*/
ALTER TABLE users MODIFY tel VARCHAR(50);

/*
  修改列名
  alter table 表名 change 旧列名 新列名 数据类型 约束
*/
ALTER TABLE users CHANGE tel newtel DOUBLE;

/*
  删除列
  alter table 表名 drop 列名
*/
ALTER TABLE users DROP newtel;

/*
  修改表名
  rename table 表名 to 新名
*/
RENAME TABLE users TO newuser;

向表中插入数据

/*
   像表中添加数据 
   insert into 表名(列名1,列名2,列名3) values (值1,值2,值3)
*/
INSERT INTO product(id,pname,price) VALUES (1,'电脑',1234.44);
INSERT INTO product(pname,price) VALUES ('手机',1323.34);
INSERT INTO product VALUES (3,'被子',123.2);

/*
   添加数据格式,批量写入
   格式:
     insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3)
*/
INSERT INTO product (id,pname,price) VALUES (4,'箱子',123.44),(5,'鞋子',234.23);

修改表数据:

/*
   对数据进行更新操作
   数据在原有的基础上修改
   update 表名 set 列1=值1,列2=值2 where 条件
   where 条件:数据中的唯一性
*/
USE mydatabase;
-- 修改电脑为电灯
UPDATE product SET pname='电灯' WHERE id=1;
-- 修改被子价格为234
UPDATE product SET price=234 WHERE id=3;

/*
   修改条件的写法
   id=6
   id<>6 //不等于6
   id<=6
   && || !
   &&:and
   ||or
   !not
   id in(1,2,3)包含
*/
-- 将箱子的价格和鞋子的价格修改为300
UPDATE product SET price=300 WHERE id=4 OR id=5;

/*
删除表中的数据
delete from 表名 where 条件
drop table 表名 删除整个表
*/
DELETE FROM product WHERE id=1;

查询表数据:

CREATE TABLE zhangwu(
   id INT PRIMARY KEY AUTO_INCREMENT,
   zname VARCHAR(200),
   zmoney DOUBLE
);

INSERT INTO zhangwu (id,zname,zmoney) VALUES (1,'吃饭支出',247);
INSERT INTO zhangwu (id,zname,zmoney) VALUES (2,'工资收入',12345);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (3,'服装支出',1000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (4,'吃饭支出',325);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (5,'股票收入',8000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (6,'打麻将支出',8000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (7,NULL,5000);

/*
   查询指定的数据
   select 列名1,列名2 from 表名 
*/
SELECT zname FROM zhangwu;
SELECT zmoney,zname FROM zhangwu;

/*
  查询所有列的数据
  select * from 表名
*/
SELECT * FROM zhangwu;

/*
  查询去掉重复记录
  DISTINCT 
*/
SELECT DISTINCT zmoney FROM zhangwu;

/*
   查询重新命名列
   as关键字
*/
SELECT zname AS 'name' FROM zhangwu;

/*
  查询数据中,直接进行数学计算
*/
SELECT zname,zmoney+100 AS 'sum' FROM zhangwu;

/*
  查询所有的吃饭支出
*/
SELECT * FROM zhangwu WHERE zname='吃饭支出';

-- 查询金额大于1000
SELECT * FROM zhangwu WHERE zmoney>1000;

-- 查询金额在2000到5000之间
SELECT * FROM zhangwu WHERE zmoney BETWEEN 2000 AND 5000;

-- 查询金额是 1000,3500,5000 其中一个
SELECT * FROM zhangwu WHERE zmoney IN(1000,3500,5000);

-- like 模糊查询 配合通配符
-- 查询所有的支出
SELECT * FROM zhangwu WHERE zname LIKE '%支出%';

-- 查询账务名字,四个字符的
SELECT * FROM zhangwu WHERE zname LIKE'____'

-- 查询账务名,不为空的
SELECT * FROM zhangwu WHERE zname IS NOT NULL;

查询排序:

/*
   查询,对结果集进行排序
   升序,降序,对指定列排序
   order by 列名 [desc][asc]
   desc 降序
  asc  升序排列,可以不写
*/
-- 查询账务表,价格进行升序
SELECT * FROM zhangwu ORDER BY zmoney ASC; 

-- 查询账务表,价格进行降序
SELECT * FROM zhangwu ORDER BY zmoney DESC;

-- 查询账务表,查询所有的支出,对金额降序排列
-- 先过滤条件 where 查询的结果再排序
SELECT * FROM zhangwu WHERE zname LIKE'%支出%' ORDER BY zmoney DESC;

聚合函数:

/*
  count 求和,对表中的数据个数求和
  查询统计账务表中,一共有多少条数据
*/
SELECT COUNT(*) AS 'count' FROM users ;

-- sum求和,对一列数据进行求和计算
SELECT SUM(zmoney) FROM users;

-- 求和,统计所有支出的总金额
SELECT SUM(zname) FROM users WHERE zname LIKE'%收入%'

-- max 函数,对某列数据,获取最大值
SELECT MAX(zmoney) FROM users;

-- avg,计算一个列所有数据的平均数
SELECT	AVG(zmoney)FROM users;

分组查询:

/*
    查询所有的数据
    吃饭支出 共计多少
    工资收入 共计多少
    服装支出 共计多少
    股票收入 共计多少
    打麻将支出 共计多少钱
    
    分组查询:  group by 被分组的列名
    必须跟随聚合函数
    select 查询的时候,被分组的列,要出现在select 选择列的后面
*/
USE mydatabase;
SELECT SUM(zmoney),zname FROM users GROUP BY zname;

-- 对zname 内容进行分组查询求和,但只要支出
SELECT SUM(zmoney) AS 'getsum',zname FROM users
WHERE zname LIKE '%支出%' GROUP BY zname
ORDER BY getsum DESC;

-- 对zname内容进行分组查询求和,但只要支出,显示金额大于5000
-- 结果集是分组查询后,再次进行筛选,不能使用where, 分组后再次过滤,关键字 having
SELECT SUM(zmoney) AS 'getsum',zname FROM users WHERE zname LIKE'%支出%'
GROUP BY zname HAVING getsum>5000;

分页查询

-- 分页查询使用的是limit关键字进行查询。它后面有两个参数。
-- 第一个参数[取值为:(需要查看第几页-1)乘以第二个参数]  是起始的位置,
-- 第二个参数是每页需要显示的条目数
 select * from table limit (pageNo-1)*pageSize, pageSize;

查询语句中关键字的顺序

select  一般在的后面的内容都是要查询的字段
from  要查询到表
where
group by 
having  分组后带有条件只能使用having
order by 它必须放到最后面
limit (pageNo-1)*pageSize, pageSize

创建索引

  1. 添加 PRIMARY KEY(主键索引)

    ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
    
  2. 添加 UNIQUE(唯一索引)

    ALTER TABLE `table_name` ADD UNIQUE ( `column` )
    
  3. 添加 INDEX(普通索引)

    ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
    
  4. 添加 FULLTEXT(全文索引)

      ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
    
  5. 添加联合索引

    ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值