Sql语句的增删改查
1.DDL操作数据库
创建数据库:
create database 数据库名 [character set 字符编码][collate 校对规则];
-- []表示可选
例句:
create database day1 character set gbk;
创建库名为day1字符编码为gbk
查看数据库:
查看所有数据库: show databases;
查看数据库结构: show create database 数据库名;
查询所有的校对规则:show collation;
删除数据库: drop database 数据库名;
修改数据库: alter database 数据库名 character set 字符编码;
注意:1.数据库名不能修改 2.只能修改数据库的编码,是utf8,不是utf-8
其他操作:
切换数据库: use 数据库名;
查看正在使用的数据库:
select database();
2.DDL操作表
2.1.创建表:
create table 表名(
字段名 字段类型 [约束],
字段名 字段类型 [约束],
........
字段名 字段类型 [约束]
);
-- 注意: 小括号中最后定义的字段后面不要加逗号
约束种类:
not null: 非空 ;
eg: username varchar(40) not null username这个字段不能为空,必须要有数据
unique:唯一约束, 后面的数据不能和前面重复;
eg: cardNo varchar(18) unique; cardNo字段不能出现重复的数据
primary key;主键约束(非空+唯一);一般用在表的id列上面. 每一张表基本上都有id列的, id列作为记录的唯一标识的
auto_increment: ==自动增长,必须是设置了primary key之后,才可以使用auto_increment==
id int primary key auto_increment;
id不需要我们自己维护了, 插入数据的时候直接插入null, 自动的增长进行填充进去, 避免重复了.
例句:
create table student(
id int primary key auto_increment,
name varchar(70),
sex varchar(13)
);
2.2.查看表:
查看所有的表: show tables;
查看表的定义结构: desc 表名;
2.3.修改表:
增加一列: alter table 表名 add 字段名 字段类型 字段约束;
修改列的类型约束: alter table 表名 modify 字段名 字段类型 字段约束;
修改列的名称,类型,约束: alter table 表名 change 旧字段名 新列名 字段类型 字段约束;
删除一列: alter table 表名 drop 字段名;
修改表名: rename table 旧表名 to 新表名;
2.4.删除表:
drop table 表名;
3.DML操作表记录-增删改
插入记录
插入指定列:
insert into 表名(列名,列名,...) values(值,值,...);
插入所有列:
insert into 表名 values(值,值,...);
-- 注意:
-- - 字段名与值的类型、个数、顺序要一一对应。
-- - 值不要超出列定义的长度。
-- - 插入的日期和字符串,使用引号括起来。
-- - 插入特定的列:没有赋值的列,系统自动赋为null(前提是当前列没有设置not null 约束,否则会报错)
-- - 默认所有列插入,values里面必须给表中每一个字段赋值,一般主键给一个null
更新记录:
update 表名 set 字段名=值,字段名=值,... where 条件;
删除记录:
delete from 表名 where 条件;
delete from 表名;
-- 一条一条记录删除,再添加记录,id是从之前最后一条记录的id+1开始
truncate table 表名;
-- 直接删除整张表,然后再创建一张一模一样的新的空表,再添加记录,id就是从1开始
插入中文数据报错:在数据库软件的安装目录下面, 修改配置文件 my.ini中客户端的编码为gbk
4.DQL操作表记录-查询
基本查询
查询所有的列:
select * from 表名;
查询某张表特定列:
select 字段名,字段名,... from 表名;
去重查询:
select distinct 字段名 from 表名;
别名查询:
select 字段名 as 别名,字段名 as 别名,... from 表名 as 别名;
-- as是可以省略的
列运算查询(+,-,*,/等):
select 列运算 from 表名;
基本条件查询:
select ... from 表名 where 条件;
比较运算符: > >= < <= = <>
between...and... 范围
in(值,值,...) 范围
like 模糊
_ : 匹配一个字符
%: 匹配0个到多个字符(大于等于0个)
逻辑运算符
and 和
or 或
not 非
排序查询
方式一:
select ... from 表名 order by 字段名
[asc|desc];
方式二:
select ... from 表名 order by 字段名 [asc|desc],字段名 [asc|desc];
注意:asc:升序,desc:降序,不指定默认是升序
聚合函数
聚合函数:
max(列名) 求这一列的最大值
min(列名) 求这一列的最小值
avg(列名) 求这一列的平均值
count(列名) 统计这一列有多少条记录
sum(列名) 对这一列求总和
SELECT 聚合函数(列名) FROM 表名;
注意: 聚合函数会忽略空值NULL
如果不想忽略空值null,就使用ifnull(参数1,参数2)函数,进行判断
如果参数1为null,就取参数2的值,如果参数1不为null,就取参数1的值
SELECT 聚合函数(ifnull(列名,参数1,参数2)) FROM 表名;
分组查询
select ... from 表名 [where 条件] [group by 分组字段] [having 条件];
目的一般为了做统计使用, 所以经常和聚合函数一起使用,需要查询出分组字段的值
分页查询
select ... from 表名 limit a,b;
a:从哪里开始查询, 从0开始计数 ,省略a不写,默认就是从0开始
b:查询的数量【固定的,自定义的】
分页查询规律: limit (页码-1)*每页显示的记录数,每页显示的记录数
目的一般为了提升性能和用户体验