mysql数据库入门

一、数据库概述

数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享,可以存储、维护和管理数据的集合。

MySQL是一种开放的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。其因速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

二、操作数据库
创建数据库:Create database study character set gbk;

查看所有数据库:Show databases;

查看前面创建的study 数据库的定义信息:Show create database study;

修改数据库study 的字符集修改为utf8:alter database study character set utf8;

删除前面创建的study数据库:Drop database study;

查看当前使用的数据库:Select database();

切换数据库:Use mydb;
三、操作数据库表(以study表为例)

1.创建数据库表

语法:

  create table 表名(

     字段1 字段类型,

     字段2 字段类型,

      ...

     字段n 字段类型

  );

常用数据类型:

int:整型  double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;

char:固定长度字符串类型;varchar:可变长度字符串类型;text:字符串类型;

date:日期类型,格式为:yyyy-MM-dd; time:时间类型,格式为:hh:mm:ss

timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss  会自动赋值 datetime:日期时间类型yyyy-MM-dd hh:mm:ss



 CREATE TABLE student(
              stuId  INT(12),
              stuName VARCHAR(12),
              sex  VARCHAR(12),
              major  VARCHAR(12) 
           );

2.插入数据:Insert into student(stuId,stuName,sex,major) value(201701002,“王静”,“女”,“应用物理学”);

3.删除数据:delete from student where stuId=201701002;

4.修改数据:update student set stuName="王晶"where stuId=201701002;

5.查询数据:select * from student where stuId=201701005;

    查询数据语法:SELECT列名FROM表名【WHERE --> GROUP BY -->HAVING--> ORDER BY】

在WHERE子句中可以使用如下运算符及关键字:

    =、!=、<>、<、<=、>、>=;BETWEEN…AND;IN(set);IS NULL; AND;OR;NOT;

a.模糊查询:模糊查询需要使用关键字LIKE。

通配符:
      _ :任意一个字母
      % :任意0~n个字母

eg:  select * from student where stuName like"田%"; 查询田姓所有学生

    b:去除重复记录:两行或两行以上记录中系列的上的数据都相同,使用关键字:DISTINCT

      eg:select distinct sex from student;去除查询结果列中的重复项

     注:1. IFNULL(sal,0); 将NULL转为0,以便进行运算    2.  As:给列名添加别名     3. Order  BY  列名  升/降;ASC:升序    DESC:降序   4.limit:用来限定查询结果的起始行,以及总行数(起始行从0开始)。
四、聚合函数:聚合函数是用来做纵向运算的函数

COUNT():统计指定列不为NULL的记录行数;

 eg:select count(sex) from student;   查询性别不为NULL的学生数目

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

注:当需要分组查询时需要使用group by 子句,凡和聚合函数同时出现的列名,则一定要写在group by之后。

having与where的区别:

having是在分组后对数据进行过滤,where是在分组前对数据进行过滤。如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

五、连接查询:

连接查询就是求出多个表的乘积,但是连接查询会产生笛卡尔积,这样的结果并不是我们想要的。可以通过条件进行过滤。通常要查询的多个表之间都存在关联关系,那么就通过关联关系去除笛卡尔积。

1.使用主外键关系做为条件来去除无用信息 (连接语句就是内连接,但它不是SQL标准中的查询方式,可以理解为方言)

  eg: select * from a,b where a.column = b.column;

2.内连接(查询结果必须满足条件)

   eg: select * from a join b on a.column = b.column;

3.左连接:左连接是以左表为主,右表中满足条件的显示出来,不满足条件的显示NULL。

   eg: select * from a left join b on a.column = b.column;

4.右连接:右连接是以右表为主,左表中满足条件的显示出来,不满足条件的显示NULL。

   eg: select * from a right join b on a.column = b.column;

5.自然连接:自然连接无需你去给出主外键等式,将连接的表中名称和类型完全一致的列作为条件,它会自动找到这一等式。

   eg: select * from a natural join b;
六、子查询:一个select语句中包含另一个完整的select语句

子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子查询语句了。

子查询出现的位置:

where后,作为条为被查询的一条件的一部分;
from后,作表;

当子查询出现在where后作为条件时,还可以使用如下关键字:any、all

  eg:SELECT * FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename='JONES')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值