MySQL基础语句【学习笔记】
放在这里,以备后查。 1. 数据库, 数据库服务器, 数据库语言 数据库,是持久性数据的集合,供给定企业的应用程序系统使用,并且由一个数据库管理系统来管理; 数据库服务器,又称数据库管理系统,用来管理数据库(高效地存储、查询、更新数据库,并维护数
放在这里,以备后查。
1. 数据库, 数据库服务器, 数据库语言
数据库,是持久性数据的集合,供给定企业的应用程序系统使用,并且由一个数据库管理系统来管理;
数据库服务器,又称数据库管理系统,用来管理数据库(高效地存储、查询、更新数据库,并维护数据库的完整性状态);
数据库语言,是应用程序用来向数据库服务器发送命令并从中取出所需要数据的特定语言。
2. 系统变量
查询系统变量: SELECT @@系统变量名 , eg. SELECT @@DATADIR
显示所有系统变量: SHOW VARIABLES , SHOW VARIABLES LIKE 'pattern'
设置系统变量: SET @@GLOBAL(LOCAL,SESSION).varname=值 ;
(1) 数据库目录: DATADIR ; (2) 日志: LOG_WARNINGS
(3) 最大用户连接数: MAX_USER_CONNECTIONS ; (4) 版本: VERSION
3. 系统数据库和表
(1) MYSQL.USER : 存放数据库用户登陆信息的表。
(2) INFORMATION_SCHEMA : 存放目录数据的数据库
4. 查看数据库详细信息: HELP SHOW ;SHOW WARNINGS ; SHOW STATUS ;
5. mysql 基本语句:
(1) 创建和查看用户、权限、数据库
创建用户: CREATE USER 'username'@'hostname' IDENTIFIED BY 'password'
创建数据库: CREATE DATABASE database_name ;
授予权限:GRANT 【操作权限,比如,select, update, delete, all】 ON database_name.table_name to 'username'@'host'
查看权限: SHOW GRANTS ; 查看数据库创建定义:SHOW CREATE DATABASE database_name ;
显示当前用户所拥有的所有数据库: show databases ; 选择要使用的数据库: USE database_name ;
显示当前数据中的所有表: show tables ;
(2) 创建表和表操作
创建表: CREATE TABLE table_name ( 属性名1 属性类型1 约束1,... 属性名n 属性类型n 约束n, PRIMARY KEY(属性名i,j,...,p)) ENGINE=引擎名 DEFAULT CHARACTER SET 字符集名 COLLATE 校对名
A. 约束: 是否允许为空值(NOT NULL, 默认允许空值);是否有默认值(DEFAULT 默认值)
B. 主键值: 若不想指定,则用 NULL 代替, 由系统自动生成相应值进行填充
C. 多个列作为主键: 使用逗号隔开的多个列名的列表
D. 引擎类型:InnoDB(可靠事务处理), MyISAM(性能高,支持全文搜索,但不支持事务处理), MEMORY(速度特别快)
E. 指明所使用字符集;可以对单个列进行指定。
查看表创建定义: SHOW CREATE TABLE 表名; 查看表的字段定义: desc table_name ;
重命名表: RENAME TABLE 旧表名 TO 新表名
更改表结构:
ALTER TABLE 表名 (ADD 列名 列名类型) [添加列] | (DROP COLUMN 列名) [删除已有列] |
(ADD CONSTRAINT 约束名 FOREIGN KEY (外键名) REFERENCES 外键所在表名 (外键所在表的相应主键名))[添加外键]
查看表创建定义: SHOW CREATE TABLE 表名; 查看表的字段定义: desc table_name ;
插入数据: INSERT INTO table_name values (数据1, 数据2,... 数据n) ; 插入数据必须与对应属性名的属性类型匹配
删除数据: DELETE FROM table_name WHERE CONDITIONS
更新数据: UPDATE table_name SET 属性名=新值 WHERE CONDITIONS
创建索引: ADD (UNIQUE) INDEX 索引名 ON 表名(属性名)
创建视图: CREATE VIEW 视图名(属性名i, ... 属性名j) AS SELECT 查询语句
(3) 删除操作
删除数据库: DROP DATABASE database_name ;
删除视图: DROP VIEW 视图名
删除表: DROP TABLE 表名
删除索引: DROP INDEX 索引名
6. 查询与过滤数据
表定义[见 mysql 必知必会]:
a. 客户表 customers: cust_id(PK), cust_name, cust_email, others
b. 供货商表: vendors: vend_id(PK), vend_name, vend_country, others
c. 产品表 products: prod_id(PK), vend_id(FK), prod_name, prod_price, prod_desc
d. 客户订单表 orders: order_num(PK), order_date, cust_id(FK)
e. 订单信息表 orderitems: (order_num, order_item)(PK), prod_id(FK), quantity, item_price
(1) 基本查询与过滤:
SELECT [DISTINCT] [OP1] FROM [OP2]
WHERE [COND_CLAUSE]
ORDER BY [ OP3]
LIMIT offset, lineNum
---> OP1: 单个列名或列名表达式,或多个用逗号隔开的列名或列名表达式。
---> OP2:一个或多个表名,用逗号隔开 ;
---> OP3: 一个或多个列名,用逗号隔开;
---> ORDER BY: 对检索结果排序,按照指定列名顺序依次排序;默认升序排列;DESC 指明降序排列;
---> LIMIT offset, lineNum : 从第 offset 行 [下标从零数起] 开始的 lineNum 行; 若行数不足 lineNum, 则检索能够得到的最大行数。
---> COND_CLAUSE: 由一个或多个条件子句组成。
-----> 条件子句结构为 '表名.列名 操作符 值或值集'
-----> 空值查询: IS NULL;
-----> 集合操作符:IN (值的集合) ; 表示仅在括号中给定的值集中取值;
-----> 通配操作符:LIKE [BINARY] 'text' ; text 为通配符文本。
通配符: % 任意多个任意字符 ; _ 任意单个字符
-----> 正则表达式:REGEXP [BINARY] 'regexText' ; regexText 为正则表达式文本
正则表达式: . 匹配任意单个字符 ; OR | 或 ;范围匹配 [0-9], [a-zA-Z] ;
//c , // 转义符,比如匹配字符点号 //. ;
* 零个或多个 ; + 一个或多个 ; {n} 恰好 n 个 ;{n,} N>=n ; {n,m} n
^ 文本开始 ; $ 文本末尾
-----> 可以使用逻辑操作符 AND, OR 将多个条件子句连接起来,形成多重过滤条件。
AND 优先级高于 OR ; 为确保正确的次序,尽量多使用括号来表明优先级;
NOT 可对条件字句的结果取反(F->T, T->F)。
---> 关键字: BINARY 搜索区分大小写 ; DISTINCT 去除重复行
(2) 生成新字段: 上述查询语句中,[OP1] 还可以是任何合法的列名表达式:
A. 由多个列名及字符串拼接而成的字段。 例如 SELECT Concat(列名1, ' *** ', 列名2) FROM 表名.
B. 列名的四则运算。 例如 SELECT (prod_price * quantity) FROM items;
C. 列名的函数。 例如, SELECT Concat(YEAR(order_date), '/', Month(order_date)) FROM orders;
D. AS alias_name: 可以用来给新生成的字段命名。
(3) 分组数据: 可以在WHERE 字句后加入分组子句 ; WHERE 子句在分组前过滤数据, HAVING 子句在分组后过滤数据。
SELECT [OP1] FROM [OP2] [WHERE 子句] GROUP BY 一个或多个列名 HAVING 条件子句
(4) 子查询: 子查询可以用来替代任何有值或值集的地方,尤其是与 in 连用。例如
SELECT cust_name FROM customers
WHERE cust_id IN
( SELECT cust_id FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30') ;
(5) 表联结:
A. 基本的表联结: 主要是使用笛卡尔乘积和 WHERE 子句来进行。 例如,找出所有的产品名称及供货商名称:
SELECT prod_name , vend_name FROM products, vendors Where products.vend_id = vendors.vend_id; 或者
SELECT prod_name , vend_name FROM products INNER JOIN vendors on products.vend_id = vendors.vend_id;
B. 多个表联结: 方法不变,为了避免出错,可以先在文本文件把语句写好,再复制粘贴过去以检验。
例如,找出客户所下订单的信息:
SELECT cust_name, orders.order_num, prod_name, vend_name, quantity, prod_price, item_price*quantity AS order_price
FROM customers, vendors, orders, products, orderitems
WHERE products.prod_id = orderitems.prod_id
AND orderitems.order_num = orders.order_num
AND customers.cust_id = orders.cust_id
AND products.vend_id = vendors.vend_id;
技巧: 分三步进行: a. 在 SELECT 中在多个表中选择想要显示的列名或构造列名表达式;
b. 在 FROM 中列出所有涉及到的表名;
c. 根据表中的外键及WHERE相等子句条件建立联结。
C. 自联结: 在单个 SELECT中 多次引用和联结同一张表,需要使用表别名来消除歧义性。
例如,查询生产产品ID为 'DTNTR' 的供应商生产的其它产品:
SELECT p1.vend_id, p1.prod_id FROM products AS p1, products AS p2
WHERE p1.vend_id = p2.vend_id AND p2.prod_id = 'DTNTR'
D. 外联结:在自然联结的基础上附加没有被关联的行(请自行查阅相关数据库理论书籍)
SQL: SELECT ... FROM 表名1 LEFT[RIGHT] OUTER JOIN 表名2 ON ...
(6) 组合查询: 将多个 SELECT 查询组合成单个查询结果
----> SQL : SELECT ... UNION [ALL] SELECT ... [ORDER BY DESC]
----> UNION ALL: 包含多个查询结果中重复出现的行;默认是不包含重复行的;
----> ORDER BY: 必须在最后一个 SELECT 语句之后,对整个组合查询的结果进行排序。
7. 数据库维护:
(1) 执行SQL文件: /.
(2) 备份和恢复数据表: select * into outfile '/var/lib/mysql/user.bak' from tblname;
load data infile '/var/lib/mysql/user.bak' replace into table tblname ;
(3) 备份和恢复数据库或表:
mysqldump -uxtools -h127.0.0.1 -pxtool dbname tablename > /tmp/tbl.bak.sql

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

Apache 连接数据库需要以下步骤:安装数据库驱动程序。配置 web.xml 文件以创建连接池。创建 JDBC 数据源,指定连接设置。从 Java 代码中使用 JDBC API 访问数据库,包括获取连接、创建语句、绑定参数、执行查询或更新以及处理结果。

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

在 Docker 中启动 MySQL 的过程包含以下步骤:拉取 MySQL 镜像创建并启动容器,设置根用户密码并映射端口验证连接创建数据库和用户授予对数据库的所有权限

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

优雅安装 MySQL 的关键在于添加 MySQL 官方仓库。具体步骤如下:下载 MySQL 官方 GPG 密钥,防止钓鱼攻击。添加 MySQL 仓库文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 仓库缓存:yum update安装 MySQL:yum install mysql-server启动 MySQL 服务:systemctl start mysqld设置开机自启动
