MySQL基础知识复习总结

数据库(DataBase)db

什么是数据库

为了方便数据的==存储==和==管理==,数据库将数据按照特定的规则存储在==磁盘==上,就是一个数据存储的仓库

数据库管理系统(软件DataBase Management System )DBMS

常见的数据库产品:

MySQL ==有开源版本,也有付费版本==

Oracle数据库 ==只有付费版==

SQL Server ==微软==

DB2 IBM ==付费版==

Mysql数据库

MySQL数据库是一个关系型数据库管理系统,最早是由老店的MSQLAB公司开发的,目前被Oracle公司收购。MySQL是流行的关系型Y数据库管理系统。具有快速,可靠和易于使用的特点。支持标准sql,支持多种操作系统,支持多种变成语言链接他自己。

关系型数据库:

以数据表为单位,表与表之间存在关联关系

eg:用户表,商品表,订单表

用户编号,商品编号

非关系型数据库:redis

缓存 key : value

结构化查询语言(Structured Query Language)简称SQL

是一种特殊的编程语言,用于对数据库管理操作和数据的增删改查操作

SQL优点:

不是某个特定数据库供应商专有的语言,是一种标准的数据库操作语言,一般的数据库管理系统都支持(一些数据库的语法略有不同)

DDL:数据(结构)定义语言DDL(Data Defunition Language),是用于创建和修改数据库表结构的语言

常用的语句:create ,alter ,drop ,rename...............
-- 创建数据库
-- CREATE DATABASE [ if not exists]  数据库名 [CHARSET utf8]
-- 创建数据库 并设置字符集编码 并判断数据库是否存在
-- DROP DATABASE [NAME] 删除输就输
-- mysql数据库一旦创建不能修改,只能修改字符集编码
-- ALTER DATABASE [NAME] CHARSET gbk 将数据库编码格式设置为gbk
CREATE DATABASE schooldb;-- 创建数据库
DROP DATABASE schooldb;-- 删除数据库
/* 
    创建数据库表
      表 表名
      列 特定信息 姓名,性别.......
      行 数据 张三 男
    创建表的步骤:
      确定表名:学生信息 --学生表
      确定列命:学生的具体信息 姓名,性别,生日....
    列的数据类型:  
       字符串型:
         (定长字符串)char(n)长度为n的定长字符串,最大长度255字符
    对于定长字符串,如果设置长度为5,只存储2个字符,会在后面补3个空格
    一般用于存储长度固定的数据,例如:性别,电话....
         (变长字符串)varchar(n) 最大长度为n的可变长字符串
    对于变长字符串,如果设置长度为10,如果只存储了3个字符,那么实际长度为3
    
       日期时间类型:
         (日期)data 	   日期--包含年月日
         (时间)datetime 时间--年月日时分秒
    
       数值类型:
         整数:
         TINYINT 1
         SMALLINT 2
         MEDIUMINT 3
         INT 4
         BIGINT 8
         SIGNED   有符号 默认有符号
         UNSIGNED 无符号
         浮点数:
         DECIMAL (M,D),总长,小数点位
                eg:
                3,2
                1.73
         TEXT类型(长文本):
         例如存储新闻信息,小说等比较长的内容
    列的约束:   列的规则
*/
创建表,并为表添加约束
-- 创建表,并为列添加约束
/* 
学号 唯一,不能为空,并且只能有一个学号
可为学号列添加主键约束(唯一不能重复,不能为空,一个表中只能有一个列添加主键约束)
PRIMARY KEY  设置列为主键
AUTO_INCREMENT 设置主键列自动增长 只能修饰主键列.而且主键列类型为整数
NOT NULL 不能为空约束 可以添加到多个普通列
UNIQUE 唯一约束  可以添加到多个普通列
CHECK 检查约束
*/
CREATE TABLE student(
num INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(5) NOT NULL,
gender CHAR(1) NOT NULL,
birthday DATE,
phone CHAR(11) NOT NULL UNIQUE,
adress VARCHAR(30),
height DECIMAL(3,2) CHECK(height<2.60),
reg_time DATETIME
)

DML(表数据操纵语言):

/* DML表数据操纵语言
INSERT DELETE UPDATE
方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);
方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;
方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);
方式4:INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配)

*/
INSERT INTO student (NAME,gender,birthday,phone) VALUES ('甲子','女','2005-2-7','15277326803');

INSERT INTO stu(NAME,gender,birthday,phone)SELECT NAME,gender,birthday,phone FROM student

UPDATE stu SET adress='xiaan' WHERE num = 1

DQL(基础查询)(Data Query Language):

基础查询 语法: select 查询列表 from 表名; 特点: 查询列表可以是:表中的字段、常量、表达式、函数 查询的结果是一个虚拟的表格

查询结果处理

特定列查询:select column1,column2 from table 全部列查询: select * from table 算数运算符:+ - * / 排除重复行: select distinct column1,column2 from table 查询函数:select 函数; / 例如version()

查询函数

类似于java中的方法,将一组逻辑语句事先在数据库中定义好,可以直接调用

分类: 单行函数:如concat、length、ifnull等 分组函数:做统计使用,又称为统计函数、聚合函数、组函数

字符函数

length():获取参数值的字节个数 char_length()获取参数值的字符个数 concat(str1,str2,.....):拼接字符串 upper()/lower():将字符串变成大写/小写 substring(str,pos,length):截取字符串 位置从1开始 instr(str,指定字符):返回子串第一次出现的索引,如果找不到返回0 trim(str):去掉字符串前后的空格或子串,trim(指定子串 from 字符串) lpad(str,length,填充字符):用指定的字符实现左填充将str填充为指定长度 rpad(str,length,填充字符):用指定的字符实现右填充将str填充为指定长度 replace(str,old,new):替换,替换所有的子串

选择函数

/*
case when 条件 then 结果1 else 结果2 end; 可以有多个when
ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回
原本的值
if函数:if else的 效果 if(条件,结果1,结果2)
*/
SELECT NAME,(CASE WHEN height>2.0 AND height<2.2 THEN '高'WHEN height >2.2 THEN '姚明' ELSE '挺高' END) AS height,site FROM player
SELECT NAME,IF(height>2.0,'高个子','正常身高') FROM player

数学函数

round(数值):四舍五入 ceil(数值):向上取整,返回>=该参数的最小整数 floor(数值):向下取整,返回<=该参数的最大整数 truncate(数值,保留小数的位数):截断,小数点后截断到几位 mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负 rand():获取随机数,返回0-1之间的小数

日期函数

now():返回当前系统日期+时间 curdate():返回当前系统日期,不包含时间 curtime():返回当前时间,不包含日期 可以获取指定的部分,年、月、日、小时、分钟、秒 YEAR(日期列),MONTH(日期列),DAY(日期列) ,HOUR(日期列) ,MINUTE(日期列) SECOND(日期列) str_to_date(字符串格式日期,格式):将日期格式的字符转换成指定格式的日期 date_format(日期列,格式):将日期转换成字符串 datediff(big,small):返回两个日期相差的天数

日期格式

 

-- 模糊查询 like 
SELECT *FROM player WHERE NAME LIKE '勒%'
SELECT *FROM player WHERE NAME LIKE '%德%'

-- between 1.7 and 2.0 == height >= 1.7&&height <= 2.0
SELECT * FROM player WHERE height BETWEEN 1.7 AND  2.0

-- 查询身高不为空的表单
SELECT * FROM player WHERE height IS NOT NULL

/* 
分组查询
将某类数据分到一个组中进行处理 比如按照位置查询

查询 中锋 前锋 各有多少人(统计数量)
GROUP BY 分组条件(列名)
*/

SELECT COUNT(*),site FROM player GROUP BY site



/*
1、UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2]
2、UNION ALL 的语法如下:
[SQL 语句 1]
UNION ALL
[SQL 语句 2]
当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all ,
mysql 会把所有的记录返回,且效率高于union
*/

子查询

含义:在查询语句中出现的查询语句

子查询可以出现在from和where后面

分类

按出现位置分类:

from 表子查询(结果集一般只有一行多列)查询身高最高的学生 查询到一个最高身高

where 标量子查询(结果集只有一行一列)查询身高最高的学生 查询到一个最高身高

列子查询 (结果只有一列多行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值