03 客户端、创建数据库和表
1.掌握建库、表、删库、查询库操作
2.理解表的数据类型
3.掌握建表操作
按《刑法》第 286 条和相关司法解释,“删库跑路”等行为,如果造成 10 台以上的系统无法正常运行就可以判刑,如果造成 50 台以上则至少判处 5 年。
一.连接 MySQL
CLI方式:
-
启动 CLI 客户端,输入密码。直接使用 root 账号连接 mysql
-
在 cmd 中输入:mysql -hlocalhost -uroot -p0000
-
-uroot : 其中 root 是账号名
-
-proot:后面的 4个0是登陆密码
-
-h 连接数据库的Ip(默认为localhost)
-
图形客户端
打开图形客户端,双击已经建立好的连接,自动连接。
默认数据库说明
打开连接后,在图形客户端可以直接看到4个数据库,这是 MySQL 服务器安装后的默认数据库:
数据库 | 说明 |
---|---|
infomation_schema | 记录了数据库当中大部分我们需要了结的信息,比如字符集,权限相关,数据库实体对象信息,外检约束,分区,压缩表,表信息,索引信息,参数,优化,锁和事物等 |
mysql | 核心数据库 !主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息,不可以删除 |
performance_schema | 用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况 |
sys | 快速的了解系统的元数据信息 |
在CLI下,使用命令也可以查看所有的数据库:
show databases;
<img src="assets/1565920970375.png" align="left"/>
以上4个数据库默认情况下我们日常是不需要对其进行操作的。也不建议对这4个数据库进行修改。
information_schema -- 该数据库保存了 MySQL 服务器所有数据库的信息。比如数据库的名称、数据库中的表名称、访问权限、数据库中表的数据类型、数据库索引的信息等等
mysql -- MySQL的核心数据库,主要负责存储数据库的用户、权限设置、关键字等 MySQL 自己需要使用的控制和管理信息
performance_schema -- 主要用于收集数据库服务器的性能参数、可用于监控服务器在一个较低级别的运行过程中的资源消耗、资源等待及其他
sys -- 该数据库中的所有数据来自 performance_schema 数据库,目标是把 performance_schema 的复杂度降低,让 DBA 能够更好的阅读这个库中的内容,让 DBA 更快的了解 DB 的运行情况。
关系型数据库的一大特色就是操作都能够通过SQL语句完成,所以SQL的学习是关系型数据库的核心知识点。
二.SQL 语言介绍
1.什么是SQL Structured Query Language:结构化查询语言 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
2.SQL通用语法 1. SQL 语句可以单行或多行书写,以分号结尾。
- 可使用空格和缩进来增强语句的可读性。
- MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
- 3 种注释
- 单行注释: -- 注释内容 或 # 注释内容(mysql 特有)
- 多行注释: /* 注释 */
关系型数据库操作数据需要使用 SQL 语言(结构化查询语言 Structured Query Language)。
SQL 语言主要分为
名称 | 作用 |
---|---|
数据定义语言(Data Definition Language,DDL) | 用于创建、修改和删除数据库对象,如CREATE TABLE、ALTER TABLE、DROP TABLE等。DDL语句会自动提交事务 |
数据操纵语言(Data Manipulation Language,DML | 用于操纵数据库,包括INSERT、UPDATE、DELETE、Select等; |
数据控制语言(Data query Language,DQL) | 用于执行SELECT查询操作 |
数据控制语言(Data Control Language,DCL) | 用于执行授予权限和撤销权限的操作,包括GRANT(授予权限)、REVOKE(撤销权限)两条命令。DCL语句会自动提交事务 |
事务控制语言(Transactional Control Language,TCL) | 用于维护数据的一致性,包括COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)3条语句 |
三.数据库设计
你盖一间农村茅草屋可能不怎么需要考虑地基或骨架,因为那种房子能简单住一下就可以。而你要是盖一座国贸CBD或者像迪拜的哈利法塔那样的五星级酒店,这是必须要考虑架构问题的,怎样的受力结构,怎样的地基架构,挖多深,甚至用多少号的钢筋,钢筋之间怎样链接等等问题这是必须要考虑清楚,因为大工程不考虑这些就有可能变危楼。
3.2 数据库设计步骤
1.收集信息 2.标识实体 3.标识每个实体的属性 4.标识实体之间的关系
3.3 设计图
四.DDL库操作
创建数据库:Create Database 库名;
查看:Show Databases; 相当于一个查询
修改编码:Alter Database db名 character set 字符集;
删除数据库:drop database if exists 库名;
查看当前正在使用的数据库:select database();
数据库名:test ,
数据的编码: utf8
4.1图形客户端
4.2 SQL创建
使用 root 连接数据库后,在 CLI 中输入以下 SQL
CREATE DATABASE `test` CHARACTER SET 'utf8';
4.3 位置
MySQL 数据库默认存放在:C:/ProgramData/MySQL/MySQL Server 8.0/Data 目录下
文件以后缀**.ibd** 结尾。是MySQL数据文件、索引文件,无法直接读取
五.使用数据库
5.1图形客户端
在数据库列表中,双击需要使用的数据库名即可
5.2SQL语句
use `test`;
六.表DDL
表名: emp ,用于存储雇员的信息
创建表:Create
create table 表名 like 表1;
Retrieve表:Show Tables ; 查看表结构desc 表名
修改表:Update
alter table 表名 rename to 新表名
删除表:Delete drop table if exists tb名
6.1 图形客户端建表
在数据库下面的表选项上,单击鼠标右键,在菜单总选择新建表
创建表最基本的是先建立字段,也称为列。
输入字段的名称,数据类型,长度,是否为空,是否为主键等各种设置后,点击保存按钮,输入emp表名就完成操作。
6.2 SQL语句创建表
语法:
CREATE TABLE table_name(列名1 数据类型, 列名2 数据类型,... 列名N 数据类型);
- table_name—是表的名称
- 列名1,列名2 ….-是列的名称,例如id,uname等;
- datatype -是列的数据类型,比如char、date、number等
创建表示例:
CREATE TABLE `test`.`emp`(
`empid` int(5) NOT NULL COMMENT '雇员id',
`ename` varchar(15) NOT NULL COMMENT '雇员姓名',
`age` int(2) NULL COMMENT '年龄,23-65 之间',
`phone` varchar(11) NOT NULL COMMENT '手机号,这里使用了 varchar类型',
`email` varchar(30) NOT NULL COMMENT '公司的电子邮箱',
PRIMARY KEY (`empid`)
);
sql 语句创建的内容和图形客户端保持一致
问题:创建表使用的是哪种 SQL 语言 ?
default-character-set=utf-8 #中文乱码
#服务端
character-set-server=utf8
default-character-set = utf8
6.3 主键
master primary
表中每一行都应该有可以唯一标识自己的一列(或一组列) 。一个顾客表可以使用顾客编号列,而订单表可以使用订单ID,雇员表可以使用雇员ID或雇员社会保险号。我们将主键作为一张表中所有行数据的唯一标识符。
所以主键值不能重复,一个表只能有一个主键,自动禁止为空 。
一个表可以针对多个列设置一个联合主键,这多个列的值,不允许同时重复,例如:学号-课程编号,
01-01, 01-02,01-03,02-01 ,如果出现01-01,则不允许。
创建表 emp 时,
PRIMARY KEY(empid)
就是将 empid 列指定为主键语法大法:primary key (主键列) #设置主键列
京东网商品案例测试:
Create TABLE product(
id int,
pName char(100),
price DECIMAL, -- 这个是数字,范围更大;
weight DECIMAL, -- 毛重
address char(100), -- 产地
HuoHao char(20), -- 货号
gongneng char(40), -- 功能
PRIMARY key(id)
);
# 测试插入数据,值和列名,要一一对应;
#insert 表名(列名,列名2,..n) values(值1,值2,...n);
# 号外:注意了,当其他列没有设置内容的时候,默认是null (这个就是传说中的空)
INSERT product(id,pName) values(1,'惠普打印机1232w');
INSERT product(id,pName) values(2,'奔腾打印机1100');
INSERT product(id,pName) values(1,'惠普打印机1290w');
#由于设置了主键,表中有了一个1号,这时候,再插入1号报错;duplicate 重复列。
# 查询一下
select * from product;
6.4 主键自动递增
主键,在表中唯一存在,不可重复,一般有id、卡号、订单号等。
自动递增也叫自动增长
主键创建后,每次插入数据时都会检查是否有值,如果插入数据时出现重复就需要手动修改数据再次操作,比较麻烦。所以主键还可以使用「自动递增」这个特性,自动累加数字进行填充,前提是数据类型必须是数字。
自动增长的特点:
- 只能用于数值列
- 配合索引使用
- 默认起始值从1开始,每次增长1
图形设置主键自动递增
在表设计窗体中,选中主键,在下面的参数面板中勾选「自动递增」。只有数字类型有这个选项
SQL创建主键自动递增
-
创建表的时候就设置为自动递增
CREATE TABLE `test`.`emp` ( `empid` int(5) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`empid`) );
-
在表创建后设置主键为自动递增
-- 创建表 CREATE TABLE `test`.`emp` ( `empid` int(5) NOT NULL COMMENT '雇员id', `ename` varchar(15) NOT NULL COMMENT '雇员姓名', `age` int(2) NULL COMMENT '年龄,23-65 之间', `phone` varchar(11) NOT NULL COMMENT '手机号,这里使用了 varchar类型', `email` varchar(30) NOT NULL COMMENT '公司的电子邮箱', PRIMARY KEY (`empid`) ); -- 修改主键为自动增长 alter table emp change empid empid int not null AUTO_INCREMENT;
#重置自动递增的初始值
当主键值需要重置或者指定开始数值时,可以通过下面的SQL重置自动递增的初始值
```sql
alter table emp AUTO_INCREMENT = 1;
扩展:大型项目,系统会用到分库分表哦。
标签:03,--,数据库,MySQL,和表,SQL,NULL,主键,客户端 From: https://blog.51cto.com/teayear/6214155