SQL分类
- DDL(Data Definition Languages、数据定义语言),可以用来创建、删除、修改数据库和数据表的结构。主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等。
- DML(Data Manipulation Language、数据操作语言),增删改查。主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT 等。SELECT是SQL语言的基础,最为重要。
- DCL(Data Control Language、数据控制语言),主要的语句关键字包括 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等。
SQL大小写规范
- MySQL 在 Linux 环境下是大小写敏感的
- MySQL 在 Windows 环境下是大小写不敏感的
如:
#以下两句是一样的,不区分大小写
show databases;
SHOW DATABASES;
SELECT语句
总结:
别名:AS
去除重复项:DISTINCT
着重号:··
显示表结构:DESCRIBE 或 DESC
过滤:WHERE
- 语法
SELECT 标识选择哪些列
FROM 标识从哪个表中选择
- 选择全部列
#查询department中的全部列
SELECT *
FROM departments;
- 选择特定的列
#查询department中的id, location这两列
SELECT id, location
FROM departments;
- 列的别名
#AS可省略
#别名不能有空格,当有空格时一定要加双引号""
SELECT last_name AS name, salary*12 "Annual Salary"
FROM employees;
- 去除重复行
在SELECT语句中使用关键字DISTINCT去除重复行
#将department_id中的重复去除,只留下一个
SELECT DISTINCT department_id
FROM employees;
特别的,当不只一个列时,DISTINCT 是对后面所有列名的组合进行去重:
#这时department_id和salary中的共同重复行去除
SELECT DISTINCT department_id,salary
FROM employees;
- 着重号
SELECT * FROM ORDER;#错误的
SELECT * FROM `ORDER`;#正确的
表中的字段、表名等不能和保留字、数据库系统或常用方法冲突,如果有冲突,则需要加着重号``(在1的左边)引起来。
- 显示表结构
DESCRIBE employees;
或
DESC employees;
mysql> desc employees;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id | int(6) | NO | PRI | 0 | |
| first_name | varchar(20) | YES | | NULL | |
+----------------+-------------+------+-----+---------+-------+
各个字段的含义分别解释如下:
- Field:表示字段名称。
- Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
- Null:表示该列是否可以存储NULL值。
- Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一
部分;MUL表示在列中某个给定值允许出现多次。 - Default:表示该列是否有默认值,如果有,那么值是多少。
- Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。
- 过滤
过滤的关键字是WHERE
SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件
#显示department_id=90的行
SELECT last_name, department_id
FROM employees
WHERE department_id = 90 ;