MySql基础

数据库概述:

数据库有什么用?

    ~实现数据持久性地存储在本地

    ~使用完整的系统统一管理数据,实现结构化查询,方便管理

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

数据库的相关概念
         DB :数据库( DataBase
         存储数据的容器,它保存了一系列有组织的数据。
         DBMS :数据库管理系统( DataBase Management System
         又称为数据库软件或数据库产品,用于创建或管理 DB

常见的数据库产品(了解性知识)

外国:

MySql   开源,快捷,可靠

Oracle 功能强大,收费

SQl SERVER:只能安装在Windows系统

DB2(IBM):适合处理海量数据,收费

国内:

南大通用;

神通;

人大金仓;

达梦

MySql数据库:

MySql数据库是关系型数据库管理系统,由瑞典MySQL AB公司开发而来,但是目前MySQL属于Oracle旗下产品,

MySQL:

MySQL使用标准的SQL语言,支持多种操作系统,支持多种语言

MySQL具有可靠,快捷和易于使用的特点

MySQL是免费开源的一款产品,可以自己修改源码,开发MySQL供自己使用

mysql 商业版与社区版
● MySQL 商业版是由 MySQL AB 公司负责开发与维护 , 需要付费才能使用
● MySQL 社区版是由分散在世界各地的 MySQL 开发者、爱好者一起开发与维
护,可以免费使用
MySQL安装:
       哔站上有各种教程,直接搜就行
MySQL的常用命令
查看当前所有的数据库: show databases;
选择指定的库: use 库名
查看当前的所有表: show tables;
查看其他库的所有表: show tables from 库名 ;
查看 mysql 版本 select

sql:

SQL(structed query language)是一种带有特殊目的的编程语言,是一种数据库查询和设计语言,用于存储数据以及查询,更新和管理关系数据库系统

优点:不是某个产品的专用语言,几乎所有的DBMS都支持SQL语言,简单易学,灵活使用,可以进行非常复杂的和高级的数据库操作

DDL:

DDL(data definition language):是用来创建和修改数据库结构的语言

常见的DDL关键字:create,drop,alter,rename

 数据库表的基本概念:
1、数据表
表(table)是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素。
表的最简单形式是由行和列组成,分别都包含着数据。 每个表都有一个表头和表体,表头定
义表名和列名 .表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段。
2、字段
字段是表里的一列,用于保存每条记录的特定信息。如客户订单表的字段包括“订单
ID”、“姓名”、“客户ID”、“职务”、“上级”、“地区”、“运货商”、“国家”等。
数据表的一列包含了特定字段的全部信息。
3、记录
记录也被称为一行数据,是表里的一行数据
主键:
在一张表中代表唯一的一条记录 , 不能为空 , 不能重复
约束 :
PRIMARY KEY 设置主键约束
NOT NULL 不能为空约束
UNIQUE 唯一性约束
检查约束 设置条件
外键约束
主键自动增长 , 设置为自动增长时 , 只能为整数类型
AUTO_INCREMENT
默认值
DEFAULT default_value
字段注释 :
comment ' 注释
每个列(字段)都必须有数据类型,下面是一些数据类型
char (指定长度的字符类型)
varchar(不定长的字符类型)
date (日期类型,具体到年月日)
datetime (日期类型,具体到年月日 时分秒)
整数类型
上代码
代码可以直接复制使用,需要提醒刚接触sql的同学,多行SQL代码时需要分段执行(需要执行哪一部分,勾选后执行)


-- 创建表
CREATE TABLE student(
                     sno INT(10) PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
                     NAME VARCHAR(10) NOT NULL COMMENT '姓名',
                     phone_num INT(13)NOT NULL UNIQUE COMMENT '手机号',
                     grnder CHAR(1) DEFAULT '男' COMMENT '性别',
                     height DECIMAL(3,2) CHECK(height<2.62),
                     birthday DATE,
                     opr_time DATETIME
                     )
                     
                     -- 总结来说,抽象类不能创建实例是因为它只是一个模板或者接口,需要子类来实现具体的功能。
                     -- 通过继承抽象类并实现其中的抽象方法, 我们可以创建具体的子类对象来满足实际需求
   -- 重命名表名
   RENAME TABLE student TO student_f;
                     
                     -- ddl删除操作
                     DROP TABLE student_f
                     
                     -- 复制表结构
                     CREATE TABLE copy LIKE student;
                     
            -- ddl修改表结构   alter
            ALTER TABLE copy RENAME TO coppy
            
            
            

DML

DML(data management language):是用来对数据库进行操纵的语言

DML语言常见的关键字:update,delete,insert

直接看代码通俗易懂
-- DML
-- 删除
DELETE FROM 表名 WHERE 条件
TRUNCATE TABLE 表名;-- 清空整张表

-- 修改
UPDATE 表名 SET 列名=新值  WHERE 条件
-- 插入
INSERT INTO coppy(NAME,phone_num,grnder,height,birthday,opr_time)
VALUES('lidaye',123456789,'n',1.23,NOW(),NOW())

INSERT INTO coppy(NAME,phone_num,grnder,height,birthday,opr_time)
VALUES('lid',12345679,'n',1.23,NOW(),NOW()),
      ('李青龙',1321231,'女',1.56,NOW(),NOW()),
      ('六',1233211,'女',1.66,NOW(),NOW())
         
         DELETE FROM coppy
         -- 函数now  获取当前时间
 
INSERT INTO student(NAME,phone_num,grnder,height,birthday,opr_time)
VALUES('lid',12345679,'n',1.23,NOW(),NOW()),
      ('李青龙',1321231,'女',1.56,NOW(),NOW()),
      ('六',1233211,'女',1.66,NOW(),NOW()),
      ('lidaye',123456789,'n',1.23,NOW(),NOW())

DQL

DQL(data query language):是使用频率最高的操作,

可以从一张表查询数据,也可以从多张表中查询数据

特点:
查询列表可以是:表中的指定字段(列)、常量、表达式、函数
select * from 表名   (这是查询表所有记录,一般不建议使用)
查询的结果是一个虚拟的表格
算数运算符:+ - * /
排除重复行: select distinct column1,column2 from table
查询函数:select 函数 ; / 例如version()
上代码
CREATE DATABASE NBAmag

CREATE TABLE team(NO INT PRIMARY KEY AUTO_INCREMENT,
                  NAME VARCHAR(9) NOT NULL UNIQUE,
                  addresss VARCHAR(16) NOT NULL)
                  
                  
                  
         INSERT INTO team(NAME,addresss)
         VALUES('湖人','洛杉矶'),
                ('火箭','休斯顿'),
                ('凯尔特人','波士顿'),
                ('骑士','克利夫兰'),
                ('马刺','圣安东尼奥'),
                ('魔术','奥兰多')
                
                
                
    CREATE TABLE teamnum(num INT PRIMARY KEY AUTO_INCREMENT,
                        NAME VARCHAR(10) NOT NULL,
                        birthday DATE,
                        age INT NOT NULL,
                        height DECIMAL(3,2) ,
                        location VARCHAR(16) )
                        
                        DROP TABLE teamnum
                        
                        INSERT INTO teamnum(NAME,birthday,age,height,location)
                        VALUES('韦德','1982-1-17',42,1.9,'后卫'),
                               ('詹姆斯','1982-12-23',42,2.1,'前锋'),
                               ('科比','1978-12-23',46,2.01,'后卫')
                               
               
             INSERT INTO teamnum(NAME,birthday,age,height,location)
             VALUES('奥尼尔','1972-12-12',51,2.02,'中锋'),
                   ('乔丹','1963-12-23',60,2.01,'前锋')
                   
                   DROP TABLE teamnum
  -- 条件查询
  
  /*
  使用WHERE 子句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句。
语法:select <结果> from <表名> where <条件>
比较
=, != 或<>, >, <, >=, <=
逻辑运算
and 与
or 或
not 非
*/

SELECT *FROM team WHERE NAME IS NOT NULL

SELECT * FROM teamnum WHERE height>1.9 AND height<1.99 OR height != 2.1

SELECT * FROM teamnum WHERE height <> 1.9

SELECT * FROM team WHERE NAME='魔术'

/*
条件查询
模糊查询
LIKE :是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值
或数值型. 通配符: % 任意多个字符
between and 两者之间,包含临界值;
in 判断某字段的值是否属于in列表中的某一项
IS NULL(为空的)或 IS NOT NULL(不为空的)
*/
SELECT * FROM team WHERE NAME LIKE '火%'

SELECT SUM(height) FROM teamnum WHERE height BETWEEN 1.6 AND 2.2 -- 包含临界值

SELECT AVG(height) FROM teamnum 
WHERE height IN(SELECT height FROM teamnum
                WHERE height IS NOT NULL)     
                
                -- not 非
             SELECT * FROM team WHERE NAME IN('湖人','火箭') 
                
ALTER TABLE


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


SELECT * FROM teamnum WHERE height IS NULL AND location LIKE '中%'
UNION
SELECT * FROM teamnum WHERE NAME IS NOT NULL


SELECT * FROM teamnum WHERE height IS NULL AND location LIKE '中%'
UNION ALL
SELECT * FROM teamnum WHERE NAME IS NOT NULL

/*
• 排序
查询结果排序,使用 ORDER BY 子句排序 order by 排序列 ASC/DESC
asc代表的是升序,desc代表的是降序,如果不写,默认是升序
order by子句中可以支持单个字段、多个字段
*/

SELECT * FROM teamnum  ORDER BY age DESC


SELECT * FROM teamnum  ORDER BY height DESC

/*
数量限制
limit子句:对查询的显示结果限制数目 (sql语句最末尾位置)
SELECT * FROM table LIMIT offset rows;
SELECT * from table LIMIT 0,5;
*/

SELECT * FROM teamnum LIMIT 0,2

-- sql server  中用top2   查询前两条

函数

类似于JAVA语言中的方法,C语言中的函数,可以直接调用

分类:
单行函数:如concat length ifnull等
分组函数:做统计使用,又称为统计函数、聚合函数、组函数
1.sum, avg 一般用于处理数值型而 max min count可以处理任何类型
2.以上分组函数都忽略 null值
3.count函数的一般使用 count *)用作统计行数
4.和分组函数一同查询的字段要求是 group by后的字段

  • 25
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值