MySQL 基础知识总结
数据库基本概念
-
DB database 数据库
DBMS database management system 数据库管理系统
SQL Structure Query Language
table 表
column 列表中的一个字段
row 行
MySQL的语言规范
-
不区分大小写,但建议关键字大写、表名、列名小写
每条命令用分号
每条命令、根据需要,可以进行缩进或换行
注释解释说明 单行注释 #注释文字 多行注释 /**/
字段类型
- int 整数类型
- double( m,d ) 双精度浮点数 小数类型
- char ( ) 长度不可变
- varchar ( ) 长度可变
- datatime xxxx-xx-xx 00:00:00
- date xxxx-xx-xx
- time 00:00:00
- text
- blob 二进制文件 ( 一般不用 )
- float ( m , d ) 单精度浮点数,m表示数字长度,d 表示小数数位
- double ( m ,d ) 双精度浮点数
约束(constraint)
-
unique
保证一列中数据是唯一的
-
与主键的区别:
表中可以含有多个唯一约束,但每一个表只允许一个主键
唯一约束可以包含null值
唯一约束不可以定义外键
-
-
primary key
每行都具有主键值( 主键值不允许null值 )
主键值各不相同
-
not null 数值不为空
-
default 设置默认值
-
auto_increment 自增长
- 数据类型不能是字符型
- 必须是主键
-
commit ' ' 注释 ( 不属于约束)
-
foreign key 外键
-
外键是表中的一列,其值必须列在另一表的主键中
外键保证数据的完整性
外键有助于防止意外删除数据
-
定义外键的方法
constraint 外键名 foreign key ( name ) references table ( name )
-
DDL数据定义语言基本语句
-
create database name character set utf8 创建数据库
-
show database 查看MySQL数据库管理系统中所有数据库
-
drop database name 删除数据库
-
use name 切换数据库
-
select database() 查看当前选择的数据库
-
创建表:
create table name( 字段 ( ) 约束, )
DML数据操纵语言基本语句
-
添加数据:
insert into table ( 字段 ) values ( 值 )
-
修改数据:
update table set name=' ' where name = ' '
!where 语句十分重要 没有where语句将修改全部的数据
-
删除数据:
delete from name where name=' '
!没有where语句将删除所有数据
-
添加字段:
alter table name
add name type () /after name 在name后添加字段
add constraint 外键名 foreign key ( ) reference 主表(字段)
-
修改字段:
alter table name
modify name type()
字段的修改包括修改数据类型(只有对应列为空指才可以修改)、大小和默认值(默认值的修改只会影响后来插入表的数据,对之前的数据不会产生影响);不能修改字段约束、字段先后顺序和注释。
-
删除字段:
alter table name
drop name
drop foreign key 外键名
一个表至少要保留一个字段。如果所删列是另一个表的外键,则该列无法删除。
DCL数据控制语言基本语句
-
事务处理:通过确保成批的SQL 操作要么完全执行,要么完全不执行,来维护数据库的完整性
-
事务:
四大特性:1.原子性2.一致性3.隔离性4.持续性
一个事务未结束前,被DML语句影响行的数据被锁定,其他用户不能改变受影响行中的数据。
-
set autocommit = 0 取消自动提交
commit 提交 将未存储的SQL语句写入数据库表
rollback 撤销指定SQL 语句
DQL数据查询语言基本语句
-
select 查询列表 from 表名
-
起别名:
SELECT name AS 别名 ( 建议使用 )
SELECT name 空格 别名
from name 别名 表的别名一般用于多表查询
-
select * from name;
查询所有字段 真实开发中一般不用
会降低检索速度和应用程序的性能
-
select distinct name from name
distinct 必须放在 select 后面 列名前面
-
条件查询
select 查询列表
from 表名
where 筛选条件
-
按条件表达式筛选条件运算符:
< > = != <> >= <= between and is null is not null
-
按逻辑表达式筛选 逻辑表达式筛选 逻辑运算符
and or in not
-
-
模糊查询
like — 和通配符一块使用 只能用于文本字段
- % 可以匹配0个或多个字符
- _ 只可以匹配单个字符
- '%A_%' excape ' A ' 转义 _
-
排序 order by
select 选择列表
from 表名
where 筛选条件
order by 对筛选结果进行排序
-
order by desc 降序 asc 升序( 默认 )
order by 一般放在最后
对过滤之后的数据进行排序
当对两个字段以上进行排序时,第一个字段相同时,才对第二个字段排序
-
-
分组 group by
select 选择列表
from 表名
where 筛选条件
group by 分组
having 对分组结果进行过滤
order by 对最终结果进行排序
- 如果分组中包含null值的行,则null 将作为一个分组返回
- group by 子句必须出现在 where 子句之后, order by 之前
- where 在数据分组前进行过滤, having 在数据分组后进行过滤
- 如果 使用group by , select 后面添加的字段只能有分组的字段和多行函数
-
多行函数/聚集函数:
-
对多行数据运行的函数,计算并返回一个值
avg ( ) 平均值
count ( )
- count ( * ) 对表中行的数目进行计数,包含null值
- count(column)对特定列中具有值的行进行计算,忽略null值
max ( ) 最大值
min ( ) 最小值
sum ( ) 总和 忽略 null 的值
-

浙公网安备 33010602011771号