文章目录
一、数据库的基本操作
1.创建数据库
基本语法:
mysql> create database 数据库名称;
特别注意:在MySQL中,当一条SQL语句编写完毕后,一定要使用分号;进行结尾,否则系统认为这条语句还没有结束。
案例:创建数据库的相关案例
创建db1库
create database db1;
创建db1库并指定默认字符集
create database db1 default charset gbk;
如果存在不报错(if not exists)
create database if not exists db1 default character set utf8;
说明:不能创建相同名字的数据库!
扩展:编码格式,常见的gbk(中国的编码格式)与utf8(国际通用编码格式)
latin1 256个字符 (abcd、1234、传统字符)
国内汉字无法通过256个字符进行描述,所以国内开发了自己的编码格式gb2312,升级gbk
中国台湾业开发了一套自己的编码格式big5
很多项目并不仅仅只在本地使用,也可能支持多国语言,标准化组织开发了一套通用编码utf8,后来5.6版本以后又进行了升级utf8mb4
2.查询已创建数据库
基本语法:
显示所有数据库
mysql> show databases;
显示某个数据库的数据结构
mysql> show create database db_itheima;
3.修改数据库信息
mysql> alter database 数据库名称 default charset=新编码格式;
案例:把db_itheima数据库的编码格式更改为gbk
mysql> alter database db_itheima default charset=gbk;
4.删除数据库
基本语法:
mysql> drop database 数据库名称;
案例:删除db_itheima数据库
mysql> drop database db_itheima;
二、数据表的基本操作
1.数据表的创建
基本语法:
mysql> create table 数据表名称(
字段1 字段类型 [字段约束],
字段2 字段类型 [字段约束],
...
);
案例:创建一个admin管理员表,拥有3个字段(编号、用户名称、用户密码)
mysql> create database db_itheima;
mysql> use db_itheima;
mysql> create table tb_admin(
id tinyint,
username varchar(20),
password char(32)
) engine=innodb default charset=utf8;
tinyint :微整型,范围-128 ~ 127,无符号型,则表示0 ~ 255
表示字符串类型可以使用char与varchar,char代表固定长度的字段,varchar代表变化长度的字段。
text :文本类型,一般情况下,用varchar存储不了的字符串信息,都建议使用text文本进行处理。
2.查询已创建数据表
显示所有数据表(当前数据库)
mysql> use 数据库名称;
mysql> show tables;
显示数据表的创建过程(编码格式、字段等信息)
mysql> show create table 数据表名称;
或
mysql> desc 数据表名称;
3.数据表字段添加
基本语法:
mysql> alter table 数据表名称 add 新字段名称 字段类型 first|after 其他字段名称;
选项说明:
first:把新添加字段放在第一位
after 字段名称:把新添加字段放在指定字段的后面
案例:在tb_article文章表中添加一个addtime字段,类型为date(年-月-日)
mysql> alter table tb_article add addtime date after content;
mysql> desc tb_article;
4.修改字段名称或字段类型
修改字段名称与字段类型(也可以只修改名称)
mysql> alter table tb_admin change username user varchar(40);
mysql> desc tb_admin;
仅修改字段的类型
mysql> alter table tb_admin modify user varchar(20);
mysql> desc tb_admin;
5.删除某个字段
mysql> alter table tb_article drop 字段名称;
mysql> desc tb_article;
6.修改数据表引擎(MyISAM或InnoDB)
mysql> alter table tb_article engine=myisam;
mysql> show create table tb_article;
7.修改数据表的编码格式
mysql> alter table tb_admin default charset=gbk;
mysql> show create table tb_admin;
8.修改数据表名称
移动表到另一个库里并重命名
rename table db01.t1 to db02.t11;
或者
alter table db01.t1 rename db02.t11;
只重命名表名不移动
rename table tt1 to tt2;
或者
alter table tt1 rename tt2;
9.删除数据表
mysql> drop table 数据表名称;
三、数据的增删改查
增加:insert
删除:delete
修改:update
查询:select
1.数据的增加操作
基本语法:
mysql> insert into 数据表名称([字段1,字段2,字段3...]) values (字段1的值,字段2的值,字段3的值...);
特别注意:在SQL语句中,除了数字,其他类型的值,都需要使用引号引起来,否则插入时会报错。
第一步:准备一个数据表
mysql> use db_itheima;
mysql> create table tb_user(
id int,
username varchar(20),
age tinyint unsigned,
gender enum('男','女','保密'),
address varchar(255)
) engine=innodb default charset=utf8;
unsigned代表无符号型,只有0到正数。tinyint unsigned无符号型,范围0 ~ 255
enum枚举类型,多选一。只能从给定的值中选择一个
第二步:使用insert语句插入数据
mysql> insert into tb_user values (1,'李向阳',24,'男','广东省广州市');
mysql> insert into tb_user(id,username,age) values (2,'马鹏',23);
2.数据的查询操作
基本语法:
mysql> select * from 数据表名称 [where 查询条件];
mysql> select id,username,age from 数据表名称 [where 查询条件];
案例:查询tb_user表中的所有记录
mysql> select * from tb_user;
案例:查询tb_user表中的id,username以及age字段中对应的数据信息
mysql> select id,username,age from tb_user;
案例:只查询id=2的小伙伴信息
mysql> select * from tb_user where id=2;
案例:查询年龄大于23岁的小伙伴信息
mysql> select * from tb_user where age>23;
3.数据的修改操作
基本语法:
mysql> update 数据表名称 set 字段1=更新后的值,字段2=更新后的值,... where 更新条件;
特别说明:如果在更新数据时,不指定更新条件,则其会把这个数据表的所有记录全部更新一遍。
案例:修改username='马鹏’这条记录,将其性别更新为男,家庭住址更新为广东省深圳市
mysql> update tb_user set gender='男',address='广东省深圳市' where username='马鹏';
案例:今年是2020年,假设到了2021年,现在存储的学员年龄都差1岁,整体进行一次更新
mysql> update tb_user set age=age+1;
4.数据的删除操作
基本语法:
mysql> delete from 数据表名称 [where 删除条件];
案例:删除tb_user表中,id=1的用户信息
mysql> delete from tb_user where id=1;
delete from与truncate清空数据表操作
mysql> delete from 数据表;
或
mysql> truncate 数据表;
delete from与truncate区别在哪里?
- delete:删除数据记录
- 数据操作语言(DML)
- 在事务控制里,DML语句要么commit,要么rollback
- 删除大量记录速度慢,只删除数据不回收高水位线
- 可以带条件删除
- truncate:删除所有数据记录
- 数据定义语言(DDL)
- 不在事务控制里,DDL语句执行前会提交前面所有未提交的事务
- 清里大量数据速度快,回收高水位线(high water mark)
- 不能带条件删除
四、自动增长(水位线)与主键约束
1.自动增长(对某个字段进行自动编号)
mysql> create table tb_user(
id int not null auto_increment,
username varchar(20),
age tinyint unsigned,
gender enum('男','女','保密'),
address varchar(255)
) engine=innodb default charset=utf8;
not null代表非空约束,这个字段只要是插入数据就必须要有值。
2.主键约束(非空、唯一)
create table tb_user(
id int not null auto_increment,
username varchar(20),
age tinyint unsigned,
gender enum('男','女','保密'),
address varchar(255),
primary key(id)
) engine=innodb default charset=utf8;
插入数据库时,id位置直接写NULL即可
mysql> insert into tb_user values (null,'李向阳',24,'男','广东省广州市');
mysql> insert into tb_user values (null,'马鹏',23,'男','广东省深圳市');
mysql> insert into tb_user values (null,'上官婉儿',18,'女','湖南省长沙市');