赞
踩
>>文章导航
注释:在SQL中可以使用 “-- 空格+描述” 来表示注释说明;
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)。
对表的操作的前提------先选中 database 和创建好 tables !!!!
MySQL 5, 默认字符集是拉丁文,无法直接插入中文的, 需要在创建数据库的时候设定好显示的字符集;
万一忘记加了,最简单的办法就是---删掉数据库重新创建;
语法:
-- 单行数据 + 全列插入
insert into 表名 values (列名,列名......);
-- 多行数据
insert into 表名 (列名,列名......) values (值,值...),(值,值...);
-- 指定列插入
insert into 表名 (列名) values (值);
示例:
- insert into student values (1,`张三`)
- insert into student values (2,`李四`)
SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...
select * from 表名;
-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。
select 列名,列名 from 表名;
-- 指定列的顺序不需要按定义表的顺序来
-- 表达式不包含字段
SELECT id, name, 10 FROM exam_result;
-- 表达式包含一个字段 (+ - 常数)
SELECT id, name, english + 10 FROM exam_result;
-- 表达式包含多个字段 (多个列计算)
SELECT id, name, chinese + math + english FROM exam_result;这种查询无法针对行和行之间的运算,并且查询表达式是啥, 临时表的列名就是啥,可读性差;
select 表达式 as 别名 from 表名;
select distinct 列名 from 表名;
把值相同的列合并成一个;
多个列去重时,需要每个列的值都不同才会合并;
-- ASC 为升序(从小到大)
select 列名 from 表名 order by 列名(列名就是排序的依据);
-- DESC 为降序(从大到小)select 列名 from 表名 order by 列名 desc;
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];
select * from 表 where 条件;
最终结果集是所有满足条件的数据; 执行时会遍历整个表,把每个记录都带入到条件中,看条件是否满足;
and 的优先级高于 or,一个where中,有and 也有or, 会先执行 and 后执行 or;
但是!!真正写代码的时候,还是要多加 () ,显式指定先后顺序;
用到通配符:
% : 匹配任意个任意字符% + 查询内容 : 以查询内容结尾
查询内容 + % : 以查询内容开头
% + 查询内容 + % : 所有包含查询内容的数据
- : 匹配一个字符
查询结果可以为 0 个结果; 可以写任意多个;
从 0 开始,筛选 n 条结果:
select * from 表名 [where ...] [order by ...] limit n;
从 s 开始,筛选 n 条结果:
select * from 表名 [where ...] [order by ...] limit s, n;
从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
select * from 表名 [where ...] [order by ...] limit n offset s;
update 表名 set 列名1=值1, 列名2=值2 [where 条件];
= 是赋值;
[where 条件] 指定行;
update修改的是硬盘数据;
sql 语句是一个整体,要么整体成功,要么整体失败都不执行;
delete from 表名 where 条件/ order by / limit ;
把符合条件的数据删除掉;
(1)在创建的商品表中插入一条数据:名称为“学生书包”、价格18.91、库存101、描述为空;
或者 insert into product(name,price,storage) values('学生书包',18.91,101);
(2) 在图书表中新增—条记录:Java核心技术、作者"Cay S. Horstman”,价格56.43,分类为“计算机技术”;
SQL中,下列涉及空值的操作,不正确的是?
A.name IS NULL
B.name= NULL
C.namee IS NoT NULL
D.NoT(name IS NULL)
A回答错误(正确答案是:B)
在SQL中,NULL是一种特有的数据类型,其等价于没有任何值、是未知数。
NULL与0、空字符串、空格都不同。
SQL默认情况下对WHERE XX!=NULL和WHERE XX=NULL的判断会永远返回0行,却不会提示语法错误。
执行以下 SQL ,下面哪些名字会被查询出来( )
SELECT FirstName FROM StaffList WHERE FirstName LIKE '_A%'
A.Allen
B.CLARK
C.JACKSON
D.David
正确答案是:C,D
题面其实是在问第二个字符是A的是哪个,严格意义上只有C对,但是题面没有说明校验规则。在通常情况下,默认校验规则是utf8_general_ci。在这个状况下,D也对。
A表字段a 类型int中有100条记录,值分别为1至100。如下语句 SELECT a FROM A WHERE a BETWEEN 1 AND 50 OR (a IN (25,70,95) AND a BETWEEN 25 AND 75) 则如下哪个值在这个sql语句返回的结果集中?( )
A.30
B.51
C.75
D.95
要求的逻辑是:[1,50]或((25或70或95)且[25,75]),后半段只有25和70满足,选项没有,前半段1~50都满足,只有A选项的30在这个范围内,那就A了。
注意:
1. 关键字命名时需要用反引号 ` :
2. sql 中的字符串, 可以使用 单引号 ' 或 双引号" 引用起来, 不是 反引号` !!!
3. 很多编程语言都没有"字符"类型, 这种情况一般 ' 和 " 都能表示字符串;4. sql 语句是一个整体, 要么整体执行成功, 要么整体失败都不执行;
如果觉得作者写得还不错的话, 点赞 / 收藏 / 评论 / 转发 四连支持一下吧~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。