文章目录

  • ​​关于SQL的注意事项以及基本查询​​
  • ​​SQL的分类:​​
  • ​​SQL大小写规范:​​
  • ​​导入现有的数据表和表的数据:​​
  • ​​最基本的SELECT语句:​​
  • ​​运算符的使用​​
  • ​​算术运算符​​
  • ​​比较运算符​​
  • ​​逻辑运算符和位运算符​​

关于SQL的注意事项以及基本查询

SQL的分类:

  • DDL:数据定义语言 ​​CREATE ALTER DROP RENAME ​
  • DML:数据操作语言 ​​INSERT DELETE UPDATE SELECT(重中之重)​
  • DCL:数据控制语言 ​​COMMIT ROLLBACK SAVEPOINT GRANT REVOKE​​​​USE dbtest;​​​​SELECT * FROM emp​​​​INSERT INTO emp VALUES(1002,'TOM')​​ 语句写分号,如果只执行一条语句可以不写,执行两条以上要写
    字符串,日期时间类型的变量需要使用一对’’
  • SQL基础查询以及运算符的使用_字符串

  • ​SHOW CREATE TABLE kss_note​
  • SQL基础查询以及运算符的使用_数据库_02


SQL大小写规范:

  • MYSQL在windows环境下是大小写不敏感的(windows本身就对这个不敏感)
  • MYSQL在Linux环境下是大小写敏感的
  • 推荐使用统一规范:数据库名,表名,表别名,字段名,字段别名都小写,SQL关键字,函数名,绑定变量都大写

导入现有的数据表和表的数据:

  • 方式1:source文件的全路径名
    需要命令行才能执行​​​source D:\系统默认\桌面\atguigudb.sql​
  • SQL基础查询以及运算符的使用_SQL_03


  • SQL基础查询以及运算符的使用_mysql_04


  • 方式2:基于具体的图形化界面的工具可以导入数据
    执行sql脚本

最基本的SELECT语句:

​SELECT 1+1,3*2 FROM DUAL;​​ dual:伪表

SQL基础查询以及运算符的使用_数据库_05

  • 表示表中的所有的字段(或列)
    ​SELECT * FROM employees;​​ 列的别名:
    as:全称:alias,可以省略。
    列的别名可以使用一对""引起来,不要使用’‘。
    ​SELECT employee_id emp_id,last_name AS lname,department_id "dept_id" FROM employees;​​ 查询到的东西叫做结果集
  • SQL基础查询以及运算符的使用_sql_06

  • 去掉重复行:
    ​SELECT DISTINCT department_id FROM employees;​
  • SQL基础查询以及运算符的使用_SQL_07

  • 错误的书写:​​SELECT salary,DISTINCT department_id FROM employees;​​ 整体不重复,没有实际意义:​​SELECT DISTINCT department_id,salary FROM employees;​
  • SQL基础查询以及运算符的使用_数据库_08

  • 空值:
    null不等同于0,’',‘null’,空值参与运算结果也为null。
    实际解决方案引入IFNULL,​​select salary "月工资",salary*(1+ifnull(commission_pct,0))*12 "年工资",commission_pct from employees;​
  • SQL基础查询以及运算符的使用_SQL_09

  • 着重号:``
    如果出现了字段名,表名和关键字重名了,那么就需要着重号。
select * from `order`;

SQL基础查询以及运算符的使用_数据库_10


查询常数:

​select 'yykk',123,employee_id,last_name from employees;​

SQL基础查询以及运算符的使用_字符串_11


显示表结构:

显示表中字段的详细信息

​describe employees;​

SQL基础查询以及运算符的使用_数据库_12


过滤条件where:

​SELECT * FROM employees WHERE last_name = 'king';​

windows情况下不区分大小写

SQL基础查询以及运算符的使用_mysql_13

运算符的使用

算术运算符

​+ - * / div % mod​

在java语言中,结果是1001.

在SQL中,+没有连接eider作用就表示加法运算,会将字符串转化为数值(隐式转化)。

​select 100 +'1' from dual;​

SQL基础查询以及运算符的使用_SQL_14


​SELECT 100 +'a' FROM DUAL;​

将’a’当作0来处理

SQL基础查询以及运算符的使用_数据库_15


​SELECT 100 +NULL FROM DUAL;​

SQL基础查询以及运算符的使用_字符串_16


​SELECT 100/2,100/3,100 DIV 0 FROM DUAL;​

除以就默认是浮点型,分母如果为0结果为null

SQL基础查询以及运算符的使用_sql_17


​SELECT 100 DIV 2,100 DIV 3 FROM DUAL;​

SQL基础查询以及运算符的使用_数据库_18


取模运算: % mod

​SELECT 12%3,12%5,12 MOD -5,-12 MOD 5,-12 % 5,-12 % -5 FROM DUAL;​

结果的正负号只于被模数有关。比如-12

SQL基础查询以及运算符的使用_字符串_19

比较运算符

= <=> <> != < <= > >=

​select 1=2,1!=2,1='1',1='a',0='a' from dual;​

'a’转化数值不成功,隐式转化为0

SQL基础查询以及运算符的使用_SQL_20


​SELECT 'a' = 'b','a' = 'a' FROM DUAL;​

两边都是字符串,按照ASCII的比较规则进行比较

SQL基础查询以及运算符的使用_字符串_21


只要有null参与判断结果就为null。

SQL基础查询以及运算符的使用_sql_22


安全等于 <=>,和=的唯一区别就是可以用NULL进行判断。

​select 1 <=> null,null <=> null from dual;​

SQL基础查询以及运算符的使用_SQL_23

SQL基础查询以及运算符的使用_sql_24


SQL基础查询以及运算符的使用_数据库_25


​IS NULL​​等价于​​<=> NULL​

​IS NOT NULL​​就是不为空的情况下

​select least('g','a'),greatest('a','b') from dual;​

SQL基础查询以及运算符的使用_SQL_26


LEAST GRTEAST

​SELECT LEAST(first_name,last_name) FROM employees;​

并不是比较字符串长度,而是逐个比较字符大小直到比较出结果

SQL基础查询以及运算符的使用_数据库_27


​SELECT LEAST(LENGTH(first_name),LENGTH(last_name)) FROM employees;​

SQL基础查询以及运算符的使用_sql_28


BETWEEN …条件1 AND …条件2

条件1和条件2不能交换

​SELECT employee_id,salary FROM employees WHERE salary BETWEEN 6000 AND 8000;​

SQL基础查询以及运算符的使用_SQL_29


不在6000到8000之内

​SELECT employee_id,salary FROM employees WHERE salary NOT BETWEEN 6000 AND 8000;​

in not in

​select last_name,salary,department_id from employees where department_id in(10,20,30);​

SQL基础查询以及运算符的使用_字符串_30


相反not in表示不在括号内离散的数字的情况。

模糊查询 LIKE:

​SELECT last_name FROM employees WHERE last_name LIKE '%a%';​

SQL基础查询以及运算符的使用_mysql_31


_ :代笔一个不确定的字符

​SELECT last_name FROM employees WHERE last_name LIKE '_a%';​

SQL基础查询以及运算符的使用_数据库_32


SQL基础查询以及运算符的使用_mysql_33

使用转义字符

SQL基础查询以及运算符的使用_字符串_34

逻辑运算符和位运算符

SQL基础查询以及运算符的使用_SQL_35


XOR :追求的“异”字,两边一真一假就要

​select last_name,salary,department_id from employees where department_id = 50 XOR SALARY >6000;​

注意AND优先级高于OR

位运算符: & | ^ ~ >> <<

SQL基础查询以及运算符的使用_数据库_36


SQL基础查询以及运算符的使用_sql_37