MySQL基础知识

数据库

  • 存储数据的仓库,数据是有组织的进行存储。
  • 英文DataBase,简称DB

数据库管理系统

  • 管理数据库的大型软件(DataBase Management System,简称DBMS)

SQL

  • Structured Query Language,结构化查询语言
  • 操作关系型数据库的语言
  • 定义操作所有关系型数据库的统一标准

关系型数据库

关系型数据库就是建立在关系模型基础上的数据库,简单说关系型数据库是由多张能相互相连接的二维表组成的数据库。

优点:

  1. 都是使用表结构,格式一致,易于维护。
  2. 都是通用的SQL语言操作,使用方便,可用于复杂查询。
  3. 数据存储在磁盘中,安全。

使用cmd 登录 mysql

//登录  mysql -u用户名 -p密码 (也可以输密码之前回车)
mysql -uroot -p1234

//退出
exit

在这里插入图片描述

数据类型

数据类型分为三类:数值、日期、字符串

常用数据类型:

名称占用空间说明
TINYINT1 byte小整数值
INT 或 INTEGER4 byte大整数值
BIGINT8 byte极大整数值
FLOAT4 byte单精度浮点数值
DOUBLE8 byte双精度浮点数值
DATE3 byte日期值
TIME3 byte时间值或持续时间
DATETIME8 byte混合日期和时间值
CHAR0-255 byte定长字符串
VARCHAR0-65535 byte变长字符串
TEXT0-65535 byte长文本数据

double的使用:

double(总长度, 小数点后保留的位数)
举例:分数的范围0~100,小数点后保留两位,总长度就是 3 + 2 = 5
score double(5, 2)

char和varchar区别:

name char(10) : 无论几个字符都用10个字符空间,存储性能高,浪费空间。
name varchar(10) : 几个字符就用几个字符的空间,存储性能低,节省空间。

SQL语句

  1. SQL语句可以单行或多行书写,以分号结尾。
  2. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
  3. 注释:单行注释( -- 注释内容 或者 #注释内容(MySQL特有)),多行注释(/*注释*/

分类:

  • DDL( Data Definition Language ) 数据定义语言,用来定义数据库对象:数据库,表,列等
  • DML( Data Mainipulation Language ) 数据操作语言,用来对数据库中的表的数据进行增、删、改
  • DQL( Data Query Language ) 数据查询语言,用来查询数据库中的表的数据
  • DCL( Data Control Language ) 数据控制语言,用来定义数据库的访问权限和安全级别及创建用户

DDL:操作数据库、表等

操作数据库


-- 查询
show databases;

-- 创建数据库
create database db1;

-- 创建数据库(判断不存在才创建)
create database if not exists db1;

-- 删除数据库
drop database db1;

-- 删除数据库(判断存在才删除)
drop database if exists db1;

-- 使用数据库
use db1;

-- 查看当前使用的数据库
select database();

创建表、删除表

-- 查询当前数据库下所有表名称
show tables;

-- 查询表结构,desc 是 description(描述) 的缩写
desc tb_user;

-- 创建表
create table tb_user(
	id int,
	username varchar(20),
	password varchar(32)
);

-- 删除表
drop table tb_user;

-- 删除表时判断表是否存在
drop table if exists tb_user;

修改表、列


-- 修改表名: alter table 表名 rename to 新表名;
alter table tb_user rename to tb_user2;

-- 添加一列:alter table 表名 add 列名 数据类型;
alter table tb_user2 add phone varchar(18);

-- 修改数据类型: alter table 表名 modify 列名 新数据类型;
alter table tb_user2 modify phone char(15);

-- 修改列名和数据类型: alter table 表名 change 列名 新列名 新数据类型;
alter table tb_user2 change phone phoneNumber varchar(18);

-- 删除列: alter table 表名 drop 列名;
alter table tb_user2 drop phoneNumber;


DML:对表中的数据增、删、改


-- 查询所有数据
select * from student;

-- 给指定列添加数据 INSERT INTO 表名(列名1, 列名2,...) VALUES (值1,值2,...);
insert into student(id, name) values(1,'张三');

-- 给所有列添加数据(列名可以省略)
insert into student(id, name, gender, birthday, score, email, tel, status) values
(2, '霍华德', '男', '1987-12-05', 34.2, 'huohuade@163.com', '13894943838', 2)
;

-- 批量添加数据
insert into student(id, name, gender, birthday, score, email, tel, status) values
(3, '库里', '女', '1998-12-05', 4.2, 'huoh343@163.com', '13894943838', 2),
(4, '霍元甲', '男', '1987-12-05', 34.25, 'kkkkade@163.com', '13894946666', 6),
(5, '华德', '男', '1970-12-05', 99.29, 'huohuade@163.com', '13894943838', 1)
;

-- 修改数据: UPDATE 表名 SET 列名1=值1, 列名2=值2,... WHERE 条件
-- 注意:如果 update 语句没有加 where 条件,则会将表中所有的数据全部修改!
update student set birthday = '2002-02-20', score = 78.50 where id = 4;

-- 删除:DELETE FROM 表名 WHERE 条件;
delete from student where name = '库里';

DQL:对表中的数据进行查询

基础查询


-- 查询多个字段 SELECT 字段1,字段2,... FROM 表名;
-- 查询所有列可以用 * 省略(select * from stu),项目中不要使用这种查询
select name,age from stu;
select * from stu;


-- 去除重复记录  SELECT DISTINCT 字段列表 FROM 表名;
select distinct address from stu;


-- 起别名 AS (AS也可以省略)
select name, math, english from stu;
select name, math as 数学成绩, english as 英语成绩 from stu;

条件查询 WHERE

在这里插入图片描述


-- 查询年龄大于20岁的学生
select * from stu where age > 20;

-- 查询年龄大于等于20岁并且小于30岁的学生
select * from stu where age >= 20 and age <= 30;
select * from stu where age between 20 and 30;

-- 查询年龄等于18或者等于22的学生
select * from stu where age = 18 or age = 22;
select * from stu where age in (18, 22);

-- 查询英语成绩为 null 的学生
-- 注意:null值的比较不能使用 = 或者 !=,需要使用 is 或者 is not
select * from stu where english is null;

模糊查询 LIKE

通配符:
_:代表单个任意字符

%:代表任意个数字符


-- 查询姓'马'的学生
select * from stu where name like '马%';

-- 查询姓名第二个字是'花'的学生
select * from stu where name like '_花%';

-- 查询姓名中有'德'的学生
select * from stu where name like '%德%';

排序查询 ORDER BY

排序方式:

  • ASC:升序排列(默认值)
  • DESC:降序排列

如果有多个排序条件,当前面的条件一样时,才会根据第二个条件进行排序。


-- SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式], 排序字段名2 [排序方式]...;

-- 按照年龄升序排列
select * from stu order by age;

-- 按照数学成绩降序排列
select * from stu order by math desc;

-- 按照数学成绩降序排列,如果数学成绩一样,再安装英语成绩升序排列
select * from stu order by math desc, english asc;

分页查询

SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数;

select * from stu limit 0, 3;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值