一、sql分类
- DDL,数据定义语言。主要语句关键字是CREATE、DROP、ALTER等,这些语句定义了不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
- DML,数据操作语言。主要语句关键字是INSERT、DELETE、UPDATE、SELECT等(SELECT是sql语言的基础,最为重要),用于添加、删除、更新和查询数据库记 录,并检查数据完整性。
- DCL,数据控制语言。主要语句关键字是GRAND、REVOKE、COMMIT、ROLLBACK、SAVEPOINT等,用于定义数据库、表、字段、用户的访问权限和 安全级别。
二、登录mysql与数据导入
在命令行登录mysql
mysql -uroot -P3006 -p
然后使用source指令导入
source d:\mysqldb.sql
三、基本SELECT语句
3.0 SELECT...
SELECT 1;#没有任何子句
SELECT 9/2;#没有任何子句
3.1 SELECT...FROM
语法:
SELECT 标识选择哪些列
FROM 标识从哪个表中选择
选择全部列:
SELECT *
FROM department;
3.2 列的别名
SELECT last_name AS name, commission_pct comm
FROM employees;
SELECT last-name "Name", salary*12 "Annual Salary"
FROM employees;
3.3 去掉重复行
默认情况下,查询会返回全部行,包括重复行。
SELECT DISTINCT department_id
FROM employees;
3.4 空值参与运算
所有运算符或列值遇到null值, 运算结果都为null
SELECT employee_id,salary,commission_pct,
12 * salary * (1 + commission_pct) "annual_sal"
FROM employees;
在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长 度是空。而且,在 MySQL 里面,空值是占用空间的。
3.5 着重号
SELECT *FROM `ORDER` ;
我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在 SQL语句中使用一对``(着重号)引起来。
四、显示表结构
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 过滤条件
六、运算符
1.算术运算符
SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5
FROM dual;
在Java中,+的左右两边如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示数 值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(补充:MySQL 中字符串拼接要使用字符串函数CONCAT()实现)
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees;
在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。
#筛选出employee_id是偶数的员工
SELECT * FROM employees
WHERE employee_id MOD 2 = 0;
2.比较运算符
比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果 为假则返回0,其他情况则返回NULL。
安全等于运算符:<=>。为null而生。使用安全等于运算符时,两边的操作数的值都为NULL时,返回的结果为1而不是NULL,其他 返回结果与等于运算符相同。
不等于运算符:<>或!=。如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。如果两边的值有任意一个为NULL, 或两边都为NULL,则结果为NULL。
空运算符(IS NULL或者ISNULL)判断一个值是否为NULL,如果为NULL则返回1,否则返回 0。
非空运算符(IS NOT NULL)判断一个值是否不为NULL,如果不为NULL则返回1,否则返 回0。
最小值运算符(LATEST())。最大值运算符(GREATEST())
BETWEEN AND运算符:
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;
IN运算符。IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。如果给 定的值为NULL,或者IN列表中存在NULL,则结果为NULL。