javaweb实训第四天上午——MySQL基础(3)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 4.3 表的操作4.3.1 创建表语法:

javaweb实训第四天上午——MySQL基础(2)https://developer.aliyun.com/article/1414839

4.3 表的操作

4.3.1 创建表

语法:

先进入某一个数据库: use database_name;

输入建表的SQL命令:{dos 图形化界面写命令} [ 图形化界面创建 ]

CREATE TABLE 表名(

列名1 列的类型 [约束],

列名2 列的类型 [约束],

列名N 列的类型 约束

);

注意:最后一行没有逗号

注意:不能使用MySQL中的关键字作为标识符.

比如:订单表(order),但是ORDER是SQL中排序的关键字.

解决方案:

方式1:使用反引号,把关键字引起来:ORDER.

方式2:开发中,习惯t_表名;

需求:

在jdbcdemo数据库中,创建表student,用来存储学生的编号,名字,年龄.

USE jdbcdemo;
CREATE TABLE `student` (
  `id` bigint(20) PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `age` int(11) SHOW TABLES;          查看数据库中存在哪些表:
  DESC table_name;          查看表结构:
  SHOW CREATE TABLE table_name;   查看表的详细定义(定义表的SQL语句)
  DROP TABLE table_name;      删除表:
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

讨论&思考:

为什么字符串要设定这个长度呢?

因为数据库中针对可变数据的存储需要压缩,而不可变数据的存储不需要压缩

4.3.2 查看表结构和删除表

show  databases;  查看有哪些数据库
use  数据库名称;  切换数据库
SHOW TABLES;          查看数据库中存在哪些表:
DESC table_name;          查看表结构: description 描述
SHOW CREATE TABLE table_name;   查看表的详细定义(定义表的SQL语句)ddl
DROP TABLE table_name;      删除表:

4.3.3 表的约束

表的约束(针对于某一列):

1.非空约束(NK):NOT NULL,不允许某列的内容为空。

2.设置列的默认值:DEFAULT。

3.唯一约束(UK):UNIQUE,在该表中,该列的内容必须唯一。

4.主键约束:PRIMARY KEY, 非空且唯一。

5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。

6.外键约束:FOREIGN KEY,A表中的外键列.A表中的外键列的值必须参照于B表中的某一列(B表主键)。

外键存储的是另外一张表的主键


主键设计: 学生表 姓名 年龄 身份证 电话

1:单列主键,单列作为主键,建议使用。

== 复合主键==,使用多列充当主键,不建议。

2:主键分为两种:

  ① 自然主键:使用有业务含义的列作为主键(不推荐使用);

  ② 代理主键:使用没有业务含义的列作为主键(推荐使用);

5 查询操作-单表查询[常用]

  查询操作就是从指定的数据库中查询出我们想要的数据,可以从单张表查询或者多张表联合查询,下面的查询都是单表查询。

  首先我们准备好一个数据比较多表

5.1 简单查询

5.1.1 简单数据查询

语法:

SELECT {*, column [alias],...}
FROM     table_name; 

说明:

SELECT 选择查询列表

FROM 提供数据源(表、视图或其他的数据源)

如果为 * 和创建表时的顺序一致。匹配所有的字段

可以自己调整顺序,在select后边加上要查询的列名。

需求:

查询所有货品信息

查询所有货品的id,productName,salePrice

5.1.2 消除结果中重复的数据。只对某一列有效

需求: 查询商品的分类编号。

语法: SELECT DISTINCT 列名,…

5.1.3 实现数学运算查询:

对NUMBER型数据可以使用算数操作符创建表达式(+ - * /)

对DATE型数据可以使用部分算数操作符创建表达式 (+ -)

运算符优先级:


乘法和除法的优先级高于加法和减法

同级运算的顺序是从左到右

表达式中使用"括号"可强行改变优先级的运算顺序

需求:

 查询所有货品的id,名称和批发价(批发价=卖价*折扣)

 查询所有货品的id,名称,和各进50个的成本价(成本=costPrice)

 查询所有货品的id,名称,各进50个,并且每个运费1元的成本

5.1.4 设置列名的别名

1、改变列的标题头;

2、用于表示计算结果的含义;

3、作为列的别名;

4、如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加单引号;—>英文单词

需求:查询所有货品的id,名称,各进50个,并且每个运费1元的成本(使用别名)


5.1.5 设置显示格式:

为方便用户浏览查询的结果数据,有时需要设置显示格式,可以使用CONCAT函数来连接字符串。

需求:查询商品的名字和零售价。

格式:xxx商品的零售价为:xxx

SELECT CONCAT(productName,‘商品的零售价为:’,salePrice) AS productSalePrice FROM product;

5.2 过滤查询

5.2.1 比较运算符

2021052811474812.png

语法

SELECT     <selectList> 
FROM    table_name
WHERE   条件1 AND/OR 条件2;

需求:


查询货品零售价为119的所有货品信息.

查询货品名为罗技G9X的所有货品信息.

查询货品名 不为 罗技G9X的所有货品信息.

查询分类编号不等于2的货品信息

查询货品名称,零售价小于等于200的货品

查询id,货品名称,批发价大于350的货品


思考:使用where后面使用别名不行,总结select和where的执行顺序

注意:字符串和日期要用单引号扩起来.要让MySQL查询区分大小写,可以:

SELECT * FROM table_name WHERE BINARY productName='g9x'
SELECT * FROM table_name WHERE BINARY productName='G9X'

javaweb实训第四天上午——MySQL基础(4)https://developer.aliyun.com/article/1414841?spm=a2c6h.13148508.setting.48.6e1a4f0eQzpjQW

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
存储 关系型数据库 MySQL
|
6月前
|
存储 关系型数据库 MySQL
javaweb实训第四天上午——MySQL基础(2)
3.2 启动和连接MySQL 3.2.1 启动MySQL服务
90 0
|
2月前
|
SQL 关系型数据库 MySQL
JavaWeb基础1——MySQL
SQL语句、DDL、DML、DQL(分组查询、子查询等)、Navicat、约束、 一对多等数据库设计、多表查询(联合查询/连接查询)、事务、函数
JavaWeb基础1——MySQL
|
5月前
|
Java 关系型数据库 MySQL
JavaWeb基础第一章(MySQL数据库与JDBC)
JavaWeb基础第一章(MySQL数据库与JDBC)
|
5月前
|
SQL 存储 关系型数据库
Javaweb - MySQL 精华篇
Javaweb - MySQL 精华篇
31 0
|
6月前
|
SQL Java 关系型数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
165 0
|
18天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
78 6
|
16天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
50 3
Mysql(4)—数据库索引
|
18天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
57 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
1天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
15 2