MySQL基础知识总结
数据库基本概念:
-
DB database 数据库
DBMS database management system 数据库管理系统
SQL Structure Query Language
table 表
column 列 表中的一个字段
MySQL的语言规范:
-
不区分大小写,但建议关键字大写、表名、列名小写
每条命令用分号
每条命令、根据需要,可以进行缩进或换行
注释解释说明 单行注释 #注释文字 多行注释 /**/
字段类型:
- int 整数类型
- double( m,d ) 双精度浮点数 小数类型
- char ( ) 长度不可变
- varchar ( ) 长度可变
- datatime xxxx-xx-xx 00:00:00
- date xxxx-xx-xx
约束(constraint):
-
unique
保证一列中数据是唯一的
-
与主键的区别:
表中可以含有多个唯一约束,但每一个表只允许一个主键
唯一约束可以包含null值
唯一约束不可以定义外键
-
-
primary key
每行都具有主键值( 主键值不允许null值 )
主键值各不相同
-
not null 数值不为空
-
auto_increment 自增长
- 数据类型不能是字符型
- 必须是主键
-
commit ‘ ‘ 注释
-
foreign key 外键
-
外键是表中的一列,其值必须列在另一表的主键中
外键保证数据的完整性
外键有助于防止意外删除数据
-
定义外键的方法
references table ( name )
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 = ‘ ‘
-
删除数据:
delete from name where name=‘ ‘
-
添加字段:
alter table name
add name type () /after name 在name后添加字段
-
修改字段:
alter table name
modify name type()
字段的修改包括修改数据类型(只有对应列为空指才可以修改)、大小和默认值(默认值的修改只会影响后来插入表的数据,对之前的数据不会产生影响);不能修改字段约束、字段先后顺序和注释。
-
删除字段:
alter table name
drop name
一个表至少要保留一个字段;如果所删列(如user_info表中id列)是另一个表的外键(address表user_info_id)则该列(user_info表中id列)无法删除。
DCL数据控制语言基本语句
-
事务处理:通过确保成批的SQL 操作要么完全执行,要么完全不执行,来维护数据库的完整性
-
事务:
四大特性:1.原子性2.一致性3.隔离性4.持续性
一个事务未结束前,所影响的语句被锁定,其他用户不能改变受影响行中的数据。
-
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个或多个字符
- _ 只可以匹配单个字符
-
排序 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 在数据分组后进行过滤
-
多行函数/聚集函数:
-
对多行数据运行的函数,计算并返回一个值
avg ( ) 平均值
count ( )
- count ( * ) 对表中行的数目进行计数,包含null值
- count(column)对特定列中具有值的行进行计算,忽略null值
max ( ) 最大值
min ( ) 最小值
sum ( ) 总和 忽略 null 的值
-