《主键》
某一列要作为主键的条件:
- 任意两行都不具有相同的主键。
- 每行都必须有一个主键(主键列不允许为NULL)
使用主键的好习惯:
1.不更新主键列的值
2.不重用主键列的值
3.不在主键列中使用可能会更改的值。
(例如,如果使用一个 名字作为主键以标识某个供应商,当该供应商合并和更改其 名字时,必须更改这个主键。)
《外键》
《检索》
使用库: use 库名
查看表: show 表名 详细的列信息: desc 表名
检索单个列:select 列名 from 表名;
检索多个列: select 列名,列名… from 表名;
检索所有的列: select * from 表名;
对检索结果进行去重: distinct 关键字。
例如: select distinct id from 表名;
限制结果: 只显示前n行。
例: select * from 表名 limit n; (n是显示的行数,结果将不会大于n行)
检索的是下一个n行
例: select * from 表名 limit n,n; (显示的是从第n行开始,后面的n行)
《排序检索数据》
order by 列名… (依据一个或者多个列对输出进行排序)
例:select * from 表名 order by id;(单个列,根据id进行排序) select * from 表名 order by price,name; (先通过价格对结果排序,再在价格中对名字进行排序)
指定方向排序:
升序 ASC(默认), 降序 DESC;
例: select * from 表名 order by price DESC,name; (该语句的对结果的价格进行降序排序,然后对姓名进行升序的排序(不写则默认升序));
《过滤数据》
1.使用where 子句;
where常用的操作符:= (相等) <> (不相等) != 不相等 < <= > >= between and (在指定的两个值之间) 空值检查 (is null)
《数据过滤》
1.and 操作符,在where 进行过滤数据时可连接多个判断语句,必须同时满足时才进行输出。
例: select * from 表名 where id < 10 and name < ‘张三’;
2. or 操作符,与and不同之处在于,or连接的判断语句,仅仅一个满足时就可以进行输出。
例: select * from 表名 where id < 10 or name < ‘张三’;
注意:
计算的次序:SQL 在处理or操作符之前,会优先处理AND操作符。 可以对or操作符加括号来防止优先级导致的错误。
例: select * from 表名 where (id < 10 or name < ‘张三’) and price >= 10;
3.in 操作符,in用来指定范围,where后括号的条件都可以进行匹配。
例: select * from 表名 where id in (1002,1003);
可以看出in 和 or 的作用有点相似,那为什么还要有in 和 or 两个关键字呢?有一个不就行了吗?
原因:
1. 当选项过于长时,使用in 会更加的清晰。
2. 使用in 时计算的次序更加容易管理。
3. in 操作符一般比or操作符 执行更快。
4. in 的最大优点是可以包含其他的select语句。
4. not 操作符,与in的操作符相反,这里不再详细叙述。
《使用通配符进行过滤》
1.like 操作符
通配符: % %表示任何字符出现 任意次数。
例:select * from 表名 like ‘zhang%’;
_ 下划线的用途与%一样,但下划 线只匹配单个字符而不是多个字符.
例:select * from 表名 like ‘_三’;
通配符的使用注意:
1.不要过度使用通配符。如果其他操作符能达到相同的目的,应该 使用其他操作符。
2.在确实需要使用通配符时,除非绝对有必要,否则不要把它们用 在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起 来是最慢的。
3.仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。
《用正则表达式进行搜索》
关键字 EXGEXP ,正则表达式的作 用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。
不区分大小写,区分的情况下可在后面加入 BINARY。
例:select id from 表名 where id REGEXP ‘1000 | 2000’; | 表示或 . 表示匹配单个字符 [] 匹配范围。
有兴趣的大家可以下来了解。
《创建计算字段》
计算字段并不实际存在于数据库表中。计算字段是运行时在SELECT语句 内创建的。
1.拼接 将值联结到一起构成单个值。
使用Concat() 函数来拼接两个列。
MySQL的不同之处 多数DBMS使用+或||来实现拼接, MySQL则使用Concat()函数来实现。
当把SQL语句转换成 MySQL语句时一定要把这个区别铭记在心。
例:
上图中的目的达到了,但是列名看起来有点突兀,该怎么解决呢?2.MYSQL提供了AS 关键词来给列起一个别名。
别名的其他用途: 别名还有其他用途。常见的用途包括在实际 的表列名包含不符合规定的字符(如空格)时重新命名它,在 原来的名字含混或容易误解时扩充它,等等。
3.执行算数计算
常用的算术操作符有: + - * / 。