菜鸟学Linux 第074篇笔记 Mysql语句

本文涉及的产品
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

菜鸟学Linux 第074篇笔记 Mysql语句




包含总览

1.表创建、修改、删除

2.索引的创建和删除、

3.SELECT语句的简单使用

简单查询

多表查询

子查询

联合查询


SQL语句

数据库

索引

视图

DML



数据库

CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [CHARACTER SET=] [COLLATE=];

CREATE SCHEMA myskydb CHARACTER SET='gbk' COLLATE='gbk_chinese_ci';

SHOW COLLATION;

SHOW CHARACTER SET;

ALTER

DROP {DATABASE|SCHEMA} [IF EXISTS] db_name;

(数据库一般不推荐重新命名)


创建

1.直接定义一张空表

CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_defination);


2.从其它表中查询出数据,并以之创建新表

CREATE TABLE coursetest SELECT * FROM courses WHERE CID <= 2;

(此种创建表,虽然可以复制某表中的数据但是字段的定义属性是不会复制的)


3.以其它表为模板创建一个空表

CREATE TABLE testcourses2 LIKE courses;  (表格式定义相同)




CREATE TABLE

tab1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,Name CHAR(20) NOT NULL, Age TINYINT NOT NULL)

tab2 (id INT NOT NULL AUTO_INCREMENT,Name CHAR(20) NOT NULL, Age TINYINT NOT NULL,PRIMARY KEY(id),UNIQUE KEY(Name),INDEX(age))




键也称作约束,可用作索引,属于特殊索引(有特殊限定): B+Tree

CREATE INDEX

单字段

PRIMARY KEY

UNIQUE KEY

多字段

PRIMARY KEY(col,...)

UNIQUE KEY(col,...)

INDEX(col,...)


SHOW INDEXES tab_name;


修改表

添加、删除、修改字段

ALTER TABLE testcourses2 ADD UNIQUE KEY (Course);

ALTER TABLE coursetest CHANGE course Course CHAR(60) NOT NULL FIRST;

ALTER TABLE coursetest ADD startdate DATE DEFAULT '2017.1.10';


改表名

ALTER TABLE coursetest RENAME TO testcourse;

RENAME TABLE testcourse TO testcourses;


修改表属性

ALTER TABLE course ENGINE=innodb;

ALTER TABLE student ADD FOREIGN KEY (CID) REFERENCES courses (CID);

ALTER TABLE student ADD FOREIGN KEY foreign_cid (CID) REFERENCES courses (CID);

(引用外键)

外键只可在innodb使用


表数据

INSERT INTO student (Name,CID) VALUE ('Chen Jialuo',5);

DELETE FROM student WHERE CID=5;





索引

CREATE INDEX index_name ON tb_name (col_name,...) USING {BTREE|HASH};

col_name [(length)] [ASC | DESC] 索引使用长度

CREATE INDEX name_on_student ON student (Name) USING BTREE;

SHOW INDEXES FROM student\G;

DROP INDEX name_on_student ON student;


(索引只可删除和创建不可修改)




DML:

SELECT

INSERT INTO

DELETE

UPDATE



SELECT select-list FROM tb_name WHERE qualification


查询语句类型:

简单(单表)查询

SELECT [DISTINCT] * FROM tb_name;  [DISTINCT]去除重复

SELECT field1,field2 FROM tb_name; 投影

SELECT field1,field2 FROM tb_name WHERE qualification; 选择

多表查询

子查询



FROM子句:要查询的关系  后可接 表、多个表、其它SELECT语句


WHERE子句: 布尔关系表达式

=, >, >=, <=, <  (数值无需加引号,字符需加上)

逻辑关系 AND, OR, NOT, BETWEEN, LIKE(%,_ REGEXT,RLIKE) IN

SELECT Name FROM students WHERE Age>20 and Gender='M';

SELECT Name,Age,Gender FROM students WHERE Age>20 AND NOT Gender='M';

SELECT Name,Age,Gender FROM students WHERE NOT (Age>20 OR Gender='M');

SELECT Name,Age FROM students WHERE Age>=20 AND Age<=25;

SELECT Name,Age FROM studnets WHERE Age BETWEEN 20 AND 25;

SELECT Name FROM students WHERE Name LIKE 'Y%';

SELECT Name FROM students WHERE Name LIKE 'Y____';

SELECT Name FROM students WHERE Name LIKE '%ing%';

SELECT Name FROM students WHERE Name RLIKE '^[XY].*$';

SELECT Name FROM students WHERE Age IN (18,20,25);

SELECT Name FROM students WHERE CID1 {IS NULL | IS NOT NULL};


ORDER BY field_name {ASC|DESC} 查询出排序

SELECT Name FROM students WHERE CID1 IS NOT NULL ORDER BY Name DESC;


AS 显示查询字段为所指定的名字(别名)

SELECT Name AS Students_name FROM students;


LIMIT [offset] count 限制显示

SELECT Name FROM students LIMIT 2,3;


AVG MAX MIN SUM COUNT 聚合

SELECT AVG(Age) FROM students;


GROUP BY 分组 HAVING=WHERE 后加条件 HAVING只可跟GROUP BY后引用,用来再次过虑结果

SELECT AVG(Age) FROM students GROUP BY Gender; 

SELECT COUNT(CID1) AS Person,CID1 FROM students \换行

  GROUP BY CID1 HAVING Person>=2; 



多表查询

连接;

交叉连接:笛卡尔乘积


自然连接

SELECT * FROM students,courses WHERE students.CID1=courses.CID;

SELECT s.Name,c.Cname FROM students AS s,courses AS c WHERE s.CID1=c.CID;


外连接

左外连接 ... LEFT JOIN  ... ON ...

左外连接,以左表为主与右表进行连接当左表所比较的字段中有值,而右表无值对应,则右表字段中的值会显示为空(NULL)

SELECT s.Name,c.Cname FROM students AS s LEFT JOIN courses AS c ONs.CID1=c.CID;

右外连接 ... RIGHT JOIN ... ON ...

右外连接,以右表为主和左表进行连接当右表所比较的字段中有值,而左表无值对应,则左表字段中的值会显示为空(NULL);

SELECT s.Name,c.Cname FROM students AS s RIGHT JOIN courses AS c ON s.CID1=c.CID;



自连接

同一张表里进行连接,与外连接类似,只不过此连接在同一张表内查询比对;



子查询

即在一条查询语句中嵌套另一个查询语句

比较操作符中使用子查询,子查询所返回的值必须是单值

 SELECT Name FROM students WHERE Age > (SELECT AVG(Age) FROM students);

  (注意所嵌套的查询语句不用写;号结束符)


IN中使用子查询 (子查询可以返回多值)

SELECT Name FROM students WHERE Age IN (SELECT Age From tutors);


FROM 使用子查询

SELECT Name,Age FROM (SELECT Name,Age FROM students) AS t WHERE t.Age>=20;



联合查询

可以将两条查询语句的结果合到一个表上

以第一个表查询的字段为表头,第二个查询的结果追加到表后

UNION

(SELECT Name,Age FROM students) UNION (SELECT Tname,Age FROM tutors);






小作业:

在students表中找到CID2中没有学生选修的课程有哪些

SELECT N.Cname FROM (SELECT s.Name,c.Cname FROM students AS s RIGHT 

JOIN courses AS c ON s.CID1=c.CID) AS N WHERE Name IS NULL;

(此为一行查询语句)

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1890786如需转载请自行联系原作者


Winthcloud

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
8月前
|
关系型数据库 MySQL 索引
MySQL多表练习笔记
链接可行,多表查询语法
187 0
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
797 17
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
483 18
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
670 11
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
339 10
|
8月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
541 158
|
8月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1428 152
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1040 156
|
8月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
588 156