MySQL基础篇

1.简介

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,Sun公司又被Oracle公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

2.SQL介绍

2.1 SQL是什么,它的作用是什么

结构化查询语言(StructuredQuery Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

2.2 SQL分类

SQL一共分成四类,如下所示:

  数据定义语言:简称DDL(DataDefinition Language),用来定义数据库对象:数据库,表,列等,例如创建、删除、修改:数据库、表结构等;

  数据操作语言:简称DML(DataManipulation Language),用来对数据库中表的记录进行更新,例如:增、删、改表记录;

  数据控制语言:简称DCL(DataControl Language),用来定义数据库的访问权限和安全级别,及创建用户;

  数据查询语言:简称DQL(DataQuery Language),用来查询数据库中表的记录。

2.3 SQL语法

SQL的语法有以下要求:

  SQL语句可以单行或多行书写,以分号结尾;

   可使用空格和缩进来增强语句的可读性;

  MySQL数据库的SQL语句不区分大小写,建议使用大写,例如:SELECT * FROM user。

2.3.1 创建数据库

1.使用默认的字符集与校对

create database 数据库名;

2.可以指定数据库字符       

create database 数据库名  CHARACTER  set gbk;

3.可以指定数据库字符与校对

create database 数据库名 character set 编码 COLLATE 校对;

2.3.2 查看数据库

1.查看当前数据库服务器下所有数据库

show databases;                          

2. 查看创建数据库的语句

show create database 数据库名;   

2.3.3 修改数据库

1.修改数据库操作我们很少使用,了解一下语法就可以。

修改数据库的编码集

alter database 数据库名称  character set 编码 collate 校对

2.3.4 删除数据库

1.删除数据库

drop database 数据库名

3.数据库表操作

3.1 mysql数据库类型

类型

描述

            int                              

整型,和java中的int类型一样;

double

浮点型,例如double(5,2)表示该列存放的数据最多是5位,而且其中必须有2位小数,它的最大值是:999.99;

decimal

浮点型,用于保存对准确精度有重要要求的值,例如与金钱有关的数据。

char

固定长度字符串类型,如果没有指定长度,默认长度是255,如果存储的字符没有达到指定长度,mysql将会在其后面用空格补足到指定长度;

varchar

可变长度字符串类型,它的长度可以由我们自己指定,它能保存数据长度的最大值是65535,如果存储的字符没有达到指定的长度,不会补足到指定长度;

tinytext

可变长度字符串类型,其存储范围是28-1B;

text

也是可变长度字符串类型,其存储范围是216-1B;

mediumtext

也是可变长度字符串类型,其存储范围是224-1B;

longtext

也是可变长度字符串类型,其存储范围是232-1B;

tinyblob

是可变长度二进制类型,其存储范围是28-1B;

blob

是可变长度二进制类型,其存储范围是216-1B;

mediumblob

也是可变长度二进制类型,其存储范围是224-1B;

longblob

也是可变长度二进制类型,其存储范围是232-1B;

date

日期类型,格式为yyyy-MM-dd,只有年月日,没有时分秒;

time

时间类型,格式为hh:mm:ss,只有时分秒,没有年月日;

timestamp

时间戳类型,格式为:yyyy-MM:dd hh:mm:ss,年月日,时分秒都有。


3.2 创建表

1.创建表---使用默认的字符集与校对

                      createtable 表名(

                             字段1 类型,

                            字段2 类型,

                             .....

                      );

2.创建表--指定字符集与校对

                      createtable 表名(

                             字段1 类型,

                             字段2 类型,

                             .....

                      )character set 字符集  collate 校对;

3.3 约束

注意:数据库中一共有六种约束,而mysql只支持五种。

3.3.1 主键约束

主键是用于标识当前记录的字段。它的特点是非空,唯一。             

在开发中一般情况下主键是不具备任何意义,只是用于标识当前记录。

创建主键:

1.在创建表时,在字段后面加上  primary key.

                     createtable tablename(                                     

                            idint primary key,

                            .......

                     )

2.也可以表创建的最后来指定主键                                                                                                          

     create table tablename(                                     

                            idint,

                            .......

                            primary key(id)

      )

3.删除主键:alter tabletablename drop primary key ;      

4.添加主键:ALTERTABLE tablename  ADD PRIMARY KEY(id);

3.3.2 唯一约束

某一列的值不为重复可以使用唯一约束:unique

3.3.3 非空约束

notnull

3.3.4 默认值约束

default值

3.3.5 外键约束


3.4 表操作

3.4.1 查看表

1.查看表结构

        desc 表名;

2.查看当前数据库下所有表

        show tables;                        

3.查看表的字符编码集

        show create table 表名;

3.4.2 修改表

1.修改表的结构语法格式:alter table 表名 关键字 ….;                                 

        关键字有以下几个:

               1.add----添加列操作   alter table 表名  add 列名 类型;

               2.modify--修改列的类型 alter table 表名 modify 列名  类型;

               3.drop --删除列 alter table 表名  drop 列名.

               4.change--修改列名称  alter table 表名 change 旧列名  新列名 类型;

2.修改表的名称

        rename table 旧表名 to 新表名;                   

3.修改表的字符编码集

        alter table 表名 character set 字符集;

3.4.3 删除表

1.drop table 表名;

3.5 记录操作

3.5.1 insert操作

1.插入所有列值

insert into 表名(列名1,列名2, ...) values(列值1, 列值2, ...);

表名后面是当前表中所有字段名称   

2.插入部分列值

insert into 表名(列名1,列名2) values(列值1, 列值2);

表名后面是当前表中部分字段名称

3.不指定列名

insert into 表名 values(列值1, 列值2, ...);

l  没有给出要插入的列,那么表示插入所有列;

l  值的个数必须是该表的列的个数;

l  值的顺序,必须与表创建时给出的列的顺序相同。

4.插入操作注意事项

l  插入的数据应与字段的数据类型相同

l  数据的大小应该在列的长度范围内

l  在values中列出的数据位置必须与被加入的列的排列位置相对应。

l  .除了数值类型外,其它的字段类型的值必须使用引号引起。

l  如果要插入空值,可以不写字段,或者插入 null.                                        

注意:对于自动增长的列在操作时,直接插入null值即可.

3.5.2 update操作

1.下面语句会将指定字段的值全部修改

 update 表名 set 字段名称=值;

2.如果要修改多个字段

update 表名 set 字段1名称=值 ,字段2名称=值,...;

以上方式,进行修改,会将表中这个字段所有值都修改.

3.在实际开发中,对于修改操作,都是有条件修改.

update 表名 set 字段=值 ,... where 条件.

3.5.3 delete操作

1.格式  delete from 表名。这会将表中所有数据删除。

在开发一般情况下有条件删除:deletefrom 表名 where 条件。

3.5.4 select基本操作

1.查询指定列

select 字段 from 表名;

2.查询指定字段信息,如果要查询多个字段

select 字段1,字段2,...from 表名;    

3.查询所有列

select * from 表名;

4.查询表中所有字段.

注意:使用"*"在练习,学习过程中可以使用,在实际开发中,不建议使用。           

5.去掉重复记录

select distinct 字段 from 表名;        

distinct它的作用是去除重复.

6.使用别名        

使用as 别名可以给表中的字段,表设置别名.

7.在查询中可以直接对列进行运算

 我们在sql操作中,可以直接对列进行运算。

8.ifnull函数使用

在对数值类型的列做运算的时候,如果做运算的列的值为null的时,运算结果都为null,为了解决这个问题可以使用ifnull函数。

3.5.5 order by 排序

在开发中,我们从数据库中查询出的数据经常需要根据某些字段进行排序,可以使用order by关键字,后面跟的就是要排序的列

order by 子句是select的最后的一个子句。                         

asc 升序 (默认)

desc 降序

3.5.6 聚合函数

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。

今天我们学习如下五个聚合函数:

count:统计指定列不为NULL的记录行数;

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

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

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

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

3.5.7 分组操作

分组查询是指使用groupby字句对查询信息进行分组,例如:我们要统计出products表中所有分类商品的总数量,这时就需要使用group by 来对products表中的商品根据category进行分组操作。

分组后我们在对每一组数据进行统计。

分组操作中的having子名是用于在分组后对数据进行过滤的,作用类似于where条件。

记录操作总结

综合我们学习的查询相关关键字:select,from,where,group by,having,order by;它们的执行顺序是如下:

from:首先执行from,找到要查询的emp表;

where:判断条件,筛选出工资大于15000的所有记录;

group by:根据以上关键字执行的结果上对记录按照指定列进行分组

having:对分组后的信息进行筛选;

select:选择所需要的列信息;

order by:对查询信息进行排序。

在SQL语言中,第一个被处理的子句是from字句,尽管select字句最先出现,但是几乎总是最后被处理。

你可能感兴趣的:(MySQL,数据库)