
正如所述,数据的所有存储、 检索、管理和处理实际上是由数据库软件——**DBMS(数据库管理系统)**完成的。MySQL是一种DBMS,即它是一种数据库软件。
DBMS可分为两类:一类为基于共享文件系统的DBMS,另一类为基于客户机—服务器的DBMS。MySQL属于C / S一类的DBMS。
数据库:是一个以某种有组织的方式存储的数据集合,是保存有组织的数据的容器。
表:某种特定类型数据的结构化清单,用来存储某种特定类型的数据。
表由行(row)、列组成,其中每个表列具有相应的数据类型(datatype)。
表中每一行可以用一个主键(primary key)来唯一区分表中的每个行。
主键的使用习惯:
- 应该总是定义主键,虽然不是必须的。
- 主键不一定定义再表的一列,可以定义为多列,但是注意不能重复。
- 不更新、不重用主键列的值、不在主键列中使用可能会更改的值。
结构化查询语言(SQL,Structure Query Language):专门用来与数据库通信的语言,并且几乎所有重要的DBMS都支持SQL。
- 尽量给每一条SQL语句加上分号表示结束,虽然不是必要的。
- SQL语句不区分大小写,但是一般把关键字是用大写,列和表使用小写,这样增加可读性。
中文计算机名会导致初始化时出错。
打开 cmd 命令行窗口,使用命令导航到 MySQL 服务器 bin 目录下
cd c:\Program Files\MySQL\MySQL Server 8.0\bin
# 添加到path中成为全局命令
连接到 MySQL 服务器:
mysql -u root -p
mysql -u root -p123456
mysql -h主机名 -u用户名 -p密码
-u root
意味着使用 root
用户连接到 MySQL 服务器;-p
指示 mysql
提示输入密码。-h
。在局域网连接下的电脑,可以考虑使用IP地址访问其他主机上的数据库服务端。mysql服务端打开和关闭,这是建立在把mysql注册为Windows服务
net stop mysql80
net start mysql80
查看相关信息
mysql> status; # 显示当前mysql的version的各种信息
mysql> select version(); # 显示当前mysql的version信息
mysql> show global variables like 'port'; # 查看MySQL端口号
show tables from world; # 查看其他数据库内的内容
select database(); # 查看当前在哪个数据库
desc stuinfo; # 查看表的结构
use database # 跳到其他数据库
创建数据库
# 创建一个名为 samp_db 的数据库,数据库字符编码指定为 gbk
create database samp_db if not exists test;
create database samp_db character set gbk;
创建数据库表
CREATE DATABASE test if not exists test;
use test;
CREATE TABLE student (
id int primary key auto_increment,
name varchar(255) not null,
address varchar(255) not null default 0,
city varchar(255) not null unique
);
INSERT INTO student VALUES (1, '刘一', '郑十家隔壁', '河南');
INSERT INTO student VALUES (2, '陈二', '李四家隔壁', '安徽');
INSERT INTO student VALUES (3, '张三', '白娘子家隔壁', '杭州');
INSERT INTO student VALUES (4, '李四', '许仙家隔壁', '杭州');
INSERT INTO student VALUES (5, '王五', '李四家隔壁', '杭州');
INSERT INTO student VALUES (6, '赵六', '赵六家隔壁', '杭州');
INSERT INTO student VALUES (7, '孙七', '张三家隔壁', '杭州');
INSERT INTO student VALUES (8, '周八', '雷峰塔附近', '杭州');
INSERT INTO student VALUES (9, '吴九', '孙七家隔壁', '杭州');
INSERT INTO student VALUES (10, '郑十', '周八家隔壁', '杭州');
SELECT * FROM student;
修改数据表
alter table customers
add last_name varchar(50) not null after first_name,
modify column first_name varchar(55) defalut '',
drop points
DROP FOREIGN KEY fk_orders_customers,
DROP PRIMARY KEY,
ADD FOREIGN KEY fk_orders_customers (customer_id)
REFERENCES customers (customer_id)
ON UPDATE CASCADE
ON DELETE NO ACTION;
8. 删除数据库表
```sql
DROP TABLE 表名称; -- 用于删除数据库中的现有表。
TRUNCATE TABLE 表名称; -- 用于删除表内的数据,但不删除表本身。
```
```sql
-- 删除现有表 Shippers:
DROP TABLE Shippers;
-- 删除现有表 Shippers 表内的数据,不删除表:
TRUNCATE TABLE Shippers;
```
9. 字符集和排序规则
```sql
show charset
Create/alter table table1
character set latin1
```
- 大部分情况下,不需要改变字符集,部分情况下通过改变字符集减小数据库的大小
- 排序规则大部分情况也不需要改变
10. 存储引擎
```sql
show engines
alter table customers
ENGINE = InnoDB
```