- # 1、查询语句
- # 格式 SELECT 列明 FROM 表名;
- SELECT * FROM student;# *:表示所有列。
- SELECT name,number,score FROM student;# 查询name列和number以及score列
- # 不同列名之间用逗号(,)隔开。
- # 2、注释
- # 第一种:单行注释:#注释文字(MYSQL特有的方式)
- # 第二种:单行注释:-- 注释文字(--后面必须含有一个空格)
- # 第三种:多行注释:/* 注释内容 */
- # 3、基本规则
- # A、SQL语句可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩减
- SELECT name,score
- FROM student;
- # B、每条命令以;或\g或\G结束
- # C、关键字不能被缩写也不能分行写
- # D、标点符号:
- /* a、必须保证所有的()、单引号、双引号是成对结束的
- b、必须使用英文状态下的半角输入方式
- c、字符串型和日期时间类型的数据可以使用单引号('')表示
- d、列的别名,尽量使用双引号(""),而且不建议省略AS
- e、MYSQL在windows环境下对大小写不敏感,就是对大小写区分的不明显
- f、MYSQL在Linux环境下对大小写敏感
- g、数据库名、表名、表别名、字段名、字段别名等都小写(建议遵守)
- h、SQL关键字、函数名、绑定变量等都大写(建议遵守)
- */
- # 4、基本的SELECT语句(查询语句)
- # SELECT 字段1,字段2.... FROM 表名
- # 查询一些运算(DUAL表示伪表)
- SELECT 1+1,3*2 FROM DUAL;
- # 5、列的别名 UTF-8支持中文
- # 1、方式一: SELECT 原列名1 别名1,原列名2 别名2..... FROM 表名
- # 双引号可加可不加,建议加好区分,不能用单引号!
- # 如果别名中间有空格就要加双引号,不然别名是空格前面的
- SELECT number "学号",name "名字",score "成绩" FROM student;
- # 2、方式二:SELECT 原列名1 AS 别名1,原列名2 AS 别名2... FROM 表名;
- SELECT number AS "学号",name AS "名字",score AS "成绩" FROM student;
- SELECT name,score * 7 AS "score week" FROM student;
- # 6、去除重复行--- 用关键词DISTINCT
- SELECT DISTINCT score FROM student;
- # 错误案例:
- #SELECT name,DISTINCT score FROM student;# 会报错
- SELECT DISTINCT name,score FROM student;#对name和score的组合内容不重复输出
- # 7、空值(NULL)参与运算,一定也是空值null
- # null不等同于0和'','null'。null表示未知,0和其他表示是已知,确定的。
- #IFNULL:如果是null空值就当0处理
- SELECT name,IFNULL(score,0) * 7 AS "score_week" FROM student;
- # 8、着重号(``),不是单引号!
- # 如果表名或者列名和关键字重复,要用``括起来区分,如果不重复也可以使用
- # 9、查询常数,用单引号引起来
- SELECT '太科大' AS "学校",name,score,sex FROM student;
- SELECT '666999' AS "号码",name,score FROM student;
- # 10、显示表结构---DESCRIBE或者缩写DESC
- # 显示表中字段的详细信息!
- DESCRIBE student;
- DESC student;
- # 11、过滤数据---WHERE 列名 = 过滤条件;---要求写在FROM后面;
- SELECT * FROM student WHERE score = 100;
- SELECT * FROM student WHERE sex = '女';
- # 1、算术运算符
- # 如:加法:+ 减法:- 乘法:* 除法:/或div 取余:%或mod
- # 如果不满足运算条件(分母为0...),结果为null
- SELECT 100,100 + 2.0,100 - 4,100 * 3.7,100 DIV 25,100 / 0,100 % 3 FROM DUAL;
- # 在SQL中,+没有连接作用,就表示加法运算,会将字符串转换为数值。(隐式转换)
- SELECT 100 + '1' FROM DUAL;# 在Java输出:1001,但在sql输出:101
- SELECT 100 + 'a' FROM DUAL;# 不能转换的字符串看成0来处理,输出:100
- SELECT 100 + NULL FROM DUAL; #空值参与运算结果为:null
- # 取余运算符的运算结果与%号前面的数的正负号有关与后面的正负无关!
- SELECT 12 % 5,12 % -5,-12 % 5,-12 % -5 FROM DUAL;
- # 2、比较运算符
- # 比较运算符用于对表达式左边的操作数和右边的操作数进行比较
- # 比较结果为真则返回1,比较结果为假则返回0,其他情况返回null
- # 运算符:等于:= 安全等于:<=> 不等于:<>或!= 小于:< 小于等于:<= 大于:> 大于等于:>=
- SELECT 1 = 2,1 <=> 2,1 != 2,1 <> 2,1 < 2,1 <= 2,1 > 2,1 >= 2 FROM DUAL;
- # 如果字符串不能隐式转换成数值就把字符串看成0。如果两边都是字符串,用ANSI编码比较
- SELECT 1 = '1',1 = 'A','a' = 'a','a' = 'ab',0 = 'a' FROM DUAL;
- # 只要有null参与运算,结果就是null
- SELECT 1 = NULL,NULL = NULL FROM DUAL;
- # 安全等于<=>:可以对null进行判断,为null而生的比较运算符。其他运算和普通等于没区别
- SELECT 1 <=> '1',1 <=> 'A','a' <=> 'a','a' <=> 'ab',0 <=> 'a' FROM DUAL;
- SELECT 1 <=> NULL,NULL <=> NULL;
- SELECT 1 <> NULL,3 <> 2,'1' <> 1 FROM DUAL;
- # 1、一些关键字
- # is NULL和is not NULL、isnull()
- # IS NULL和<=> NULL一个意思,判断是null
- SELECT name FROM student WHERE name IS NULL;
- # IS NOT NULL判断不是null
- SELECT name FROM student WHERE name IS NOT NULL;
- # ISNULL()判断是null,更像是函数把要判断的放入括号中,只能放一个列名
- SELECT name FROM student WHERE ISNULL(score);
- # WHERE NOT 列名 <=> NULL;不是null的另一种表示
- SELECT name FROM student WHERE NOT name <=> NULL;
- # 取最小:LEAST(字符串1,字符串2,...);字符串就是比较ascll码值吧
- SELECT LEAST(1,2,3,-2,0) FROM DUAL;
- SELECT LEAST('A','b','v') FROM DUAL;
- # 先比第一个字母,谁打输出谁,如果第一个一样,就比第二个,以此类推。。。
- SELECT LEAST('aba','ad') FROM DUAL;
- SELECT LEAST('adc',36,'蔡徐坤') FROM DUAL;
- # 取最大:GREATEST(value1,value2,...);和least同理
- # LENGTH(str);取字符串str的长度
- SELECT LENGTH(name) FROM student;
- # BETWEEN 条件1 AND 条件2:
- # 取条件1和条件2范围内的数据,包括条件1和条件2,同时条件1是下限,条件2是上限,否则报错
- SELECT name,score FROM student WHERE score BETWEEN 90 AND 100;
- # 如果不在条件范围内:NOT BETWEEN 条件1 AND 条件2
- SELECT name,score FROM student WHERE score NOT BETWEEN 90 AND 100;
- # IN()和not IN()
- # IN():列名下的数据是括号里的数据的,有点像集合大括号里面那个
- SELECT name,score FROM student WHERE score IN(91,92);
- # NOT IN():与in相反
- SELECT name,score FROM student WHERE name NOT IN('张三','王五');-- 引用字符串要加单引号!
- # LIKE:模糊查询
- # %表示有n个字符,_表示一个字符
- # 以蔡开头的:
- SELECT name,score FROM student WHERE name LIKE '蔡%';
- # 有四字符的:
- SELECT name,score FROM student WHERE name LIKE '%四%';
- # 第三个字符是坤的:
- SELECT name,score FROM student WHERE name LIKE '__坤';
- # 查询包含a和e的:
- # 方式一:
- # SELECT name,score FROM student WHERE name LIKE '%a%' AND '%e%';
- # 方式二:
- # SELECT name,score FROM student WHERE name LIKE '%a%e%' OR '%e%a%';
- # 如果查询的内容有下划线_或取余%,要用转义字符\_或\%
- # 逻辑运算符:
- # 逻辑非:NOT或! 逻辑与:AND或&& 逻辑或:OR或|| 逻辑异或:XOR
- # 逻辑非:NOT或!,表示取反
- SELECT name,score FROM student WHERE NOT score = 100;
- SELECT name,score FROM student WHERE score != 100;
- # 逻辑与:AND或&&,表示都要满足才行
- SELECT name,score FROM student WHERE score < 93 && score > 90;
- SELECT name,score FROM student WHERE score < 93 AND score > 90;
- # 逻辑或:OR或||,表示满足其中一个即可
- SELECT name,score FROM student WHERE score > 91 OR score < 90;
- SELECT name,score FROM student WHERE score > 91 || score < 90;
- # 逻辑异或:XOR,表示满足一个不满足另一个
- SELECT name,score FROM student WHERE score < 95 XOR name LIKE '%徐%';
- # 注意:OR可以和AND一起使用,但是在使用时要注意两者的优先级,
- # 由于AND的优先级高于OR,因此先对AND两边进行判断在对OR两边的进行判断!
- # 位运算符:一般用于扩容(了解)
- # 按位右移:>> 按位左移:<< 按位与:& 按位或:| 按位异或:^ 按位取反:~
- # 一定范围内:左移一位:相当于*2 右移一位:相当于/2
posted @
2022-05-31 15:47
小k不理解
阅读(
58)
评论()
收藏
举报