为什么学习MySQL
- MySQL是开源的数据库
- MySQL跨平台
- 功能强大且使用方便
- 目标:快速、健壮、易用
C:\Users\ChenJia>mysql -h localhost -P 3306 -u root -p
Enter password: ****
MySQL默认端口号(Port):3306
MySQL默认的字符集Latin,创建时指定字符集为utf8
1.新建一个数据库
2.使用该数据库
3.使用数据库操作命令进行增删改查
mysql>create database mysql1;
mysql>use mysql1;
mysql>create table commodity;
...
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
TINYINT | 1 | 有符号 -128 无符号0 |
有符号 127 无符号 255 |
SMALLINT | 2 | 有符号 -32768 无符号 0 |
有符号 32767 无符号 65535 |
MEDIUMINT | 3 | 有符号 -8388608 无符号 0 |
有符号 8388607 无符号 1677215 |
INT / INTEGER | 4 | 有符号 -2147483648 无符号 0 |
有符号 2147483647 无符号 4294967295 |
BIGINT | 8 | 有符号 -9223372036854775808 无符号 0 |
有符号 9223372036854775807 无符号 18446744073709551615 |
浮点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
FLOAT | 4 | ±1.175494351E–38 | ±1.175494351E+38 |
DOUBLE | 8 | ±2.2250738585072014E–308 | ±2.2250738585072014E+308 |
定点数类型 | 字节 | 描述 |
---|---|---|
DEC(M,D),DECIMAL(M,D) | M+2 | 最大取值范围与DOUBLE相同,给定DECIMAL的有效取值范围由M和D决定 |
位类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
BIT(M) | 1~8 | BIT(1) | BIT(64) |
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
TIME | 3 | -838:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
字符串类型 | 字节 | 描述及存储需求 |
---|---|---|
CHAR(M) | M | M为0~255之间的数 |
VARCHAR(M) | M为0~65535之间的整数,值的长度+1个字节 | |
TEXT | 允许长度0~65535字节,值得长度+2个字节 | |
TINYTEXT | 允许长度0~255字节,值得长度+2个字节 | |
MEDIUMTEXT | 允许长度0~167772150字节,值得长度+3个字节 | |
LONGTEXT | 允许长度0~4294967295字节,值得长度+4个字节 |
完整性检查就是指检查数据的准确性和完整性;
mysql数据库管理系统提供了一系列机制来检查数据库表中的数
据是否满足规定的条件,以保证数据库表中数据的准确性和一致
性,这种机制就是约束!
关键字 | 解释 |
---|---|
NOT NULL | 约束字段的值不能为空 |
DEFAULT | 设置字段的默认值 |
UNIQUE KEY(UK) | 约束字段的值是唯一 |
PRIMARY KEY(PK) | 约束字段为表的主键,可以作为该表记录的唯一标识 |
AUTO_INCREMENT | 约束字段的值为自动增长 |
FOREIGN KEY(FK) | 约束字段为表的外键 |
非空:在我们新增数据的时候 这个字段必须新增的同时有值;
默认:在你没有给定值得时候 数据库默认的值
唯一:唯一是指一个字段中所有的值不能重复
主键:通过主键一定能找到唯一的一条记录(主键包含非空且唯
一这两种约束)
自动增长: 主键数字自动往上递增1;可以使用自动增长的约束
(1.自动增长约束必须是主键而且数据类型是int。2.自动增长的
数字不会回退)
外键约束:子表的取值范围受父表约束(先有父表数据,再有子表数据)。
##使用命令建库建表
SQL一共分三种:
• 1.数据定义语言(Data Definition Language,DDL)
数据库管理系统提供了数据定义语言定义数据库涉及各种对象,定义数据
的完整性约束、保密限制等约束。
• 2.数据操作语言(Data Manipulation Language,DML)
数据库管理系统提供了数据操作语言实现对数据的操作。基本的数据操作
有两类:检索(查询select)和更新(插入insert、删除delete和更新
update)。
• 3.数据控制语言(Data Control Language,DCL)
数据库管理系统提供了数据控制语言实现对数据库的控制,包含数据完整
性控制、数据安全性控制和数据库的恢复等。
###使用CMD命令行在数据库中建表
所有mysql命令都需要有命令结束标识符,
一般情况下是分号;
新建数据表的语法是:
CREATE TABLE t_name(
属性名 数据类型 [约束],
属性名 数据类型 [约束],
......
属性名 数据类型 [约束]
);
其它操作数据表的命令:
命令 | 说明 |
---|---|
SHOW TABLES; | 查看数据库 |
DESC table_name; | 查看数据表结构 |
DROP table_name; | 删除数据表 |
1.商品种类表-commoditytype
字段名 | 数据类型 | 说明 |
---|---|---|
ct_id | int(11) | 商品种类编号,主键 |
ct_name | varchar(50) | 商品种类名称,非空 |
2.商品表-commodity
字段名 | 数据类型 | 说明 |
---|---|---|
c_id | int(11) | 商品编号,主键 |
c_name | varchar(50) | 商品名称,非空 |
c_madein | varchar(50) | 商品产地,非空 |
c-type | int(11) | 商品种类,外键 |
c_inprice | int(11) | 商品进价,非空 |
c_outprice | int(11) | 商品售价 |
c-num | int(11) | 商品库存,默认100 |
3.客户表-customer
字段名 | 数据类型 | 说明 |
---|---|---|
cu_id | int(11) | 客户编号,主键 |
cu_name | varchar(50) | 客户名字,非空 |
cu_phone | varchar(50) | 客户电话,非空 |
cu_gender | int(11) | 客户性别,默认‘1’ |
cu_address | varchar(100) | 客户地址,非空 |
4.订单表-order
字段名 | 数据类型 | 说明 |
---|---|---|
o_id | int(11) | 订单编号,主键,自增长 |
o_cuid | int(11) | 客户编号,非空 |
o_cid | int(11) | 商品编号,非空 |
o_num | int(11) | 商品数量 |
在创建数据表之前,必须指定数据库
mysql> use ishop1;
1.商品种类表
mysql> create table commoditytype(
-> ct_id int(11) primary key,
-> ct_name varchar(50) not null
-> )default charset=utf8;
2.商品表-commodity
mysql> create table commodity(
-> c_id int(11) primary key,
-> c_name varchar(50) not null,
-> c_madein varchar(50) not null,
-> c_type int(11) not null,
-> c_inprice int(11) not null,
-> c_outprice int(11) ,
-> c_num int(11) default '100',
-> constraint fk_1 foreign key (c_type) references commoditytype (ct_id)
-> )default charset=utf8;
3.客户表-customer
mysql> create table customer(
-> cu_id int(11) primary key,
-> cu_name varchar(50) not null,
-> cu_phone varchar(50) not null,
-> cu_gender int(11) not null default '1',
-> cu_address varchar(100) not null
-> )default charset=utf8;
4.订单表-order
mysql> create table `order`(
-> o_id int(11) primary key auto_increment,
-> o_cuid int(11) not null,
-> o_cid int(11) not null,
-> o_num int(11) not null,
-> constraint fk_2 foreign key (o_cuid) references customer (cu_id),
-> constraint fk_3 foreign key (o_cid) references commodity (c_id)
-> )default charset=utf8;
反引号 “`” 专门用来修饰字段名或表名
外键在最后加入