文章目录
什么是 MySQL ?
数据库的所有存储、检索、管理和处理实际上都是由数据库软件—DBMS(数据库管理系统)完成的。MySQL 是一种 DBMS ,即它是一种数据库软件。
MySQL 工具
- mysql 命令行实用程序
- MySQL Administrator
MySQL Administrator(MySQL 管理器)是一个图形交互客户机,用来简化 MySQL 服务器的管理。 - MySQL Query Browser
MySQL Query Browser 为一个图形交互客户机,用来编写和执行 MySQL 命令。
使用 Mysql 数据库
net start mysql
连接 Mysql 服务器
当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:mysql -h 主机名 -u 用户名 -p
参数说明:
- -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0。1)该参数可以省略;
- -u : 登录的用户名;
- -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:
mysql -u root -p
Enter password:1183787376
- 输入
exit
或quit
退出登录
查看创建了哪些数据库
show databases;
- 查看一个数据库内表的列表
show tables;
- 查看一个表中的字段
show columns from table;
显示 mysql 数据库是否为自动提交
show variables like '%commit';
关闭 mysql 数据库的自动提交
set autocommit=off;
开启事务
start transaction;
回滚事务
rollback;
提交事务
commit;
创建数据库
- 创建数据库:
CREATE DATABASE 数据库名;
- 删除数据库:
DROP DATABASE 数据库名;
- 选择数据库:
USE 数据库名;
- 创建表
CREATE TABLE customers(
cust_id int NOT NULL auto_increment,
cust_name char(50) not null,
cust_address char(50) null,
cust_city char(50) null,
cust_state char(5) null,
cust_zip char(10) null,
cust_country char(50) null,
cust_contact char(50) null,
cust_email char(255) null,
primary key(cust_id)
)engine=innodb;
show columns from customers;
-
使用 NULL
-
主键
-
使用 auto_increment
-
指定默认值
-
更改表的结构
下列的例子给一个表添加一个列:ALTER TABLE vendors ADD vend_phone char(20);
删除刚刚添加的列:ALTER TABLE vendors DROP COLUMN vend_phone;
ALTER TABLE
常见的用途是定义外键
-
删除表
DROP TABLE 表名
-
重命名表
RENAME TABLE 旧表名 TO 新表名
插入数据
把数据插入表中最简单的方法是使用 INSERT
,它要求指定表名和被插入的数据。
INSERT INTO customers
VALUES(NULL, 'Pep E. LaPew', '100 Main Street',
'Los Angeles', 'CA', '90046', 'USA', NULL, NULL);
更安全的插入方法:
INSERT INTO customers(cust_name, cust_address,
cust_city, cust_state, cust_zip, cust_country,
cust_contact, cust_email)
VALUES('Pep E. LaPew', '100 Main Street', 'Los Angeles',
'CA', '90046', 'USA', NULL, NULL);
这里在表名后列出了列名
检索数据
- 检索单个列
SELECT cust_name FROM customers;
上述语句利用 SELECT 语句从 customers表中检索一个名为cust_name 的列 - 检索多个列
SELECT cust_name, cust_country FROM customers
- 检索所有的列
SELECT * FROM products.customers;
- 检索不同的行
使用 DISTINCT 关键字只是 Mysql 只返回不同的值
SELECT cust_name FROM customers;
结果:
SELECT DISTINCT cust_name FROM customers;
结果:
-
使用全限定表名:
SELECT customers.cust_name FROM products.customers;
这里,customers 是表名,products 是数据库名 -
限制结果
SELECT * FROM products.customers LIMIT 2;
LIMIT 2 指示只返回 2 行结果
外键的创建
- 两张表
分类表
create table category(
cid int primary key auto_increment,
cname varchar(10),
cdesc varchar(31)
);
insert into category values(null,'手机数码','电子产品,黑马生产');
insert into category values(null,'鞋靴箱包','江南皮鞋厂倾情打造');
insert into category values(null,'香烟酒水','黄鹤楼,茅台,二锅头');
insert into category values(null,'酸奶饼干','娃哈哈,蒙牛酸酸乳');
insert into category values(null,'馋嘴零食','瓜子花生,八宝粥,辣条');
商品表
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
pdate timestamp,
cno int
);
insert into product values(null,'小米mix4',998,null,1);
insert into product values(null,'锤子',2888,null,1);
insert into product values(null,'阿迪王',99,null,2);
insert into product values(null,'老村长',88,null,3);
insert into product values(null,'劲酒',35,null,3);
insert into product values(null,'小熊饼干',1,null,4);
insert into product values(null,'卫龙辣条',1,null,5);
insert into product values(null,'旺旺大饼',1,null,5);
- 多表之间的关系如何来维护?
外键约束:foreign key
给 product 表中的 con 列添加一个外键约束【建好表之后做的】
ALERT TABLE product ADD FOREIGN KEY(con) REFREENCES category(cid);