手动不易,转发请注明出处 --Trance
数据库系统命令:
(1).查看存储过程状态:show procedure status;
(2).显示系统变量:show variables (最好使用模糊查询)
(3).查询当前系统正在执行的进程(相当于DDL(数据库定义语言) 或 DML(数据库操作语言) 或 DCL(数据库控制语言)):show processlist
(4).显示操作对于的操作内容权限:show privileges
(5).显示数据库支持引擎:show engines
(6).显示最后一个执行的语句所产生的错误、警告和通知:show warnings
(7).显示最后一个执行语句的错误:show errors
(8).数据库帮助命令:在登录情况下help
(9).数据库退出指令:exit 或 quit
(10).数据库操作命令大全:在未登录情况下 mysql - help
(11).set names = 编码 进入数据库后马上设置 防止乱码
操作术语:
DDL:
Data Definition Language 数据定义语言
DML:
Data Manipulation Language 数据操纵语言
DQL:
Data Query Language 数据查询语言
DCL:
Data Control Language 数据控制语言
TCL:
Transaction Control Language 事务控制语言
数据库设计原则(三大范式 3NF):
第一范式(1NF):
原子性:数据不可再分:一个表中的数据(字段值)不可再分 (注意:从应用需求来决定,没有绝对性)
例子(错误):
id name
1 张三,重庆
例子(正确):
id name address
1 张三 重庆
第二范式(2NF):
唯一性:保证行数据的唯一性
例子(错误):
id name
1 张三
1 李四
例子(正确):
id name
1 张三
2 李四
第三范式(3NF):
独立性:消除传递依赖:禁止非主键字段依赖非主键依赖,在发生数据冗余,难以维护修改 (注意:发生这种情况一定是多主键表)
例子(错误):
id name classno classname
1 张三 1 一班
1 李四 2 二班
例子(正确):
id name classno
1 张三 1
1 李四 2
classno classname
1 一班
2 二班
数据库连接方式:
连接本地:
mysql -u 用户名 -p \n
输入密码
连接远程:
mysql -h 主机名 -u 用户名 \n (在对方的数据库中拥有登录用户并且有权限)
输入密码
数据库用户操作:
查询所有用户:
select user from user;
创建用户:
create user 用户名 identified by 密码
用户授权:
grant 权限名称(如:select、delete等DML语句、全部(ALL)) on *.*(注意这里前面的*是代表数据库,第二个*是表名,这里表示所有的数据库.表) to 用户
撤销用户权限:
revoke 权限 on *.* from 用户
删除用户:
drop user 用户名 (这个有点问题,待解决)
delete from mysql where user = '用户名称'
查询用户信息:
show grants for 用户名
密码转换:
select password('密码') 注意:这是一个41个长度的16进制密码,如果在登录后设置密码必须转换为41个长度16进制密码,否则报错
未登录设置用户密码:
mysqladmin -u 用户名 -p 新密码(注意这里是第一次安装设置)
修改用户密码:
mysqladmin -u 用户名 -p 旧密码 password 新密码
登录后设置用户密码:
set password for 用户名 = password(新密码),如果是当前用户直接set password = password(新密码)
修改用户名:
MYSQL5.0以后 rename user 用户名 to 新用户名
update 表名 set user = '新用户名' where user = '旧用户名'
刷新权限:
flush privileges
权限列表:
表的创建、插入、修改、删除、查询权限:
create
insert
update
delete
select (select(列名...),可以作用在某列上)
数据库与表的删除和修改权限:
drop
alter
modify
chanage
外键权限:
references
临时表权限:
create temporary tables
索引权限:
index
视图权限:
create view
show view
存储过程、函数权限:
cteate routine
alter routine
execute(execute on procedure)
execute(execute on function)
重载权限:
reload
锁表权限:
lock tables
复制权限:
replication client
replication slave
查看数据库权限:
show databases
查看进程权限:
process
创建用户权限:
create user
文件访问权限:
file
杀死线程权限:
super
数据库管理员命令:
mysqladmin -V 数据库版本信息
mysqladmin -u 用户 -p 旧密码 password 新密码 修改密码
mysqladmin -i(number) 重复执行间隔数
mysqladmin -c(count) 重复执行次数
mysqladmin variables 数据库变量
mysqladmin -? 数据库帮助
mysqladmin -u root -p reload 重载权限信息
mysqladmin -uroot -p shutdown 使用安全模式关闭数据库
待研究...
库操作:
(1).查看存在数据库:
show databases
(2).创建数据库:
create database if not exists 数据库名称 (注意:后面最好加上字符编码,防止乱码) -> create database 数据量名称 character set utf8(你需求的字符编码) collate utf8_general_ci(子集)
(3).使用数据库:
use 数据量名称
(4).删除删除库:
drop database if exists 数据库名称
(5).查看创建数据库信息:
show create database 数据库名称
表操作:
(1).查看数据库表:show tables
(2).创建表:
create table if not exists 表名(
属性名称 属性类型[完整性约束条件],
属性名称 属性类型[完整性约束条件],
属性名称 属性类型[完整性约束条件]
)engine=引擎类型,charset=字符编码集,comment=表备注;
(3)完整性约束条件表:
primary key 主键约束
foreign key 外键约束
unique 唯一约束
not null 不能为空
auto_increment 自增
default 默认值
(4)设置表主键:
create table 表名(
属性名称 属性类型 primary key, <---- 光标
属性名称 属性类型[完整性约束条件],
属性名称 属性类型[完整性约束条件]
)engine=引擎类型,charset=字符编码集;
多字段主键:
create table 表名(
属性名称 属性类型[完整性约束条件],
属性名称 属性类型[完整性约束条件],
primary key(属性1,属性2,...) <---- 光标
)engine=引擎类型,charset=字符编码集;
添加主键:
alter table 表名 add primary key(列名)
修改主键:
alter table 表名 change 列名 属性名称 属性类型[完整性约束条件]
删除主键:
alter table 表名 drop primary key
修改自增变量值:
alter table 表名 auto_increment = 从数字几开始.
(5)设置外键:
外键是表的一个特殊字段。如果字段id是一个表A的属性,且依赖于表B的主键.
那么,称表B为父表,表A为子表,id为表A的外键。通过id字段将父表B和子表A建立关联关系.
设置表的外键指在创建表设置某个字段为外键.
外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作.
级联操作:
on delete (在删除的时候) restrict(限制外表中的外键改动) cascade(跟随外键改动) set null(设置为空) set default(设置默认值) no action(无动作,默认的)
on update (在删除的时候) restrict(限制外表中的外键改动) cascade(跟随外键改动) set null(设置为空) set default(设置默认值) no action(无动作,默认的)
创建表时设置外键:
create table 表名(
属性名称 属性类型[完整性约束条件],
属性名称 属性类型[完整性约束条件],
constraint 外键名称 foreign key(主键表列属性(也就是本表列属性)) references 外键表名称(外键表列属性) on (update 级联操作 或 delete 级联操作) <---- 光标
)engine=引擎类型,charset=字符编码集;
单独设置外键:
alter table employee add constraint 外键名称 foreign key(外键表列属性(也就是本表列属性)) references department(主键表列属性) on (update 级联操作 或 delete 级联操作)
修改外键:
外键不支持修改
删除外键:
alter table 表名 drop foreign key 外键名称
(6).设置唯一约束:
创建唯一约束:
建表时创建:
create table 表名(
属性名称 属性类型[完整性约束条件],
constraint 唯一约束名称 unique key(列名) <---- 光标
)engine=引擎类型,charset=字符编码集;
建表后创建:
alter table 表名 add constraint 唯一约束名称 unique key(列名)
删除唯一约束:
alter table 表名 drop index 约束
修改唯一约束:
唯一约束不支持修改
(7).设置默认值:
建表时创建:
create table 表名(
属性名称 属性类型[完整性约束条件] default 默认值 <---- 光标
)engine=引擎类型,charset=字符编码集;
建表后创建:
alter table 表名 alter column 列名 set default 默认值
删除默认值:
alter table 表名 alter column 列名 drop default
修改默认值:
同创建方式
(8).设置不为空值:
建表时创建:
create table 表名(
属性名称 属性类型[完整性约束条件] not null <---- 光标
)engine=引擎类型,charset=字符编码集;
建表后创建:
alter table 表名 change 列名 列名(属性名称) 属性类型[完整性约束条件]
修改不能为空值:
alter table 表名 modify 列名 属性类型[完整性约束条件] not null
删除空值:
(在实际意义上算是修改字段属性了) alter table 表名 change 列名 列名(属性名称) 属性类型[完整性约束条件]
(9).自增变量:
auto_increment 默认是从1开始递增
建表时创建:
create table 表名(
属性名称 属性类型[完整性约束条件] auto_increment <---- 光标
)engine=引擎类型,charset=字符编码集,(如果要改变自增变量起始值)auto_increment = 起始值;
建表后创建:
alter table 表名 modify 列名 int auto_increment (注意:自增的前提 此列必须为主键 或者 唯一约束)
alter table 表名 auto_increment = 起始值
删除自增:
alter table 表名 modify 列名 属性类型[完整性约束条件]
修改自增:
同建表后创建
(10).删除表:
drop if exists 表名
(11).清空表数据:
truncate 表名
(12).改变列名称:
alter table 表名 change 列名 列名(属性名称) 属性类型[完整性约束条件]
(13).改变列类型属性约束:
alter table 表名 modify 列名(属性名称) 属性类型[完整性约束条件]
(14).增加一列:
alter table 表名 add column 列名(属性名称) 属性类型[完整性约束条件]
(15).删除一列:
alter table 表名 drop column 列名
(16).表引擎:
创建时指定表引擎:
create table 表名(
属性名称 属性类型[完整性约束条件]
)engine=引擎类型; <---- 光标
修改表引擎:
alter table 表名 engine = 引擎名称
删除表引擎:
不存在
引擎类型:(存储机制,也称为表类型)
InnoDB
MyIsam
BDB
archive
Mermory
...
默认是innodb
(17).查看表状态:
show table status from 数据库名称 where name = '表名'
show table status
(18).查看一个表几行几列:
mysqlshow -u root -p 数据库名称 -v -v
(19).查看表列信息:
show columns from 表名 或者 show columns from 数据库.表名
(20).表备注:
创建表时:
create table if not exists 表名(
属性名称 属性类型[完整性约束条件],
属性名称 属性类型[完整性约束条件],
属性名称 属性类型[完整性约束条件]
)engine=引擎类型,charset=字符编码集,comment=表备注;
创建表后:
alter table 表名 comment = 备注信息
修改表备注:
同创建表后
删除表备注:
暂时未发现
(21).创建相似表:
create if not exists table 表名 like 存在表名 (注意:只是复制了表结构,数据不会复制)
数据类型:
数值类型:
整数类型:
tinyint -> 1字节 -> 小整数值
smallint -> 2字节 -> 大整数值
mediumint -> 3字节 -> 大整数值
int -> 4字节 -> 大整数值
bigint -> 8字节 -> 极大整数值
float -> 4字节 -> 单精度浮点数值
double -> 8字节 -> 双精度浮点数值
decimal 附属double
字符串类型:
char -> 0-255字节 -> 定长字符串
varchar -> 0-255字节 -> 变长字符串
tinyblob -> 0-255字节 -> 不超过255个字符的二进制字符串
tinytext -> 0-255字节 -> 短文本字符串
blob -> 0-65535字节 -> 二进制形式的长文本数据
text -> 0-65535字节 -> 长文本数据
mediumbob -> 0-16777215字节 -> 二进制形式的中等长度文本数据
mediutext -> 0-16777215字节 -> 中等长度文本数据
logngblob -> 0-4294967295字节 -> 二进制形式的极大文本数据
longtext -> 0-4294967295字节 -> 极大文本数据
varbinary(m) -> 允许长度0-m个字节的定长字符串,值的长度+1个字节
binary(m) -> 允许长度0-m个字节的定长字符串
日期和时间类型:
date -> 4字节 -> 1000-01-01/9999-12-31 yyyy-mm-dd -> 年/月/日
time -> 3字节 -> '-838:59:59'/'838:59:59' hh:mm:ss -> 时/分/秒
year -> 1字节 -> 1901/2155 yyyy -> 年
datetime -> 8字节 -> 1000-01-01 00:00:00/9999-12-31 23:59:59 yyyy-mm-dd hh:mm:ss -> 年/月/日 时/分/秒
datestamp -> 4字节 -> 1970-01-01 00:00:00/2037 yyyymmdd hhmmss -> 时间戳 年/月/日 时/分/秒
复合类型:
enum -> 包含65536个元素,其中一个元素保留,用来保存错误信息 -> enum('值1','值2'...)
set -> 包含64个元素,不能包含2个相同的元素 -> set('值1','值2'...)
索引:
(1).查看索引:
show index from 表名
show keys from 表名
创建索引
create index 索引名称 on 表名(列名);
alter table 表名 add index 索引名称(列名)
唯一索引:
create unique index 索引名称 on 表名(列名)
alter table 表名 add unique 索引名称(列名)
与普通索引相似,但是要求索引列值是唯一不能重复的,可以为空.
主键索引:
create primary key on 表名(列名)
alter table 表名 add primary key(列名)
就是主键列,不允许为空值,一般为Int类型和自增
组合索引:
create index 索引名称 on 表名(列名1,列名2,...)
全文索引:
create fulltext 索引名称 on 表名(列名1,列名2,...)
alter table 表名 add fulltext (列名1,列名2,...)
删除索引:
drop index 索引名称 on 表名
alter table 表名 drop index 索引名称
(注意如果有主外键约束,需要先删除主外键约束)
作者:Trance_b54c
链接:https://www.jianshu.com/p/db720ab0b93e
共同学习,写下你的评论
评论加载中...
作者其他优质文章