#MySQL基本命令
通过mysql -u root -p 来启动mysql
show databases ; //查看当前实例下包含多少个数据库
create database [IF NOT EXISTS] 数据库名 ; // 创建新的数据库
drop database 数据库名 ; //删除指定数据库
use 数据库名 ; //进入指定数据库
show tables ; //进入数据库后查询该数据库下包含多少个数据表
desc 表名 ;// 查看指定数据表的表结构
show create table 表名;//观看建表语言
登陆mysql的命令:
mysql -p 密码 -u 用户名 -h 主机名 --default-character-set=utf8
退出关闭mysql:
quit;
exit;
##数据库对象
对象名称 | 对应关键字 | 描述 |
---|---|---|
表 | table | 表是储存数据的逻辑单元,以行和列的形式存在 |
数据字典 | 系统表,存放数据库相关信息 | |
约束 | constraint | 执行数据校验的规则 |
视图 | view | 一个或多个数据表里数据的逻辑显示 |
索引 | index | 用于提高查询性能,相当于书的目录 |
函数 | function | 用于完成一次特定的计算,具有一个返回值 |
存储过程 | procedure | 用于完成一次完整的业务处理,没有返回值,但可以通过传出参数将多个值传给调用环境 |
触发器 | trigger | 相当于一个事件监听器 |
##查询语句
create table [模式名.]表名
(
#可以有多个列定义
colunmnName1 datatype [default expr],
...
);
例如
create table heros
(
hero_id int auto_increment primary key,
hero_name varchar(255) unique,
mainkind enum ('strength' , 'agility' , 'wit'),
strength int default '10' not null,
agility int default '10' not null,
wit int default '10' not null,
health int default '200',
magic int ,
armor int ,
hero_increasement int,
foreign key(hero_increasement) references heros(hero_id)
);
alter table 表名
add
(
#可以有多个列定义
column_name1 datatype [default expr],
...
);
例如
alter table heros
add
(
move_speed int default '100' not null
);
修改列定义的语法
alter table 表名
modify column_mane datatype [default expr] [first|after col_name];
例如
alter table heros
modify name varchar(255);
删除列的语法
alter table 表名
drop column_name
例如
alter table heros
drop name;
重命名数据表的语法
alter table 表名
rename to 新表名
例如
alter table heros
rename to dota_heros;
改变列名的语法
alter table 表名
change old_column_name new_column_name type [default expr] [first|after col_name]
例如
alter table heros
change blood health int ;
drop table 表名;
例如
drop table heros;
turncate 表名;
用于向指定数据表中插入记录,语法格式如下
insert into table_name[(column [,column ...])]
values(value [,value...]);
例如
insert into heros(hero_name)
value('axe');
insert into heros
value(null ,'nax' ,'agility',14,18,17,560,380,4,300);
mysql可以一次插入多条记录
insert into heros(heros_name)
value('rabick' ),
('pugna');
用于修改数据表的记录,每次可以修改多条,通过使用where子句限定修改哪些记录。
update table_name
set column1 = value[,column2 = value2 ]...
[WHERE condition];
例如
update heros
set strength = 381
where hero_name = 'nax';
用于删除指定数据表的记录,整行删除。可用where语句指定删除多行。
delete from table_name
[where condition];
例如
delete from heros
where hero_name = 'pugna';
##数据库约束
非空约束,指定某列不能为空
alter table heros
add wit int not null;
可以修改表的时候删除非空约束
alter table heros
modify wit int null;
唯一约束,制定某列或者几列组合不能重复
虽然不能出现重复值,但是null可以重复(null≠null)
alter table heros
add hero_name varchar(255) unique;
或者
alter table heros
modify unique(hero_name);
主键约束,制定该列的值可以唯一地标识该条记录
主键约束等于非空约束加唯一约束
每个表中最多允许有一个主键,但是这个主键可以由多个数据列组成
create table heros
(
hero_num int ,
hero_name varchar(255),
primary key (hero_num , hero_name)
);
主键列支持自增长特性,通过关键字auto_increment添加
外键约束,指定该行记录从属于主表中的一条记录(主表中的主键)
create table last_skill
(
skill_name varchar(255) primary key
);
create table rubick
(
steal_skill varchar(255),
foreign key(steal_skill) references last_skill(skill_name)
);
外键约束不仅可以参照其他表,而且可以参照自身
create table heros
(
strength int primary key,
health int ,
foreign key(health) references heros(strength)
);
###check约束
检查,mysql暂不支持
###删除约束
首先在定义约束时建立约束名
如在唯一约束中
create table heros
(
hero_name varchar(255) unique,
constraint name unique(hero_name)
);
mysql中总是将主键约束命名为primary