SQL语句的分类
DDL 数据定义语言 DML 数据操作语言 DCL 数据控制语言 TCL 事物控制语言 DQL 数据查询语言
DDL常用语句
DLL操作数据库 create database 库名; 创建数据库 create database if not exists 库名; 判断该数据是否存在,存在就不创建,不存在;就创建 create database 库名 charcter set 码表; 创建数据库按指定的码表 show databases; 显示所有数据库 show create database 库名; 查看创建数据库的语句 alter database 库名 default character set 码表; 修改数据库的码表 drop databse 库名; 删除指定数据库 use 库名; 使用数据库 select database(); 查看当前使用的数据库 DDL操作表 create table 表名(字段名1 类型1,字段名2 类型2...); 创建表 desc 表名; 查看表结构 show create table 表名; 显示创建表的sql语句 drop table 表名; 删除表 drop table if exists 表名; 判断指定表是否存在,存在就删除,不存在就不删除 alter table 表名 add 列名 数据类型; 在指定表上面添加一个新的列 alter table 表名 modify 列名 新的数据类型; 修改指定列的数据类型 alter table 表名 change 旧列名 新列名 数据类型; 修改指定表的一个列名和数据类型 alter table 表名 drop 列名; 删除指定表的一个列 rename table 表名 to 新表名; 改变表的名字 alter table 表名 charactes set 码表; 修改表的码表
DML常用语句
insert into 表名(字段名1....) values(值1......); 向一个表插入指定数据 inset into 表名1 select * from 表名2; 蠕虫复制,把一个表的数据全部复制的另一张表 update 表名 set 字段名=值 where 字段=值; 按条件更新一个字段的值,如果不条件where更新整个列 delete from 表名 where 字段名=值; 删除一个表的指定数据,如果不添加条件删除全部数据 truncate table 表名; 删除整个表的数据 delete和truncate的区别:delete删除整个表是把整个表的数据全部删除,truncate是把这个表删除,然后再创建一个一模一样的表。
DQL常用语句
select * from 表名; 查询指定表的所有列数据 select 字段名1,字段名2.... from 表名; 查询指定表的指定列数据 select distinct 字段名 from 表名; 查询指定列的数据,去掉重复的
DQL语句比较运算符: < , > , <= , >= , = , !=
select * from person where age>67; 查询age列的值大于67,person表的全部列 select * from person where age != 54; 查询age列的值不等于54,person表的全部列 select * from person where age = 43; 查询age列的值等于43,person表的全部列
DQL逻辑运算符 : and(&&) , or(||) , not(!)
select * from person where age=45 and name =‘老王’; 查询person表age等于45并且name等于老王的所有数据 select * from person where age != 54; 查询person表age不等于54的所有数据 select * from person where age = 45 or name='老王'; 查询age等于45或者name为老王的所有数据
DQL范围按范围查询: between
select * from person where age between 40 and 60; 查询person表的所有列数据,条件age列的值要在40到60之间
模糊查询: like
select * from person where name like '%王%'; 查询name列名字包含“王”字, person表所有列数据 select * from person where name like '_王'; 查询name列的值为两个字并且第二个值为“王”,person表所有列数据 “ % ” 表示多个字符和0个字符 " _ " 表示一个任意字符
降序与升序
select * from person order by age desc; 查询person表的所有数据,按age降序排列 select * from person order by age asc; 查询person表所有数据,按age升序排列 desc 降序 , asc 升序
聚合函数
select count(age) from person; 查询person表一共有多少个age列,不包括值为null的age列 select sum(age) from person; 查询person表age列的所有总和 select max(age) from person; 查询person表age列的最大值 select min(age) from person; 查询person表age列的最小值 select avg(age) from person; 查询person表age列所有值的平均值,不包括age值为空的 select ifnull(age,0) from person; 查询person表age列的所有数据,如果有为null的用0代替 聚合函数; count 计算个数 , sum 计算总和 , max 获取最大值 , min 获取最下值 , avg 获取平均值 , ifnull 如果值为null用什么值替换
group by 分组
select * from 表名 group by 列名; 查询指定表,按指定列分组,值相同的为一组 having与where的区别:
having是在分组后对数据进行过滤的, where是在分组前对数据进行过滤的
having后面可以使用聚合函数,where后面不可以使用聚合函数
limit
select * from 表名 limit 3,4; 第一个数字是从哪一条数据开始查,第二个数字是要查询几条数据
其他未知分类的sql语句
数据库备份
mysql -u用户名 -p密码 数据库名>文件路径
还原格式
source 导入文件得路径
数据库约束
primary key 设置主键 unique 设置唯一 not null 设置不能为null default 设置默认值 foreign key 设置外键 auto_increment 自增
给已经有的表设置外键
alter table 表名 add primary key(列名);
删除主键
alter table 表名 drop primary key;
新建表时添加外键
constraint 外键名 foreing key(外键名) refences 主表名(主表主键);
删除外键
alter table 从表名 drop foreign key 外键名;
外键的连级
on update cascade 连级更新 on update cascade 连级删除
隐式内连接
select 列名 from 表名1,表名2 where 条件 ;
显示内连接
select 列名 from 表名1 inner join 表名2 on 条件;
注意 :inner可以省略不写,如果使用inner join 那么条件不能使用where只能使用on
左外连接
select 列名 form 表名1 left outer join 表名1 on 条件 ;
右外连接
select 列名 from 表名1 right outer join 表名2 on 条件;
数据库的三范式
第一范式:
数据库里面的表每一列都是不可再分的单元。
第二范式:
一张表只描述一件事物,表中的每一列都依赖与主键。
第三范式:
在第二范式的基础上,任何非主属性不依赖与其他非主属性。
常用sql语句
最新推荐文章于 2024-06-09 23:10:45 发布