文章目录
修改数据库表
修改表名:
alter table 旧表名 rename as 新表名
增加表的字段
alter table 表名 add 字段名 列属性
如:alter table student age int(11)
修改表的字段
修改约束
alter table 表名 modify 字段名 列属性[];
如:alter table student modify age varchar(11);
字段重命名
alter table 表名 change 旧字段名 新字段名 字段名 列属性[];
alter table student change age age1 varchar(11);
删除表的字段
alter table 表名 drop 字段名;
如:alter table student drop age1;
删除表
drop table if exists 表名;
如:drop table if exists student;
注:
``字段名,使用这个包裹
DML语言(增删改)
添加(insert)
语法:insert into 表名([字段名1,2,3…]) values(‘值1’),(‘2’)…
修改(update)
语法:update 表名 set colnum_name = value,[colnum_name = value,…] where [条件]
如:
update `student` set `name`='张三' where id = 1;
条件:where子句
1. colnum_name是数据库的列,尽量带上``;
2. 条件,筛选条件,如果没有指定,则会修改所有的列
3. value,是一个具体的值,也可以是一个变量
操作符 | 含义 | 范围 | 结果 |
---|---|---|---|
= | 等于 | 5=6 | false |
<>或!= | 不等于 | 5<>6 | true |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | true |
>= | 大于等于 | 5>=6 | false |
<= | 小于等于 | 5<=6 | true |
between…and… | 在某个范围内 | [2,5] | |
and | 和(&&) | 5>1 and 1>2 | false |
or | 或 | 5>1 and 1>2 | true |
删除(delete)
语法:delete from 表名 [where 条件]
eg:
delete from `student` where id = 2;
truncate:完全清空一个数据库表,表的结构和索引约束不会变
语法:truncate table 表名;
delete和truncate区别:
- 相同点:都能删除数据,都不会删除数据表结构
- truncate:重新设置,自增归零,不会影响事务;
- delete不会影响自增(删除表后自增会接着,而不会归零)
delete删除问题,重启数据库
- INNDOB 自增列会归零(存在内存中,断电即失)
- MyISAM 继续从上一个自增量开始(存在文件中,不会丢失)
DQL数据查询语言
- 所有的查询操作都使用它(select),数据库最核心的语言
select语法:顺序不能调换
all:默认查询所有
distinct:去重
select [ all | distinct]
{ * | table.* | [table.field1[as alias1][,table.field2][,...]]}
from table_name [as table_alias]
[left | right | inner join table_name2]--联合查询
[where...]--指定结果需满足的条件
[group by...]--指定结果按照哪几个字段来分组
[having...]--过滤分组的记录必须满足的次要条件,条件和where是一样的,只是位置不同
[order by...]--指定查询记录按一个或多个条件排序
[limit {[offset,] row_count | row_countOFFSET offset}];--指定查询的记录从哪条至哪条
[]:可选,{}必选
1:查询表中所有信息
select *from 表名;
2:查询指定字段
select `字段名1`,`字段名2`...... from 表名;
3:给字段名,和表取一个别名再输出查询结果
select `字段名1` as 别名 from 表名 as 别名;
4:函数,连接两个字段:concat(a,b)
eg:
select concat('姓名:',studentName) as 新名字 from student;
5:去重关键字:distinct,去掉重复数据
select distinct `字段名` from 表名;
6:查询系统的版本
select version();
7:用来计算
eg:
select 100*3-79 as 计算结果(自己起的名字);
where条件子句
作用:检索数据中符合条件的值;
++搜索的条件由一个或多个表达式组成,结果为布尔值++
数据库中的表达式:文本值,列,null,函数,计算表达式,系统变量…
扩展
逻辑运算符:
运算符 | 语法 | 描述 |
---|---|---|
and && | a and b /a && b | 逻辑与 |
or ll | a or b /a ll b | 逻辑或 |
not ! | not a / !a | 逻辑非 |
模糊查询:比较运算符
运算符 | 语法 | 描述 |
---|---|---|
is null | a is null | 如果操作符为null,结果为真 |
is not null | a is not null | 如果操作符不为null,结果为真 |
between | a between a and c | 若a在b和c之间,则结果为真 |
like | a like b | sql匹配,若a匹配b,则结果为真 |
in | a in (a1,a2,a3…) | 假设a在a1,或者a2…其中的某一个值,结果为真 |
like结合 %表示零个或多个字符,_表示一个字符
查询所有姓刘的人
eg:
select `字段名` from 表名 where 字段名 like '刘%';
查询姓刘的两个字的人
eg:
select `字段名` from 表名 where 字段名 like '刘_';
查询姓刘的三个字的人
eg:
select `字段名` from 表名 where 字段名 like '刘__';
in表示具体一个或多个值
查询1001,1002,1003,1004号学员
eg:
select `字段名` from 表名 where 字段名 in(1001,1004);