MySQL语句
概要:数据库是数据的仓库
与普通的数据仓库不同的是,数据库依据数据结构来组织数据,因为数据结构的存在,所以看到的数据是条理化的
数据库和普通文件系统的区别在与:数据库拥有数据结构,能都快速查找对应的数据
常说的XX数据库,其实就是XX数据库管理系统:数据库管理系统是一个软件,是数据库服务的体现,根据数据结构的不同,数据库分为关系型数据库和非关系型数据库

数据库分为关系数据库和非关系数据库
关系数据库:
依据关系模型创建数据库 关系模型就是一对一,一对多,多对多等关系模型,关系模型就是存储格式是以行列组成的二维表格,所以一个关系型数据库就是由二维表之间的联系所组成的一个数据组织

非关系数据库:
由于关系型太大和复杂,所以一般使用“非关系型数据”来表示其他类型的数据库
非关系型的模型
比如: 列模型:存储的数据是一列一列,关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录
键值对模型:存储的数据是一个个键值对,比如name:lisi
文档类模型:以一个个文档来存储数据,类似于键值对

MySQL数据库服务器、数据库和表的关系:
步骤:登录数据库 => 创建数据库 => 切换到指定数据库 => 创建表 => 使用表 mysql –u用户名 –p密码(DOS窗口作为client)
关系:数据库服务器 => 数据库 => 表,从左到右为一对多的关系。
数据库最小单位:行。

SQL语言:每个命令执行结束加分号结束(大小写不敏感)

创建、查看、删除数据库
查询所有数据库:show databases;
切换数据库:use 库命名;
创建数据库:create database [IF NOT EXISTS] 库名;

删除数据库:drop database [IF EXISTS] 库名;

查询数据库创建:show 建库语句;
指定数据库采用的字符集:CHARACTER SET
修改数据库的编码集:
1、默认编码集创建过后修改编码集:alter database 数据库名 CHARACTER SET 编码集;
2、创建时直接修改编码集:create database 数据库名 CHARACTER SET 编码集;
注意:不要修改mysql服务器的编码集,表的编码集默认和库一致

切换数据库 use db_name;
查看当前使用的数据库 select database();

MySQL数据类型:


创建表:
格式:
create table [if not exists] 表名(
字段1 数据类型 字段属性,
字段2 数据类型 字段属性,
...
字段N 数据类型 字段属性
)engine=引擎 default charset=编码集;
字段属性:
not null:没给值数据为默认值(varchar默认值为空)
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1
PRIMARY KEY关键字用于定义列为主键,您可以使用多列来定义主键,列间以逗号分隔
ENGINE 设置存储引擎,CHARSET 设置编码
default null:没给值数据就是null
default 值:设置字段的默认值
注意:主键不重复的列

查看当前数据库:select database();

查看建表语句:show create table 表名;

查看表结构:desc 表名;

删除:drop table [if exists] 表名;

通过以上我们发现虚拟机里面MySQL命令难以操作,不好改正问题,所以需要安装虚拟机远程连接navicat对数据库进行操作
创建表:


修改表:
使用 ALTER TABLE 语句追加, 修改, 或删除列的语法.
添加字段:alter table 表名 add 字段 字段数据类型 属性;

修改字段:alter table 表名 change 旧字段 新字段 数据类型 属性;
修改字段:alter table 表名 modify 字段 数据类型 属性;
注意:
change:修改所有(字段名,数据类型,属性)

modify:修改一部分(数据类型,属性)

修改数据类型时,varchar->int元数据会变为0
ALTER TABLE table DROP (column);


修改表的名称:rename table 表名 to 新表名;


修改表的字符集:alter table 表名 character set utf8;

增删改查:字符串全部使用''包起来
注意:
会发现代码正确结果也出来,但是会报错,这是需要改一下navicat配置
直接在查询里面输入
set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
然后关闭连接重新打开,就不会出现这样的问题了

增:
格式:
insert into 表名(字段) values(值),(值)...(值);

删
如果不使用where子句,将删除表中所有数据。
Delete语句不能删除某一列的值(可使用update)
使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。
删除表中数据也可使用TRUNCATE TABLE 语句
格式:
delete from 表名 where 子句;

改
UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。
WHERE子句指定应更新哪些行。注意:如没有WHERE子句,则更新所有的行。
格式:
update 表名 set 字段1=值1,字段2=值2...字段N=值N where 子句;



查

查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割
SELECT 命令可以读取一条或者多条记录。 你可以使用星号(*)来代替其他字段
SELECT语句会返回表的所有字段数据 你可以使用 WHERE 语句来包含任何条件。
可以使用 LIMIT 属性来设定返回的记录数。
可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

格式:
select 字段 from 表名 where 子句;


注意:
select:显示数据到控制台
from:获取数据
select查询结果是一张表(特殊的表:用后即消失)
where子句判读符号:

> < <= >= = <> 大于、小于、大于(小于)等于、不等于
between ...and... 显示在某一区间的值

in(set) 显示在in列表中的值,例:in(100,200)
like '张_' 模糊查询 使用% 和 _
select * from students where name like 's%';
select * from students where name like 's_';

Is null 判断是否为空
select * from students where address is null;

and 多个条件同时成立
or 多个条件任一成立

not 不成立,例:where not(expection>10000);

mysql内置函数使用

聚合函数;
count(字段):求多少行数据
sum(字段):求和
avg(字段):平均数
max(字段):最大值
min(字段):最小值
注意:
varchar能比较大小,不能获取avg(没有任何意义)
如果值为Null不参与计算
sum和avg字段的数据不是数值,结果都是0
聚合函数-count
Count(列名)返回某一列,行的总数 (某一列有null不参与计算)




聚合函数-SUM
Sum函数返回满足where条件的行的和
Select sum(列名){,sum(列名)…} from tablename [WHERE where_definition]
注意:sum仅对数值起作用,否则会报错。


聚合函数-AVG
AVG函数返回满足where条件的一列的平均值
Select sum(列名){,sum(列名)…} from tablename [WHERE where_definition]

聚合函数-MAX/MIN
Max/min函数返回满足where条件的一列的最大/最小值
Select max(列名) from tablename [WHERE where_definition]

子查询:

插入多条数据,分页查找(limit)



DISTINCT去重
去重
格式:
DISTINCT 字段1,字段2...字段N
注意:
字段不能在DISTINCT之前,只能在DISTINCT后面
DISTINCT之后有多个字段,按照所有字段进行去重

where没有办法对结果进行再次查询。
having代表筛选,可以对查询结果进行查询。

浙公网安备 33010602011771号