数据库快速入门
1. 入门命令
— 1. DOS 命令行连接数据库 (运行 cmd)
mysql -uroot -proot
— 2. 展示出数据库服务器中所有的仓库
show databases;
— 3. 创建数据库(新建的仓库默认是存储在data文件夹内部的)
create database tc57;
— 4. 删除数据库
drop database tc57;
— 5. 切换并使用数据库
use tc57;
— 6. 展示出数据库中所有的表名
show tables;
— 7. 退出数据库
quit; exit;
2. 创建表
2.1 建表流程
2.2 数据类型
2.3 建表的入门
选择数据库
use tc57;复制粘贴建表SQL语句
create table t_book(
id int(5),
name varchar(20),
author varchar(20),
price decimal(5,1),
type varchar(20),
stock int(4)
);
— 创建表(学生表 t_student)
— 编号id, 学号sno, 姓名sname, 性别gender, 生日birthday,手机 mobile
create table t_student(
id int(5),
sno char(8),
sname varchar(20),
gender char(1),
birthday date,
mobile char(11)
);2.4 数据库表设计的三范式
2.5 三范式规范建表
create table t_book(
id int(5) primary key, — 给id这一列设置主键(非空且唯一)
name varchar(20),
author varchar(20),
price decimal(5,1),
type varchar(20),
stock int(4)
);
ERROR 1050 (42S01): Table ‘t_book’ already exists 表已经存在了
— 删除表的SQL : drop table if exists 表名;
drop table if exists t_book; — 如果t_book存在的情况下删除
规范的创建流程
drop table if exists t_book;
create table t_book(
id int(5) primary key, — 给id这一列设置主键(非空且唯一)
name varchar(20),
author varchar(20),
price decimal(5,1),
type varchar(20),
stock int(4)
);
主键还有另外一种写法: 企业推荐的写法
drop table if exists t_book;
create table t_book(
id int(5) not null,
name varchar(20),
author varchar(20),
price decimal(5,1),
type varchar(20),
stock int(4),
primary key(id) — 给这张表的id列设置主键
);
以上建表满足3F(三范式的规范)
3. 表的CRUD操作
3.1 插入数据
1) 向表中插入数据的通用SQL语法一:
单行: insert into 表(列1,列2,…) value(值1,值2,….);
说明 : 在数据库中字符串使用单引号来表示
insert into t_book(id,name,author,price,type,stock)
value(1,’西游记’,’吴承恩’,’56.8’,’四大名著’,10);
Query OK, 1 row affected (0.00 sec); 成功插入了一行数据
2) 主键在插入过程中的作用
insert into t_book(id,name,author,price,type,stock)
value(1,’西游记’,’吴承恩’,’56.8’,’四大名著’,10);
数据库中已经存在这个主键为1的数据了,不能插入重复的记录
解决方法 :
insert into t_book(id,name,author,price,type,stock)
value(2,’西游记’,’吴承恩’,’56.8’,’四大名著’,10);
3)非空约束演示
insert into t_book(id,author) value(3,’曹雪芹’);
为了避免不必要的NULL值出现,我们需要给特定的列设置非空约束
4) 唯一约束
假如给一个列添加了唯一约束,则这个列的值不能重复
5) 主键的自动递增
需要给主键列设置自动递增的约束 : auto_increment
create table t_book( id int(5) not null auto_incrementprimary key(id));
这时主键id列会默认从1开始依次递增
一旦给表的主键设置了自动递增后,在插入数据时可以忽略主键列的数据(自动插入值)
insert into t_book(name,author,price,type,stock)
value(‘西游记’,’吴承恩’,’56.8’,’四大名著’,10);
insert into t_book(name,author,price,type,stock)
value(‘红楼梦’,’曹雪芹’,’66.8’,’四大名著’,5);
insert into t_book(name,author,price,type,stock)
value(‘三国演义’,’罗贯中’,’88.8’,’四大名著’,100);
insert into t_book(id,name,author,price,type,stock)
value(4,’小说’,’吴承恩’,’56.8’,’四大名著’,10);
6) 多行插入
多行插入:
insert into 表(列1,列2,…)
values(值1,值2,….),(值1,值2,….),(值1,值2,….);
insert into t_book(name,author,price,type,stock)
values(‘水浒传’,’施耐庵’,’58.8’,’四大名著’,4),
(‘Java从入门到放弃’,’詹姆斯’,’55.8’,’技能类’,1),
(‘Java从入门到入土’,’码神’,’66.8’,’技能类’,1);
3.2 删除数据
3.3 修改数据
3.4 查询数据
查询所有数据 : select from 表
select from t_book; — * 表示这个表的所有列
4. 列的约束限制
我们可以在创建表的时候为表的列设置一个特定条件的约束
- 主键约束 (第二范式:一张表只能设置一个唯一的主键)
- primary key
- 非空约束
- not null
- 唯一约束
- unique
- 外键(后面补充)
- foreign key
越来越标准的建表SQL
drop table if exists t_book;
create table t_book(
id int(5) not null auto_increment, — 设置主键自动递增
name varchar(20) not null, — 非空且唯一的
author varchar(20) not null,
price decimal(5,1) not null,
type varchar(20),
stock int(4),
primary key(id), — 给这张表的id列设置主键
unique(name)
);
5. 表的相关操作