MySQL笔记(一)
MySQL是目前最流行的关系型数据库管理系统之一,它是由MySQL AB公司开发、发布并支持。MySQL是一个跨平台的开源关系型数据库管理系统,被广泛地应用在internet上的中小型网站开发中。相比于其他大型数据库管理系统(如Oracle、DB2、SQL Server等),MySQL规模小、功能有限,但它体积小、速度快、成本低。且它提供的功能对稍微复杂的应用来说已经够用了。
MySQL内部有多个数据库,每个数据库里可以有多个表格,每个表格由行和列组成。所以进入数据库进行相应操作流程如下:1、登入mysql用户 2、进入指定数据库 3、对指定表格操作
数据库命令不分大小写,一般都是用大写,本人为了更好理解命令行的意思,均采用小写。进入MySQL后的每次命令都要在后面加上分号。
用户
- 进入mysql
mysql -u账号 -p密码
- 退出:\q
- 创建用户
create user '账号'@'%' identified by '密码';
- 给新创建的用户赋予权限
grant all on *.* to '账号'@'%';
- 使权限更改后立即生效
flush privileges;
数据库
- 查看当前数据库
select database();
- 展示所有数据库
show databases;
- 创建数据库
create database [if not exists] database_name;
- 删除数据库
drop database [if exists] database_name;
- 进入数据库
use database_name;
表格
- 查看所有表格
show tables;
- 创建表格
create table [if not exists] table_name(字段名 类型[,字段名 类型]);
- 删除表格
drop table table_name;
- 查看表结构
desc table_name;或者show create table table_name;
- 增 没写字段名时,默认给所有字段都增添值。
insert into table_name([字段名,字段名]) value(字段值);#一次性插入一行
insert into table_name([字段名,字段名]) valyes(字段值),[,(字段值),(字段值)];#一次性插入多行
insert into table_name set 字段名 = 字段值,字段名 = 字段值;
- 删 where语句后接一个条件
delete from table_name [where 字段名 = 字段值];
- 改
uodate table_name set 字段名= 字段值 [where 条件];
- 查
select * from table_name;#查看一个表的所有数据
select 字段名 from table_name;#查看一个表的指定字段名的所有值
表约束
- 非空约束(not null):保证在增添数据时,指定的字段名的值非空,否则会报错。下面创建了一个含有两个非空约束字段的表格。
create table table_name(id int not null,name varchar(20) not null);
- 唯一约束(unique key):保证指定字段名下的值都是唯一的,不能有重复。
create table table_name(id int unique key,name varchar(20) not null);
- 主键约束(primary key):保证指定字段名下的值是非空且唯一,它的作用是可以唯一标识一条数据,每张表里只能有一个主键,当表里没有指定主键时,第一个出现非空且唯一的列被当成主键。
create table table_name(id int primary key,name varchar(20) not null);
- 自增长约束(auto_increment):自动编码,一般与主键组合使用,默认情况下起始值为1,每次增量为1,也可自己设定起始值。
create table table_name(id int unique key auto_increment [=起始值],name varchar(20) not null);
- 默认约束(default):给指定字段设定一个默认值,插入数据时,若没有给这个字段赋值,则自动使用默认值。
create table table_name(age int not null default 18);
- 外键约束(foreign key):保持数据的一致性,完整性,实现表格间的三种关系,三种关系在下面会有介绍。
foreign key(本表的字段名) references 其他表的表名(其他表的字段名);
有时一个字段名不能充当主键,但两个字段名联合就可以,这时可以设置一个联合主键。
primary key(字段名,字段名)
表关系
- 一对一:这时用外键方式将两个表的主键关联。
- 一对多:创建一个字段名,用外键方式将之与另一表的主键相关联。
- 多对多:创建一个中间表,用两次外键的方式分别与两张表的主键相关联。
修改表结构
- 增加字段名 : 其中位置有first(表示放在第一列)和after,after后跟字段名,表示放在指定字段名的后一列。
alter table table_name [字段名][类型][位置];
- 删除字段名
alter table table_name drop 字段名;
- 改:改有三种,分别是改数据类型、字段名、表名。
alter table table_name modify 字段名 类型;#改数据类型
alter table table_name change 字段名 新字段名 类型;#改字段名
alter table 原表名 rename 新表名;