基本的SQL语句和规则
SQL背景
SQL(Structured Query Language,结构化查询语言)
使用关系模型的数据库应用语言
IBM上世纪70年代开发,后由美国国家标准局ANSI制定SQL标准
其中SQL92和SQL99今天依然遵循
不同数据库厂商的SQL语言标准都有特有内容
SQL分类
语言功能上分类:
DDL(Data Definition Languages、数据定义语言)
定义了不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
CREATE 、 DROP 、 ALTER等
DML(Data Manipulation Language、数据操作语言)
用于添加、删除、更新和查询数据库记 录,并检查数据完整性。
INSERT 、 DELETE 、 UPDATE 、 SELECT等
DCL(Data Control Language、数据控制语言)
定义数据库、表、字段、用户的访问权限和 安全级别。
GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT等
在分类上不同人想法有所不同,不过大致如此
SQL语言规则和规范
SQL一句话可以分行写
每条命令结尾是;或\g或\G结束
字符串和日期时间类型数据使用单引号(’’)表示
列别名使用双引号(“”)
实际上MySQL单双引号不严谨,互换也不会报错,但是不符合SQL标准
MySQL 在 Windows 环境下是大小写不敏感的
MySQL在很多地方大小写不严谨,都不区分大小写,例如查询字符串’abc’和’ABC’一样
MySQL 在 Linux 环境下是大小写敏感的
注释:
单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字 */
命令规则:
数据库、表名不得超过30个字符,变量名限制为29个
中间不要包含空格,不能重名
字段没有和保留字、数据库系统或常用方法冲突,若重复使用着重号(``)括起来
导入外部sql文件
通过命令行
source d:\mysqldb.sql
导入D盘的mysqldb数据库及其表
或者
通过图形化工具自带的功能
基本SELECT语句
SELECT...
例如:SELECT 1+1;
SELECT...FROM
SELECT 标识选择哪些列
FROM 表示从哪个表中选择
SELECT * FROM TableName; 选择全部列(字段)
SELECT name,email FROM TableName; 选择name和email字段
在SELECT语句中可以运算
SELECT salary * 12 "年工资" FROM employees;
将月工资乘12并别名为年工资
字段间也可以运算
列的别名
举例:SELECT last_name AS name, commission_pct comm FROM employees;
写法1:其中last_name是字段名,AS后跟别名
AS -》 alias(别名)
写法2:其中commission_pct是字段名,后跟空格写别名
写法3:跟AS或空格,将别名用双引号(“”)括起来
SELECT employee_id id,email "e mail" FROM employees;
可以在别名中加空格
用双引号括起来别名是标准(用单引号括字符串等)
SELECT常用操作
去除重复行:
查询时去除掉重复结果
SELECT DISTINCT department_id FROM employees;
使用DISTINCT关键字写在SELECT之后
空值参与运算:
若运算时遇到null的行
则运算结果也为null,空值不等于空字符串
着重号:
若数据库名或表名与关键字重复,则用着重号括起来(``)
对常数查询:
显示一列的固定常数,在整合不同数据源时作为标记
SELECT "邮件",email FROM employees;
过滤:
WHERE关键字与运算符搭配
SELECT * FROM employees WHERE last_name='Abel';
查询表中last_name字段为Abel的行
显示表结构
DESCRIBE TableName;
DESC TableName;
Field:表示字段名称
Type:表示字段类型
Null:表示该列是否可以存储NULL值
Key:表示该列是否已编制索引。
PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一 部分;MUL表示在列中某个给定值允许出现多次。
Default:表示该列是否有默认值
Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。