首页 > 数据库 >03 客户端、创建数据库和表

03 客户端、创建数据库和表

时间:2023-04-21 21:16:07浏览次数:39  
标签:03 -- 数据库 MySQL 和表 SQL NULL 主键 客户端

03 客户端、创建数据库和表

1.掌握建库、表、删库、查询库操作

2.理解表的数据类型

3.掌握建表操作

img

按《刑法》第 286 条和相关司法解释,“删库跑路”等行为,如果造成 10 台以上的系统无法正常运行就可以判刑,如果造成 50 台以上则至少判处 5 年。

一.连接 MySQL

CLI方式:

  1. 启动 CLI 客户端,输入密码。直接使用 root 账号连接 mysql

  2. 在 cmd 中输入:mysql -hlocalhost -uroot -p0000

    1. -uroot : 其中 root 是账号名

    2. -proot:后面的 4个0是登陆密码

    3. -h 连接数据库的Ip(默认为localhost)

      1565920777911

图形客户端

打开图形客户端,双击已经建立好的连接,自动连接。

默认数据库说明

打开连接后,在图形客户端可以直接看到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 语句可以单行或多行书写,以分号结尾。
  1. 可使用空格和缩进来增强语句的可读性。
  2. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
  3. 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条语句

三.数据库设计

image-20230406233224383

你盖一间农村茅草屋可能不怎么需要考虑地基或骨架,因为那种房子能简单住一下就可以。而你要是盖一座国贸CBD或者像迪拜的哈利法塔那样的五星级酒店,这是必须要考虑架构问题的,怎样的受力结构,怎样的地基架构,挖多深,甚至用多少号的钢筋,钢筋之间怎样链接等等问题这是必须要考虑清楚,因为大工程不考虑这些就有可能变危楼。

3.2 数据库设计步骤

1.收集信息 2.标识实体 3.标识每个实体的属性 4.标识实体之间的关系

3.3 设计图

image-20230406234145670

四.DDL库操作

创建数据库:Create Database 库名;

查看:Show Databases; 相当于一个查询

修改编码:Alter Database db名 character set 字符集;

删除数据库:drop database if exists 库名;

查看当前正在使用的数据库:select database();

数据库名:test ,

数据的编码: utf8

4.1图形客户端

1565922725404

1565923065099

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 图形客户端建表

1565924131614

在数据库下面的表选项上,单击鼠标右键,在菜单总选择新建表

1565924388035

创建表最基本的是先建立字段,也称为列。

输入字段的名称,数据类型,长度,是否为空,是否为主键等各种设置后,点击保存按钮,输入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. 只能用于数值列
  2. 配合索引使用
  3. 默认起始值从1开始,每次增长1

图形设置主键自动递增

在表设计窗体中,选中主键,在下面的参数面板中勾选「自动递增」。只有数字类型有这个选项

image-20201104172548508

SQL创建主键自动递增

  1. 创建表的时候就设置为自动递增

    CREATE TABLE `test`.`emp`  (
      `empid` int(5) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`empid`)
    );
    
  2. 在表创建后设置主键为自动递增

    -- 创建表
    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;

扩展:大型项目,系统会用到分库分表哦。

image-20230406231004453

标签:03,--,数据库,MySQL,和表,SQL,NULL,主键,客户端
From: https://blog.51cto.com/teayear/6214155

相关文章

  • Windterm-SSH/Sftp/Shell/Telnet/Serial 客户端
    如果图片查看不了的话,请关注公众号@生活处处有BUGWindTerm是一款开源免费、跨平台SSH/Sftp/Shell/Telnet/Serial客户端,即远程连接工具,还跨平台,支持Windows、Linux和macOS。特征实现了SSHv2、Telnet、RawTcp、Serial、Shell协议。会话认证时支持SSH自动执行。支......
  • Java WebSocket客户端
    https://www.cnblogs.com/SjhCode/p/WebSocketClient.html注意事项:1.@Scheduled(fixedDelay=5000)2.心跳检测3.导入依赖与导包<dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.......
  • 003CCE Turbo配置容器网卡动态预热
    更新时间:2023-04-13GMT+08:00Reference: CCETurbo配置容器网卡动态预热_云容器引擎CCE_最佳实践_网络_华为云(huaweicloud.com)在云原生网络2.0下,每个Pod都会分配(申请并绑定)一张弹性网卡或辅助弹性网卡(统一称为:容器网卡)。由于容器场景下Pod的极速弹性与慢速的容器网卡创建......
  • CentOS 7安装配置SSR客户端
    CentOS7安装配置SSR客户端1.安装配置SSR客户端#wgethttps://raw.githubusercontent.com/biutefo/dabaobei/main/ssr.sh1.1安装SSR客户端由于博客平台对关键字过滤,如下SSR代替如下字符:安装epel扩展源采用Python包管理工pip安装。sudoyum-yinstallepel-release......
  • CentOS网卡无法启动返回'Failed to start LSB:Bring up/down networking.'
    装了一台虚机,配置docker服务的时候发现忘了开CPU虚拟化,关机开启后再登录,发现网卡down了,重启网卡报错。1.journalctl-ex  #查看日志,发现返回错误'FailedtostartLSB:Bringup/downnetworking.';2.vi/var/long/messages  #再查看系统日志,发现有关于NetworkManager的信......
  • golang中通过原始socket实现tcp/udp的服务端和客户端示例
    这些天稍微空点,总结下golang中通过tcp/udp实现服务端客户端的编程实现,毕竟长久以来,如果要截单的http服务,我们直接使用net/http包实现服务,或者使用框架如gin/echo/beego等。以下就直接上代码,稍微看看都能懂起。1.TCP的实现serverpackagemainimport( "bufio" "fmt" "net"......
  • NGINX根据客户端真实ip限制/referer限制
    最近后端服务被攻击,所有接口被疯狂调用,记录一次nginx应对攻击的方案,包括黑白名单、referer限定等。一、NGINX根据用户真实IP限源1、nginx日志打印在nginx.conf配置文件中的http模块打印log_formatmain'$remote_addr-$remote_user[$time_local]"$request"'......
  • 'props' is not defined.
    这个错误表明在组件中,变量props没有被定义。通常情况下,我们需要在组件选项中指定props,并传递它们给setup()函数:'props'isnotdefined.exportdefaultdefineComponent({name:"message-out",props:{image:String,time:Number,text:String,......
  • Java技术_基础技术(0003)_类执行顺序详解+实例(阿里面试题)+详细讲解+流程图
    一、总体原则列出执行顺序的原则(这里本人出了简化,比较明了。可能有漏的,请帮忙补充,但应付该实例足以):  ==父类先于子类;  ==静态先于非静态;  ==变量和块先于构造方法;  ==变量声明先于执行(变量赋值、块执行);(这一点是根据数据在内存中是如何存储的得出的,基本类型、对象、......
  • ABB工业控制器 UNITROL 1020 3BHE030579R0003 UNS0119A-Z,V1 3BHE030579R0001
    W;1  ⑧0③0①⑦77⑤  9ABBUNITROL10203BHE030579R0003 UNS0119A-Z,V13BHE030579R0001 DDC779BE023BHE006805R0002 XO08R21SBP260109R1001 PM866K013BSE050198R1 CI858K013BSE018135R1 PU515A3BSE032401R1 励磁控制系统的主要任务是向发电机......