目录
一、数据表的基本操作
1.1 创建表
use 数据库名;
create table 表名(
列名 类型,
列名 类型,
~~~~
列名 类型,
);
注意事项:
①在创建表前,需要先选择数据库。
②表名不能和SQL中的关键字冲突。如果非得使用,用反引号将表名引起来。
③使用()将所有列包裹起来,先列名再类型。
1.2 查看数据库中有哪些表
show tables;
1.3 查看指定的表结构
desc 表名;
desc就是describe。
1.4 删除表
drop table 表名;
1.5 删除表和删除数据库的风险比较。
结论:删除表的风险更大。
原因:数据库中表很多,删除一旦执行,程序有可能没有用到被删除的表,程序不会第一时间报错,等发现表被删了,这时数据库就包含了一些错误的数据,就更难处理了。删除库会触发报警程序,程序员可以第一时间发现并处理。因此认为删除表的风险更大。
1.6 举例
二、表的增删改查
学习sql的目的主要是为了学习增删改查,即CRUD,分别对应create、retrieve、update、delete。
2.1 增加语句
--插入一条完整的数据
insert into 表名 values(列1的值,列2的值---列n的值);
--指定列插入
insert into 表名 (列1,列2,列3) values(列1的值,列2的值,列3的值);
--一次性插入多行数据
insert into 表名 values(列1的值,列2的值,列n的值),(列1的值,列2的值,列n的值);
insert into 表名 (列1,列2,列3) values(列1的值,列2的值,列3的值),(列1的值,列2的值,列3的值);
注意事项:
①插入中文得指定字符集
show variables like '%character%'; 查看当前的字符集
建议使用mysql中的utf8mb4,因为mysql中的utf8不完整,有些字符表示不了,如emoji表情。
②列的数目必须和插入的值的数目对应。
③指定列插入的情况下,有的列没有插入,就是默认值。
2.2 查询语句
2.2.1 全列查询
select * from 表名;
注意:
查询结果是一个“临时表”,仅仅是先在内存里存了一下,接下来就打印,打印完了就没了,不会持久化存储。
2.2.2 指定列查询
select 列名,列名 from 表名;
注意:
select不会修改磁盘数据,即不会影响数据库服务器磁盘上的原始数据。
2.2.3 查询字段为表达式
select 列之间的运算表达式 as 别名,列之间的运算表达式 from 表名;
select 列之间的运算表达式,常量 from 表名;
----举例
select name,math+chinese+english as total from score;
select name,math+10 from score;
select name,math,100 from score;
注意:
①表达式是指列之间的运算,如列1+列2,列1-列2等运算,也可以是列+常数。
②也可以给某个列直接指定一个常量,但是不建议这样写。
③ 使用as给运算表达式起别名。
④null运算后结果还是null。
2.2.4 去重查询
select distinct 列名,列名 from 表名;
注意:
如是是一个指定的列,把相同的记录给去重。如果是多个列,当这些列都相同的时候,才能视为一个重复记录。
2.2.5 排序
select 列名,列名(列名表达式) from 表名 order by 列名1 asc/desc,列名2 asc/desc;
注意:
①asc 升序,desc降序。默认升序。
②先根据列名1排序,列名1的值相等,在根据列名2的值排序。
2.2.6 条件查询
select语句+where+条件
运算符 | 说明 |
< <= > >= | 小于、小于等于、大于、大于等于 |
= | 等于(不是赋值),null =null 的结果是null,相等于false |
<=> | 等于,null <=>null的结果是true |
!= <> | 不等于 |
between a and b | 范围匹配,[a,b],注意是闭集 |
in(option,option) | 离散区间,判断是否在这几个选项中存在 |
is null | 判断是否为空值,不建议使用 = null 或者 <=>null |
is not null | |
like | 模糊查询,需要搭配通配符 %:代替任意多个的任意字符 _:代替一个的任意字符 数值也可使用模糊匹配,如'5%' |
AND OR NOT | 逻辑运算符,先算and后算or |
2.2.7 分页查询
limit a offset b ,其中,a是指限制查询结果的最大数目,b是指从第b+1条数据开始查询
当查询结果很多且一下子全部差出来,数据库磁盘IO和数据库客户端到服务器端的网络IO开销会很大。因此,在大部分情况下,不希望一下子就查询出这么多数据,用户也看不过来。通过分页查询可以限制一次查询返回的结果数目。
2.3 修改语句
update 表名 set 列名=值,列名=值 where 条件;
注意事项:
①也可以搭配order by 和limit使用。
②会修改数据库服务器硬盘的数据
③如果没有指定条件,修改就会对所有的记录生效。
④在使用时,一定要反复确认筛选条件。
2.4 删除语句
delete from 表名 where 条件;
注意:
①如果不加条件,就是删除整张表,一条一条的删除。
总结
主要写了表的一些基础的增删改查操作,其中查询操作最为复杂和重要。