MySQL数据库的SQL语句知识总结 | 您所在的位置:网站首页 › sql语句中对聚合函数的结果设置的条件 › MySQL数据库的SQL语句知识总结 |
一、创建语句create
使用create database命令可以创建数据库。 create database 数据库名使用create table命令可以创建表。 create table 表名 (列名 数据类型(int/varchar...)not null/null (default 默认值)...)视图是从一个或多个表(视图)导出来的虚表,不进行实际存储,可以像表一样被查询、修改、删除和更新 在默认情况下,将当前数据库创建新视图时,应将名称指定为“库名.视图名” 视图的命名必须遵循标识符命名规则,不能与表同名,对于每一个用户来说,视图名必须唯一 不能把规则、默认值或出触发器与视图相关联 不能在视图上建立任何索引,包括全文索引 视图中也对selec语句进行了一些限制: 定义视图的用户必须对所参照的表或视图有查询权限,在定义中引用的表或视图必须存在 不能包含from子句中的子查询,不能引用系统或用户变量,不能引用预处理语句参数 在视图定义中允许使用order by 子句,如果从特定视图进行了选择,而该视图使用了具有自己order by 子句的语句,则视图定义中的order by 子句将被忽略 create [or replace] view 视图名 [(列名列表)] as select语句 [with [cascaded / local] check option] //or replace 可以替换已有的同名视图 //列名列表可以为视图的列定义明确的名称,如果和源表或视图中相同的列名,可以省略 //select语句可以查询多个表或视图 二、指定数据库语句use想要在不同的查询页面使用指定数据库,可以用use命令。 use 数据库名 三、修改语句alter数据库创建后,如果想要修改数据库的参数,可以使用alter database 命令。 alter 数据库名alter table 命令可以用于更改原有表的结构。例如增加、删除、减列、创建或取消索引、更改原有列的类型、重新命名列或表,还可以更改表的评注和表的类型。 alter table 表名 add 列名 //添加列 alter 列名 set default 默认值/drop default //修改默认值 change 旧列名 列定义 first/alter 列名 (first表示在表头前添加,alter直接默认添加在最后) //对列名重命名 modify 列定义 first/alter 列名 (first表示在表头前添加,alter直接默认添加在最后) //修改列类型 drop 列名 //删除列 rename 新列表 //重命名该表 alter view 视图名 as select语句 //对已有视图的定义进行修改如果需要删除已经创建的数据库,可以使用drop命令。 四、删除语句drop drop database 数据库名需要删除一个表时,可以使用drop table语句。 drop table 表名使用 if exists 可以避免删除不存在的数据库时显示MySQL错误信息。 drop database if exists 数据库名使用 if exists 可以避免删除不存在时出现错误信息。 drop table if exists 表名删除视图 drop view [if exists] 视图名1,视图名2... 五、show出你的数据在服务器中如果现需要显示已建立的数据库,可以使用show databases 命令。 show databasesshow tables 命令用于显示已经建立的数据表文件。 show tables 六、复制你的数据可以使用like/as 复制表 create table 新表名 like 参照表名 //可以复制与参照表名结构相同的新表,列名、数据类型、空值定和索引也将复制。但是不会复制内容,所以新表是个空表。 as (select语句) //as可以复制表的内容,但是索引和完整性约束不会复制。select语句表示一个表达式们可以是一条select语句。 七、数据完整性约束 1、primary key 主键要求每个表必须定义一个主键; 表中不同的行在主键上不能具有相同的值; 在复合主键中不应该包含一个不必要的列。 主键的定义 列的完整性约束 create table 表名 ( 列名1 数据类型 primary key, 列名2 数据类型 not null/null ); 或者 表的完整性约束 create table 表名 ( 列名1 数据类型 not null/nul, 列名2 数据类型 not null/null, 列名3 数据类型 not null/null, primary key (此处可以定义复合主键的主键名) (列名1,列名2) ); 2、unique 代替键unique 代替键与primary key 主键的区别 数量不同:一个表可以有多个unique键,并且可以重合 NULL设置不同;unique的字段的值可以取NULL马,但是要使用NULL或者NOT NULL声明 索引不同:创建不同的约束,系统会自动生成对应的索引 create table 表名 ( 列名1 数据类型 not null/null, 列名2 数据类型 not null/null primary key(列名1), unique(列名2) ); 或者 create table 表名 ( 列名1 数据类型 not null/null unique, 列名2 数据类型 not null/null );对于已经创建好的表,可以使用alter table语句向表中修改约束 alter table 表名 add primary key (列名,...) //添加主键 add unique (列名,...) //添加替代件约束 drop primary key (列名,...) /删除主键 drop index 索引名 //删除索引 3、foreign key 外键 创建表的同时创建外键 create table 表名 ( 列名1 数据类型 not null/null, 列名2 数据类型 not null/null, FOREIGN KEY (从表的对应列名) REFERENCES 主表表名(对应列名) ); 对已有表创建外键 alter table 表名 add FOREIGN KEY (从表的对应列名) REFERENCES 主表表名(对应列名) 八、数据的增删查改 1、insert语句可以插入数据 insert into 表名 (列名,...) values (对应列的数据类型) //向表中插入数据 insert into 视图名 values (对应列的数据类型) //向视图中插入数据 2、delete语句可以删除数据 delete from 表名 //删除表中的所有数据 delete from 表名 where 条件 //根据条件删除表中对应的数据 delete from 视图名 where 条件 //根据条件删除视图中对应的数据 //对依赖于多个基本表的视图不能的使用delete语句 3、update语句可以修改数据 update 表名 set 列名1=表达式1 ... where 条件 //修改对应表的数据 update 视图名 set 列名1=表达式1 ... where 条件 //修改对应视图的数据 4、select语句可以查询数据 select * from 表名 //查询对应表的所有信息 select 列名1,列名2... from 表名 //查询对应表的对应列的数据 select * from 表名 where 条件 //根据条件查询符合条件的数据 select 表达式 //可以进行简单的运算 select 列名 (as) 别名 //查询后使用别名显示该列的列头 select 列名... case when 条件1 then 表达式1 when 条件2 then 表达式2 ... else 表达式n end from 表名 //可以根据条件替换对应表的数据 select distinct 列名1,... //使用distinct消除查询结果集中的重复行 select * from where 列名 between 表达式1 and 表达式2 //可查询条件中符合范围的数据 select 列名1,列名2... from 对应视图名 //可以查询对应视图 九、join连接 1、内连接 (inner) join select 表1.列名1,表2.列名1 from 表1 (inner) join 表2 on (表1.唯一标识符=表2.与表1对应列); 2、外连接 left/right join select 表1.列名1,表2.列名1...from 表1 left/right join 表2 on 表1.唯一标识符=表2.对应列; //left join 连接后显示主表与从表的共同拥有的数据,还包含主表的所有数据,不包含从表的额外的数据 //right join 连接后显示主表与从表的共同拥有的数据,还包含从表的所有数据,不包含主表的额外的数据 十、常用的聚合函数 函数说明COUNT求组中项数,返回 int 类型整数 MAX求最大值MIN求最小值SUM返回表达式中所有值的和AVG求组中值的平均值 十一、排序 1、group by 分组排序group by 子句后通常包含列名或表达式 MySQL中可以在列或表达式后面加上ASC(升序)或DESC(降序)进行排序 可以根据表达式或多个列进行分组 select * from 表名 group by 列名 / 表达式 //对对应表的查询结果按照列或某一结果进行分组 2、having 子句having 子句是group by 的条件子句,有having就一定有group by,但是有group by不一定有having select * from 表名 group by 列名 / 表达式 having 条件 //对对应表的查询结果满足条件的按照列或某一结果进行分组 3、order by 子句 select * from 表名 order by 列名/表达式/列编号 (ASC 升序/DESC 降序) //对查询结果按照条件进行排序,默认ASC升序 4、limit 子句 select * from 表名 limit 偏移量,行数 //偏移量:指定返回的第一行的偏移量(初始值为 0 ) //行数:返回的行数 |
CopyRight 2018-2019 实验室设备网 版权所有 |