SQL的分类
DDL(数据定义语言):CREATE \ ALERT \ DROP \ RENAME \ TRUNCATE
DML(数据操作语言):INSERT \ DELETE \ UPDATE \ SELECT(重要)
DCL(数据操作语言):COMMIT \ ROLLBACK \ GRANT \ REVOKE \ SAVEPOINT
SQL规则
- SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
- 每条命令以 ; 或 \g 或 \G 结束
- 关键字不能被缩写也不能分行
- 必须保证所有的()、单引号、双引号是成对结束的必须使用英文状态下的半角输入方式
- 字符串型和日期时间类型的数据可以使用单引号(’ ')表示
- 列的别名,尽量使用双引号(" "),而且不建议省略as
注释
单行注释:-- 注释文字(–后有一个空格)
单行注释:#注释文字
多行注释:/* 注释文字 */
导入现有的数据表、表数据
- 命令行:mysql>
source E:\mysqldb.sql
- 图形化工具:“工具”–》“执行sql脚本”–》“选中sql文件”
最基本的SELECT语句
- 语法:
SELECT 标识选择哪些列
FROM 标识从哪个表中选择 - 选择全部列:
SELECT * FROM table1;
- 选择特定的列:
SELECT table1_id, name FROM table1;
列的别名
- AS(alias别名):
SELECT last_name AS name FROM employees;
- 使用一对"":
SELECT last_name "l_name" FROM employees;
去除重复行
- DISTINCT:
SELECT DISTINCT department_id FROM employees;
空值参与运算
- 所有运算符或列值遇到null值,运算的结果都为null
- 在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长
度是空。而且,在 MySQL 里面,空值是占用空间的。 - 空值参与运算结果还是为空
着重号 ``
- 错误的:
SELECT * FROM ORDER;
- 正确的:
SELECT * FROM
`order`; - 结论:若需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在SQL语句中使用一对``(着重号)引起来。
显示表结构
- 使用DESCRIBE 或 DESC 命令,表示表结构。
- 命令:
DESCRIBE employees; DESC employees;
- Field:表示字段名称。
- Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。
- Null:表示该列是否可以存储NULL值。
- Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
- Default:表示该列是否有默认值,如果有,那么值是多少。
- Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。
过滤数据
- 语法:
SELECT 字段1,字段2 FROM 表名 WHERE 过滤条件;
- 举例:查询90号部门的员工信息
SELECT * FROM employees WHERE department_id=90;
- 举例:查询last_name为‘King’的员工信息
SELECT * FROM employees WHERE last_name='King';