什么是关系型数据库,是建立在关系模型基础上的数据库。关系模型就是指二维模型,即以行和列的形式存储数据。
SQL的分类:
DDL(Data Defintion Language):数据定义语言CREATE、ALTER、DROP等
DML(Data Manipulation Language):数据操作语言SELECT、UODATE、INSERT、DELETE等
DCL(Data Control Language):数据控制语言GRANT、COMMIT、ROLLBACK
数据库的相关操作
创建数据库:create database dbName character set utf8(字符集);
切换数据库:use dbName;
查看数据库服务器中所有的数据库:showdatabases
查看某个数据库的定义信息:showcreate database dbName;
查看当前正在使用的数据库信息:selectdatabase();
删除数据库:dropdatabase dbName;
修改数据的字符集:alter database dbName character set gbk(新字符集);
表的相关操作
创建表
createtable表名(字段名 类型(长度)约束,字段名 类型(长度)约束,……);
约束(单表约束)
主键约束:primary key(默认就是唯一非空的)
唯一约束:unique
非空约束:not null
查看数据库中有哪些表:show tables;
查看表结构:desc表名;
查看表信息:show create table表名;
删除表:drop table表名;
改表名:rename table旧表名to新表名;
修改表的结构语法格式:alter table表名 关键字
关键字有以下几个:
1.add----添加列操作alter table表名add列名 类型;
2.modify--修改列的类型alter table表名modify列名类型;
3.drop --删除列alter table表名drop列名.
4.change--修改列名称alter table表名change旧列名新列名类型;
插入记录:
插入指定列的值:insert into表名(列名1,列名2,…) values (值1,值2);
插入指定列的值:insert into values(值1,值2,…);
注意事项:列名的个数与值的个数对应.
列的类型与值的类型对应,位置也要对应。
类的类型如果是字符串或者日期,写值的时候使用单引号将值引起来.
插入的值的最大长度不能超过列的最大长度.
修改记录:update表名set列名1=值,列名2=值where条件
例:1.将user表中所有人的password修改为”456”
updateuser set password = 456;
2.将user表名字叫tom的用户email修改为tom@hang.cn
updateuser set email =tom@hang.cnwhere name = tom;
3.将tom的gender修改为”female”,并且introduce修改为”good girl”
Updateuser set gender = ‘female’ , introduce = ‘good gile’ where name = tom;
删除记录:delete from表名where条件
truncate table表名
关于delete与truncate的区别?(笔试题)
1.delete是一行一行删除truncate是将表结构销毁,在重新创建表结构.
如果数据比较多,truncate的性能高。
2.delete是dml语句
truncatedcl语句
delete是受事务控制.可以回滚数据.
truncate是不受事务控制.不能回滚.
查询操作
查询指定的列:select字段from表名
查询只当字段信息(多列) select字段1,字段2,… from表名;
查询所有列:select * from表名;
去掉重复记录:select distinct字段from表名;(去重)
条件查询
where条件种类:
1.比较运算符
> >= < <= = !=(<>)
2.逻辑运算符
andornot
3.between ...and
相当于>= and <=
注意:between后面的值必须是小值and后面的是大值
4.in
可以比较多个值
5.like
模糊查询
通配符使用:
1.%匹配多个
2._匹配一个
6.null值操作
is null;判断为空
is not null;判断不为空
排序order by
orderby字句是select的最后一个子句。
asc升序(默认)
desc降序
聚合函数
count:统计指定列不为NULL的记录行数;
sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
分组操作
分组查询是指使用group by字句对查询信息进行分组,例如:我们要统计出products表中所有分类商品的总数量,这时就需要使用group by来对products表中的商品根据category进行分组操作.
分组后我们在对每一组数据进行统计。
分组操作中的having子名是用于在分组后对数据进行过滤的,作用类似于where条件。
笔试题: having与where的区别:
1.having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
2.having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。