选择语句
选择数据库
可以双击数据库或者输入指令USE(可以大写也可以小写,但是最好是大写sql中的关键字,小写其他内容)
USE sql_store
选中后对应的数据库名称会加粗显示
查询语句SELECT
select 后面写要获取的列项或者使用*表示获取所有列项
然后下面使用from子句表明要查询的表,这里查询customers表
USE sql_store;
SELECT customer_id,first_name
FROM customers
当你有几个语句时,要用;隔开
select可以写在一行,但是如果数据库太过庞大,会使得语句看起来复杂所以我们写成两行
SELECT后面写列的名称,如果这个列存放的是数字,那么你也可以进行计算再显示1出来
当我们想要自定义列的名字可以在后面加关键字AS+自定义名字
如果你的名字想要有空格或者_以外的字符可以把名字用''或""框起来
选择子句
当我们查询时想要得到一份数据的唯一列表(没有重复项)时,我们可以在select后面加上distinct关键字
可以看到有两个vm
WHERE子句
就是筛选语句,后面写出要满足的条件,对数据进行筛选
比如如下例子在所有顾客中找出积分大于3000的顾客
可以用的符号:
(> >= < <= = !=不等于也可以用<>)
当我们要找的日期在某日期之前或者之后时也可以用> <但是要注意我们用引号表述日期值 即使日期不算是字符串
AND OR NOT运算符
AND一般用于多条件
WHERE birth_data >'1990-01-01' AND points > 1000
这种要同时满足两个条件的
而OR就是满足其中一个就可以的意思(当条语句既有OR和AND时AND的优先级更高但是最好还是将AND两边的语句括起来这样方便使用者查看)
WHERE birth_data >'1990-01-01' OR (points > 1000 AND state=VA)
NOT用于否定一个条件
当WHERE后面使用了NOT后条件中的比较运算符都要反过来,且and和or互换
IN 运算符
当我们的选择条件是同属性的不同值时我们用and就显得很麻烦,
所以我们要用IN
WHERE quantity_in_stock IN (49,38,72)
当然如果值是字符串要加''
BETWEEN运算符
用于简写我们取值的范围
比如我们要筛选积分在1000到3000
WHERE points BETWEEN 1000 AND 3000
//或者
WHERE points >=1000 AND points<=3000
(注意日期要用''括起来)
LIKE运算符
这里先举一个例子
WHERE last_name LIKE 'b%'
这是找姓以b开头的人
%表示省略多个字符
找名字中含有b的可以用%b%
_ 表示省略一个字符
REGEXP运算符
正则表达式的缩写用于搜索字符串
比如我们要搜索姓含有'field'的人我们用like是可以完成的
WHERE last_name LIKE '%field%'
这样就可以找到姓里面无论哪里含有filed的人但是我们用REGEXP就可以不用百分号了
WHERE last_name REGEXP 'field'
效果是完全一样的
当然用法也有不同
WHERE last_name REGEXP '^field'
表示last name必须以field开头
WHERE last_name REGEXP 'field$'
表示必须以field结尾
WHERE last_name REGEXP 'field|mac|rose'
可以同时找多个关键词关键词之间用竖线隔开
WHERE last_name REGEXP '^field|mac|rose'
当然也可以和上面的一起结合使用
假如你想搜索姓氏里面有e且e的前面有一些规定字母的人
WHERE last_name REGEXP '[gim]e'
就比如这样可以找到姓氏里有e且e前面是这三个其中一个的符合条件的所有数据
同样可以把括号写在后面找后面字母
当要求是一个范围时可以再[]里写a-h类似
IS NULL运算符
用于查找缺失某信息的数据
SELECT *
FROM orders
WHERE shipped_date IS NULL
比如查找那些没有发货的订单数据
如果要找所有发货了的我们可以加上NOT
SELECT *
FROM orders
WHERE shipped_date IS NOT NULL
ORDER BY子句
使数据进行排序显示
一般一个表都有属于它自己的主键,主键是唯一的,排序会默认按照主键排序,当我们要自定义某方式排序显示时就可以用到这个子句
点可击这个可以对表进行设置
当我们指定要以姓的首字母进行排序时
当然默认的就是升序排序,如果你想改为降序在后面加上DESC就行了
LIMIT子句
限定查询返回的记录
SELECT *
FROM customers
LIMIT 3
这样就限制只显示前三条,如果限制的数大于了所有的数据,则就显示所有数据
SELECT *
FROM customers
LIMIT 6,3
这里第一个数表示跳过前几个数据,后一个数表示显示几条数据,执行结果如下
这里要注意下各子句的顺序