文章目录
一、数据库的基础操作
CRUD:create、drop、alter、show
1. 显示所有的仓库(数据库)
show databases;
information-schema:存储服务器管理数据库的信息
mysql:提供一些系统的信息,例如:root用户名及密码
performance_schema:存储服务器性能信息
sys:系统文件
test(有的版本没有):测试库
注:
其它的库是我自己建的
2. 创建数据库
一、普通创建:
① create database + 数据库名;
二、如果该数据库已存在就不创建,反之创建(就算该数据库已经存在也能通过,只是会弹出警告):
② create database if not exists + 数据库名;
③ create database if not exists + 数据库名(数据库名写在反引号里);
注意(命名规范):
不能用关键字(如create、database等)作为数据库名、表名、表中的字段名。如果非要用,就得给它们加上反引号。
后续创建和删除普通的数据库(不以关键字作为数据库名)时给数据库名加上反引号可以使代码看起来更高级。
3. 删除数据库
一、普通删除:
① drop database + 数据库名;
二、如果该数据库已存在就不创建,反之创建(就算该数据库已经存在也能通过,只是会弹出警告):
② drop database if exists + 数据库名;
③ drop database if exists + 数据库名(数据库名写在反引号里);
注:
删除一个不存在的数据库会报1008错误。
4. 查看创建数据库的SQL
看一下当时是怎么创建的这些数据库的:
show create database + 数据库名;
5. 创建数据库时跟随字符编码
① create database if not exists student charset=gbk;
② create database if not exists teacher charset=utf8;
注:
① 常用的字符编码:GBK(中文简体)、utf8(国际通用)
② 乱码和字符编码有关
③ cmd的字符编码时gbk,因此可以显示中文
④ 在windows上学习时字符编码可以选择gbk(因为cmd就是gbk),但是在linux、mac上学习时要选择utf8。实际开发过程中也要选择utf8,因为上传到服务器以后大多数人用的都是utf8。
6. 修改数据库的字符编码
alter database + 数据库名 + charset=改成哪种字符编码
二、表的基础操作
CRUD:create(创建表)和alter+add(增加表内字段)、drop(删除表)和alter+drop(删除表内字段)、alter、show和desc
1. 引入表的思维
仓库 -> 数据库
货架 -> 表
物品放在货架上 -> 数据放在表里
2. 引用数据库
可以理解为指定某仓库发货:
use + 数据库名
3. 查看该数据库下面的表
可以理解为查看某仓库的所有货架:
show tables;
4. 创建表
① 初级
上述name varchar(30)中30是字符宽度或者说最大字符串长度的限制。实际输入的数据是可以超过这个宽度的,那么超过这个宽度会有什么后果?
等后面再来看这个问题。
② 高级(企业在用)
auto_increment:自动增长
primary key:主键(主键不可以为空) 写上了这个意味着该字段的数据是唯一的(每个学生的学号不可能重复,靠它来区分学生)关系型数据库的实现也依靠主键
comment:注释(后面的引号是普通的单引号,不是反引号,用反引号会报1064错误)
not null:意思是该字段不能为空
default:默认值
engine=innodb:数据库引擎是innodb。现在mysql里用的最多的数据库引擎就是innodb
5. 查看表结构
① show create table 表名;(优点:会显示创建这张表时的sql语句)
② desc 表名;(优点:直观、好看)
PRI:primary key缩写
extra:额外的规则(限制)
6. 删除表
① drop table 表名;
② drop table if exists 表名;
③ drop table if exists 表名(表名用反引号引起来);
④ 同时删除多张表:drop table if exists 表名, 表名, 表名;
注:
① 删除不存在的表会报1051错误
② 不可以同时删掉多个数据库
7. 修改表
① 添加字段
① 普通添加:alter table 表名 add 字段名 字段类型;
② 在指定位置添加:
alter table 表名 add 字段名 字段类型 after 字段名(想放在哪个字段后面)
没有before这个语法
③ 直接在开头添加:
alter tabel 表名 add 字段名 字段类型 first;
② 删除字段
alter table 表名 drop 字段名;
③ 更改字段
alter table 表名 change 要改的字段名 改成什么
只修改字段的类型:
alter table 表名 modify 要改的字段名 改成什么类型
④ 修改表名:
alter table 表名 rename to 改成什么名;