首页 > 数据库 >Mysql

Mysql

时间:2024-07-05 11:08:20浏览次数:20  
标签:返回 col2 mytable col1 Mysql col SELECT

显示数据库

1 show databases;

  

创建数据库

1 2 CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

  

删除数据库

1 drop 数据库名

  

创建表

1 2 3 4 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8

  

1 2 3 4 5 6 CREATE TABLE test1 ( id INT NOT NULL AUTO_INCREMENT,    # int 类型,不为空,自增 col1 INT NOT NULL DEFAULT 1,       # int 类型,不可为空,默认值为 1,不为空 col2 VARCHAR(45) NULL,             # 变长字符串类型,最长为 45 个字符,可以为空 col3 DATE NULL,                    # 日期类型,可为空 PRIMARY KEY ('id'));               # 设置主键为 id

  

修改表-添加列

1 2 ALTER TABLE mytable ADD col CHAR(20);

  

修改表-删除列

1 2 ALTER TABLE mytable DROP COLUMN col;

  

删除表

1 DROP TABLE mytable;

  

重命名表

1 rename table mytable to mytable2

  

向表中插入数据

1 2 INSERT INTO test(col1, col2) VALUES(val1, val2);

  

向表中插入检索出来的数据

1 2 3 INSERT INTO mytable1(col1, col2) SELECT col1, col2 FROM mytable2;

  

将一个表的内容插入到一个新表

1 2 CREATE TABLE newtable AS SELECT FROM mytable;

  

更新表中数据

1 2 3 UPDATE test SET col2 = 'val'name "test1" WHERE id = 1;

  

删除表中数据

1 2 DELETE FROM mytable WHERE id = 1;

  

TRUNCATE TABLE   清空表,也就是删除所有行

1 TRUNCATE TABLE mytable;

  

DISTINCT, 相同值只会出现一次

1 2 SELECT DISTINCT col1, col2 FROM mytable;

  

LIMIT  限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始(省略时,默认从0开始);第二个参数为返回的总行数。

1 2 3 SELECT * FROM mytable LIMIT 5;

  

1 2 3 SELECT * FROM mytable LIMIT 0, 5;

 

1 2 3 SELECT * FROM mytable LIMIT 2, 3;   --返回第 3 ~ 5 行:

   

GROUP BY  分组

1 2 3 SELECT col, COUNT(*) AS num FROM mytable GROUP BY col;

  

ORDER BY   排序   默认ASC:升序,可省略; DESC:降序

1 2 3 SELECT * FROM mytable ORDER BY col1 DESC, col2 ASC;

  

GROUP BY 自动按分组字段进行排序,ORDER BY 也可以按汇总字段来进行排序

1 2 3 4 SELECT col, COUNT(*) AS num FROM mytable GROUP BY col ORDER BY num;

  

WHERE 过滤行,HAVING 过滤分组,行过滤应当先于分组过滤

1 2 3 4 5 SELECT col, COUNT(*) AS num FROM mytable WHERE col > 2 GROUP BY col HAVING num >= 2;

  

- GROUP BY 子句出现在 WHERE 子句之后,ORDER BY 子句之前;

- 除了汇总字段外,SELECT 语句中的每一字段都必须在 GROUP BY 子句中给出;???
- NULL 的行会单独分为一组;
- 大多数 SQL 实现不支持 GROUP BY 列具有可变长度的数据类型。

 

子查询

子查询中只能返回一个字段的数据

可以将子查询的结果作为 WHRER 语句的过滤条件

1 2 3 4 SELECT * FROM mytable1 WHERE col1 IN (SELECT col2 FROM mytable2);

  

检索客户的订单数量

1 2 3 4 5 6 SELECT cust_name, (SELECT COUNT(*) FROM Orders WHERE Orders.cust_id = Customers.cust_id) AS orders_num FROM Customers ORDER BY cust_name;

  

过滤条件

1 2 3 SELECT * FROM mytable WHERE col IS NULL;

  

LIKE  通配符

%   匹配 任意字符(0个或多个);
_    匹配 任意字符(1个);
[ ]   可以匹配集合内的字符,例如 [ab] 将匹配字符 a 或者 b。字符 ^ 表示不匹配集合内的字符。

1 2 3 SELECT * FROM mytable WHERE col LIKE '[^AB]%';   -- 不以 A 或 B 开头的任意文本

  

AS   取别名

1 2 SELECT col1 * col2 AS alias FROM mytable;

  

CONCAT() 用于连接两个字段。许多数据库会使用空格把一个值填充为列宽,因此连接的结果会出现一些不必要的空格,使用 **TRIM()** 可以去除首尾空格。

1 2 SELECT CONCAT(TRIM(col1), '(', TRIM(col2), ')'AS concat_col FROM mytable;

  

INNER JOIN    多表查询,连接 

1 2 3 4 5 6 7 SELECT DISTINCT tc.module, m.namecount(*) AS count FROM test.uitestcase tc INNER JOIN module m ON tc.script_name LIKE 'Item%' AND m.id = tc.module GROUP BY module ORDER BY tc.module DESC LIMIT 2, 4;

  

函数

| AVG() | 返回某列的平均值 |
| COUNT() | 返回某列的行数 |
| MAX() | 返回某列的最大值 |
| MIN() | 返回某列的最小值 |
| SUM() | 返回某列值之和 |

AVG() 会忽略 NULL 行。

使用 DISTINCT 可以汇总不同的值。

1 2 SELECT AVG(DISTINCT col1) AS avg_col FROM mytable;

  

文本处理

| LEFT() | 左边的字符 |
| RIGHT() | 右边的字符 |
| LOWER() | 转换为小写字符 |
| UPPER() | 转换为大写字符 |
| LTRIM() | 去除左边的空格 |
| RTRIM() | 去除右边的空格 |
| LENGTH() | 长度 |
| SOUNDEX() | 转换为语音值 |

其中, SOUNDEX()   可以将一个字符串转换为描述其语音表示的字母数字模式

1 2 3 SELECT * FROM mytable WHERE SOUNDEX(col1) = SOUNDEX('apple')

  

日期和时间处理

- 日期格式:YYYY-MM-DD
- 时间格式:HH:MM:SS

| ADDDATE() | 增加一个日期(天、周等) |
| ADDTIME() | 增加一个时间(时、分等) |
| CURDATE() | 返回当前日期 |
| CURTIME() | 返回当前时间 |
| DATE() | 返回日期时间的日期部分 |
| DATEDIFF() | 计算两个日期之差 |
| DATE_ADD() | 高度灵活的日期运算函数 |
| DATE_FORMAT() | 返回一个格式化的日期或时间串 |
| DAY() | 返回一个日期的天数部分 |
| DAYOFWEEK() | 对于一个日期,返回对应的星期几 |
| HOUR() | 返回一个时间的小时部分 |
| MINUTE() | 返回一个时间的分钟部分 |
| MONTH() | 返回一个日期的月份部分 |
| NOW() | 返回当前日期和时间 |
| SECOND() | 返回一个时间的秒部分 |
| TIME() | 返回一个日期时间的时间部分 |
| YEAR() | 返回一个日期的年份部分 |

1 SELECT NOW();    --结果: 2019-12-15 20:25:11

  

数值处理

| SIN() | 正弦 |
| COS() | 余弦 |
| TAN() | 正切 |
| ABS() | 绝对值 |
| SQRT() | 平方根 |
| MOD() | 余数 |
| EXP() | 指数 |
| PI() | 圆周率 |
| RAND() | 随机数 |

标签:返回,col2,mytable,col1,Mysql,col,SELECT
From: https://www.cnblogs.com/elaine888/p/18285409

相关文章

  • MySQL弱口令暴力破解
    10-mysql弱口令暴力破解 主机靶机:本地Linux服务器虚拟机+phpstudy攻击主机:本地Kali虚拟机 配置好网络让主机之间相互可以通信 数据库数据库版本:mysql5.5.62 开启远程连接。 1)使用Hydra工具进行暴力破解kali自带的hydra工具是一款非常强大的暴力破解......
  • MySQL网络安全-防syn攻击防暴力攻击
    防syn泛滥攻击、暴力破解攻击 错误:ERROR1129(00000):Host'xxx'isblockedbecauseofmanyconnectionerrors.Unblockwith'mysqladminflush-hosts' 很多资料说,这个是密码输入错误的尝试次数超过max_connect_errors变量,MySQL就会阻塞这个客户端登录。 官方描述:......
  • mysql注入
    mysql注入前置知识mysql语句,php表单数据处理。功能展示以sqli_libs为例子。在Less-1中,sql语句的合成是这样的。我们提交的url为http://localhost/sqli-labs-master/Less-1/?id=1即拼接为$sql="SELECT*FROMusersWHEREid='1'LIMIT0,1"即查询出表users中id为1的数......
  • Mysql主从复制
    Mysql主从复制搭建(Docker)主从复制原理简介通俗的说就是主机将执行过的写操作sql记录在一个文件中,从机连接主机后读取这个文件,然后以同样的顺序将这些sql执行一遍。实际上主从复制是通过binlog和relay-log实现,主机的更新事件(update、insert、delete)会按照顺序写入binlog......
  • 如何理解mysql 的事务隔离级别 repeatable read
    在MySQL中,事务隔离级别定义了事务之间如何相互隔离,以及数据的一致性和并发性如何平衡。REPEATABLEREAD(可重复读)是MySQL中四种事务隔离级别之一,它在保证数据一致性的同时,允许较高的并发性。MySQL的四种事务隔离级别READUNCOMMITTED(未提交读)READCOMMITTED(提交读)REPEATABLER......
  • 安装MySQL
    win1.下载安装包地址:https://dev.mysql.com/downloads/mysql/下载完成,解压2.配置系统变量变量名:MYSQL_HOME变量值:D:\app\mysql-8.4.1-winx643.安装MySQLD:\app\mysql-8.4.1-winx64\bin>mysqld--initialize-insecure--user=mysqlD:\app\mysql-8.4.1-winx64\bin>mysql......
  • mysql 8详细安装过程(windows 11)
        本次在windows11中安装mysql-8.4.1的压缩版。需要注意的是,其中涉及的安装配置比较多,以及需要执行的命令较多,建议大家收藏保存。一、安装环境二、下载mysql    下载地址:MySQL::DownloadMySQLCommunityServer如果没有oracle账号,点击上面下......
  • 查看 mysql 版本号
    mysql--versionmysqlVer8.3.0formacos14.2onarm64(Homebrew)mysql--helpmysqlVer8.3.0formacos14.2onarm64(Homebrew)Copyright(c)2000,2024,Oracleand/oritsaffiliates.OracleisaregisteredtrademarkofOracleCorporationand/or......
  • Mysql安装步骤(centos7)
    MySQL安装步骤(CentOS-7)1、更新yum源rpm-Uvhhttp://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm2、安装MySQLyum-yinstallmysql-community-server--nogpgcheck3、查看MySQL版本号mysql-V4、启动MySQL服务systemctlstartmysqld5、设置开......
  • ElasticSearch 如何增加相当于MySql 中的一列字段
    在Elasticsearch中,增加相当于MySQL中的一列字段的操作被称为“添加字段到索引映射”。与MySQL不同,Elasticsearch是一个文档存储引擎,使用索引和类型来组织数据。每个文档都有其特定的映射(mapping),定义了字段及其数据类型。增加字段到Elasticsearch映射的步骤查看当前映射:首先,查......