MySQL之基本的SELECT语句

目录

一.SQL 分类

1.DDL(Data Definition Languages、数据定义语言)

2.DML(Data Manipulation Language、数据操作语言)

3.DCL(Data Control Language、数据控制语言)

 二.SQL语言的规则与规范

 三.注 释

 四.命名规则

五.基本的SELECT语句 

5.1SELECT..

5.2SELECT ... FROM

语法:

选择全部列

注意

 选择特定的列

5.3列的别名

5.4去除重复行

在SELECT语句中使用关键字DISTINCT去除重复行

5.5空值参与运算 

 5.6着重号

5.7显示表结构

5.8过滤数据

语法


一.SQL 分类

1.DDLData Definition Languages、数据定义语言)

这些语句定义了不同的数据库、表、视图、索
引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
主要的语句关键字包括 CREATE DROP ALTER 等。

2.DMLData Manipulation Language、数据操作语言)

用于添加、删除、更新和查询数据库记录,并检查数据完整性。
主要的语句关键字包括 INSERT DELETE UPDATE SELECT 等。
SELECT SQL 语言的基础,最为重要。

3.DCLData Control Language、数据控制语言)

用于定义数据库、表、字段、用户的访问权限和安全级别。
主要的语句关键字包括 GRANT REVOKE COMMIT ROLLBACK SAVEPOINT 等。

 二.SQL语言的规则与规范

SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
每条命令以 ; 或 \g 或 \G 结束
关键字不能被缩写也不能分行
关于标点符号
必须保证所有的 () 、单引号、双引号是成对结束的
必须使用英文状态下的半角输入方式
字符串型和日期时间类型的数据可以使用单引号( ' ' )表示
列的别名,尽量使用双引号( " " ),而且不建议省略 as

 三.注 释

单行注释: # 注释文字 (MySQL 特有的方式 )
单行注释: -- 注释文字 (-- 后面必须包含一个空格。 )
多行注释: /* 注释文字 */

 四.命名规则

        数据库、表名不得超过30个字符,变量名限制为29个
        必须只能包含 A–Z, a–z, 0–9, _共63个字符
        数据库名、表名、字段名等对象名中间不要包含空格
        同一个MySQL 软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
        必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用` (着重号)引起来
        保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了
#以下两句是一样的,不区分大小写
show databases;
SHOW DATABASES;
#创建表格
#create table student info(...); #表名错误,因为表名有空格
create table student_info(...);
#其中order使用``飘号,因为order和系统关键字或系统函数名等预定义标识符重名了
CREATE TABLE `order`(
id INT,
lname VARCHAR(20)
);
select id as "编号", `name` as "姓名" from t_stu; #起别名时,as都可以省略
select id as 编号, `name` as 姓名 from t_stu; #如果字段别名中没有空格,那么可以省略""
select id as 编 号, `name` as 姓 名 from t_stu; #错误,如果字段别名中有空格,那么不能省略""

五.基本的SELECT语句 

5.1SELECT..

SELECT 1; #没有任何子句
SELECT 9/2; #没有任何子句

5.2SELECT ... FROM

语法:

SELECT 标识选择哪些列
FROM 标识从哪个表中选择

选择全部列

SELECT *
FROM departments;

注意
        一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’ 。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。 通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。
在生产环境下,不推荐你直接使用 SELECT * 进行查询。

 选择特定的列

SELECT department_id, location_id
FROM departments;

5.3列的别名

        重命名一个列
        便于计算
        紧跟列名,也可以 在列名和别名之间加入关键字 AS ,别名使用双引号 ,以便在别名中包含空格或特殊的字符并区分大小写。
        AS 可以省略
        建议别名简短,见名知意
SELECT last_name AS name, commission_pct comm
FROM employees;

SELECT last_name "Name", salary*12 "Annual Salary"
FROM employees;

5.4去除重复行

默认情况下,查询会返回全部行,包括重复行。
SELECT department_id
FROM employees;

SELECT语句中使用关键字DISTINCT去除重复行

SELECT DISTINCT department_id
FROM employees;

SELECT DISTINCT department_id,salary
FROM employees;
注意:
1. DISTINCT 需要放到所有列名的前面,如写成 SELECT salary, DISTINCT department_id
FROM employees 会报错。
2. DISTINCT 其实是对后面所有列名的组合进行去重,你能看到最后的结果是 74 条,因为这 74 个部门id 不同,都有 salary 这个属性值。如果你想要看都有哪些不同的部门( department_id ),只需要写 DISTINCT department_id 即可,后面不需要再加其他的列名了。

5.5空值参与运算 

所有运算符或列值遇到null值,运算的结果都为null 
SELECT employee_id,salary,commission_pct,
12 * salary * (1 + commission_pct) "annual_sal"
FROM employees;
        在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长
度是空。而且,在 MySQL 里面,空值是占用空间的。

 5.6着重号

需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在
SQL 语句中使用一对 `` (着重号)引起来。

5.7显示表结构

使用DESCRIBE DESC 命令,表示表结构

DESCRIBE employees;
或
DESC employees;

各个字段的含义分别解释如下:
        Field:表示字段名称。
        Type:表示字段类型,这里 barcode goodsname 是文本型的, price 是整数类型的。
        Null:表示该列是否可以存储 NULL 值。
        Key:表示该列是否已编制索引。 PRI 表示该列是表主键的一部分; UNI 表示该列是 UNIQUE 索引的一部分;MUL 表示在列中某个给定值允许出现多次。
        Default:表示该列是否有默认值,如果有,那么值是多少。
        Extra:表示可以获取的与给定列有关的附加信息,例如 AUTO_INCREMENT 等。

5.8过滤数据

语法

SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件

使用WHERE 子句,将不满足条件的行过滤掉

WHERE 子句紧随 FROM 子句
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值