初识MySQL
为什么学习MySQL
1.MySQL是开源的数据库
2.MySQL跨平台
3.价格优势
4.功能强大且使用方便
SQL一共分三种:
• 1.数据定义语言(Data Definition Language,DDL)
数据库管理系统提供了数据定义语言定义数据库涉及各种对象,定义数据
的完整性约束、保密限制等约束。
• 2.数据操作语言(Data Manipulation Language,DML)
数据库管理系统提供了数据操作语言实现对数据的操作。基本的数据操作
有两类:检索(查询select)和更新(插入insert、删除delete和更新
update)。
• 3.数据控制语言(Data Control Language,DCL)
数据库管理系统提供了数据控制语言实现对数据库的控制,包含数据完整
性控制、数据安全性控制和数据库的恢复等。
MySQL在CMD命令行下登录
数据库当中的数据类型(常用)
- 数值类型
- int
- float
- double
- 日期类型
- DATE
- DATETIME
- TIMESTAMP
- TIME
- YEAR
- 常用字符串类型
- CHAR
- VARCHAR(M)
MySQL中的约束
- 数据库的完整性——指数据库的准确性和一致性。
- 完整性检查就是指检查数据的准确性和完整性。
MySQL中的6大约束
关键字 | 解释 |
---|---|
NOT NULL | 约束字段的值不能为空 |
DEFAULT | 设置字段的默认值 |
NIQUE KEY(UK) | 约束字段的值是唯一 |
RIMARY KEY(PY) | 约束字段为表的主键(非空且唯一),可以作为该表记录的唯一标识。 |
UTO_INCREMENT | 约束字段的值为自动增长 |
FOREIGN KEY(FK) | 约束字段为表的外键 |
非空:新增数据的时候 这个字段必须新增的同时有值;
默认:没有给定值得时候 数据库默认的值
唯一:唯一是指一个字段中所有的值不能重复
主键:通过主键一定能找到唯一的一条记录(主键包含非空且唯
一这两种约束)
自动增长: 主键数字自动往上递增1;可以使用自动增长的约束
(1.自动增长约束必须是主键而且数据类型是int。2.自动增长的数字不会回退)
在CMD命令行下登录MySQL
- 登录MySQL
h localhost -P 3306 -u root -p
-h表示host,即主机的ip地址,本机登录可以用localhost或127.0.0.1
-P表示port,端口,mysql数据库的默认端口是3306
-u表示user用户名
-p表示password密码(小写)
- 创建数据库
create database if not exists 数据库名 default charset=utf8;
create database if not exists ishop default charset = ut8;
其中,分号表示命令结束标识符。
应当先判断数据库中是否存在此数据库,在创建数据库的时候指定数据库的字符集为utf8
- 删除数据库
drop database 数据库名;
drop database ishop;
- 显示数据库
show databases;
+--------------------+
| Database |
+--------------------+
|information_schema |
|mysql |
|performance_schema |
|sakila |
|sys |
|world |
+--------------------+
6 rows in set (0.00 sec)
系统数据库不要去乱动它
- 显示数据表
use ishop; show tables;
在进行与表有关的操作之前必须要指定数据库。不然会报错
ERROR 1046 (3D000): No database selected
- 建表
CREATE TABLE 表名(
属性名 数据类型 [约束],
属性名 数据类型 [约束],
·······
属性名 数据类型 [约束]
);
用逗号将定义语句隔开,在最后一句不写逗号。
create table commoditytype(
ct_id int(11) primary key,
ct_name varchar[50] not null,
)default charset=utf8;
其中,default charset=utf8;可不写。
有些MySQL中关键字不允许做表名,不然会报错.
create table order(
o_id int(11),
)default charset=utf8;
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order(o_id int(11))' at line 1
这时可以给表名加上``符号(tab键上方)
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 customer (c_id)
)default charset=utf8;
)
- 查看表结构
desc 表名;
desc `order`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
o_id | int(11) | NO | PRI | NULL | auto_increment |
o_cuid | int(11) | NO | MUL | NULL | |
o_cid | int(11) | NO | MUL | NULL | |
o_num | int(11) | NO | NULL |
- 删除表
先删除子表,再删除父表。
drop 表名。
drop `order`;