目录
MySQL数据库相关概念
SQL语言
Structured Query Language的缩写,即结构化查询语言
关系型数据库的标准语言
用于维护管理数据库
包括数据查询、数据更新、访问控制、对象管理等功能
SQL分类
DDL:数据定义语言
DML: 数据操纵语言
DQL:数据查询语言
DCL: 数据控制语言
MySQL中6种常见的约束
主键约束(primary key)
外键约束(foreign key)
非空约束(not null)
唯一性约束(unique [key|index])
默认值约束(default)
自增约束(auto_increment)
外键的定义:如果同一个属性字段x在表一中是主键,而在表二中不是主键,
则字段x称为表二的外键。
创建外键约束作用(误删,修改),保证数据的完整性和一致性。
主键表和外键表的理解
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)
注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,
主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。
常用的数据类型
int:整型 用于定义整数类型的数据
float:单精度浮点4字节32位 准确表示到小数点后六位
double:双精度浮点8字节64位
char:固定长度的字符类型 用于定义字符类型数据。
varchar:可变长度的字符类型
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有2位 指定长度数组
#Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错
主键是唯一的,但主键可以由多个字段构成
数据库的基本操作命令
describe
可简写为 desc 后面加表名查看表的结构
Field:字段名称
Type:数据类型
Null :是否允许为空
Key :主键
Type:数据类型
Null :是否允许为空key :主键
Default :默认值
Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)1 2
id:1 3 5 7
DDL
create
create 创建数据库、表
create database 数据库名
create table 表名 () 括号内加属性和数据类型
drop
drop 删除数据库、表
drop database 数据库名
drop table 表名
DML
insert
insert 插入数据
insert into 表名 (字段1,字段……) values (字段1的值,字段2的值……)
insert into 表名 values (字段1的值,字段2的值……)
update
update 修改、更新表中数据记录
update 表名 set 字段1=新值,字段2=新值…… where 条件表达
delete
delete 删除数据
条件删除
delete from 表名 where 条件表达
删除整个表的数据
delete from 表名
DQL
select
select 查询数据记录
select 字段1,字段2…… from 表名 可加条件where
select * from 表名 可加条件where
查询显示数据行数
select * from limit n 显示前n行
select * from limit n,m 显示第n行后的m行
DCL
alter
alter 修改表结构和表名
修改表名
alter table 旧表名 rename 新表名
修改表的结构
增加表的字段
alter table 表名 add 新字段 数据类型
修改表的字段
alter table 表名 change 旧列名 新列明 数据类型
数据库高级操作命令
克隆表
方法一
复制格式
create table 新表名 like 旧表名
备份内容
insert into 新表名 select * from 旧表名
方法二
复制旧表的数据到新表中
create table 新表名 (select * from 旧表名)
清空表
删除表内的所有数据
方法一:
delete from 表名;
#DELETE清空表后,返回的结果内有删除的记录条目;
DELETE 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除
所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。
方法二:
truncate table 表名;
#TRUNCATE清空表后,没有返回被删除的条目: TRUNCATE 工作时是将表结构按原样重新建立,
因此在速度上TRUNCATE会比DELETE清空表快;使用TRUNCATE TABLE 清空表内数据后,
ID会从1开始重新记录
临时表
临时表创建成功之后,使用SHOWTABLES命令是看不到创建的临时表的,临时表会在连接退出
后被销毁。
如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除
临时表。
PS:无法创建外键
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型, ……PRIMARY KEY (主键名))
数据库用户管理
新建用户
create user '用户名'@'来源地址' identified by '密码'
来源地址 主机名、IP地址、网段、所有(%通配符)
密码可以使用select、PASSWORD('密码')
查询创建的用户信息并增删改
mysql创建的用户都在mysql数据库中的user表中
查询
use mysql;
select * from user;
删除用户 drop
修改当前用户密码 set password = password ('密码')
修改其他用户密码 set password for '用户名'@'来源地址' = password ('密码')
忘记用户密码
修改my.cnf配置,跳过密码认证
[mysql]
skip-grant-tables
数据库用户授权
grant 权限列表 on 数据库名.表名 to '用户名'@'来源地址' identified by '密码'
刷新权限
flush privileges
撤销权限
revoke 权限列表 on 数据库.表名 from '用户名'@'来源地址'