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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
存储 关系型数据库 MySQL
|
7月前
|
存储 关系型数据库 MySQL
javaweb实训第四天上午——MySQL基础(2)
3.2 启动和连接MySQL 3.2.1 启动MySQL服务
101 0
|
3月前
|
SQL 关系型数据库 MySQL
JavaWeb基础1——MySQL
SQL语句、DDL、DML、DQL(分组查询、子查询等)、Navicat、约束、 一对多等数据库设计、多表查询(联合查询/连接查询)、事务、函数
JavaWeb基础1——MySQL
|
6月前
|
Java 关系型数据库 MySQL
JavaWeb基础第一章(MySQL数据库与JDBC)
JavaWeb基础第一章(MySQL数据库与JDBC)
|
6月前
|
SQL 存储 关系型数据库
Javaweb - MySQL 精华篇
Javaweb - MySQL 精华篇
37 0
|
7月前
|
SQL Java 关系型数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
294 0
|
5天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
23 3
|
5天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
28 3
|
5天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
33 2
|
19天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
135 15