赞
踩
目录
在创建数据库时我们一般可以使用create database 数据库名 或者 create schema 数据库名 命令来创建数据库。
使用数据库命令: use 数据库名
修改数据库命令: alter database 数据库名
删除数据库命令: drop database 数据库名
显示数据库命令: show database
但我们在创建数据库时,数据库列表已有相同的数据库名存在时就会报错。
这时我们就可以使用if not exists在建库时进行判断,当数据库列表中没有一样库名时才执行create database 操作(建表一样可用)。
创建表时我们使用create table 表名 来创建表。
具体的基本使用格式如下。
修改表结构命令:alter table 表名 其经常搭配add,change,modify,drop,rename等关键词实现不同的功能。
删除表命令: drop table 表名1,表名2, ······
显示表数据信息命令:show tables
在创建表结构时,最后一行是不需要打逗号的,否则就会报错。
(1)定义主键的原则:唯一性规则,表中两个不同的行在主键上不能具有相同的值。
最小化规则,复合主键不应该包含一个不必要的列,一个列名在主键的列 表中只能出现一次。
当我们需要添加主键时,有两种方法:
可以在定义列的时候加上关键词 primary key,具体如下。
也可以在语句的最后加上primary key(列名,···)来实现。
(2)替换键和主键很像,它们的值在任何时候都是唯一的。
从以下几点区别替换键和主键:
*数量不同,一个表只能创建一个主键,但可以创建若干个unique键,并且它们可以重合。
*null设置不同,主键字段的值不允许为null,而unique字段的值可以取null,但必须使用null或not null 声明。
*索引不同。
(3)参照完整性约束
参照完整性约束的定义语法如下。
当我们指定外键时要注意以下几点:
*父表必须是已经创建的表或者是正在创建的表。在后一种情况下,父表和子表是同一个表,表中的某列参照另一列。
*必须在父表的表名后面指定列名。这个列必须是这个表的主键或替代键。
*外键中列的数目必须和父表中主键或替代键中的列的数目相同。
*外键中列的数据类型必须和父表中主键中列的数据类型相同。
*父表和子表必须使用相同的存储引擎,并且不能将它们定义为临时表。
当需要定义外键时,外键必须遵照以上所说的注意点否则就会抱错。
当我们将数据库和数据表创建好后,就应该要向表里面插入数据。通常使用insert语句
给全部列插入数据如下。
insert into 表名 values(表达式 or default);
给指定列插入数据。
insert into 表名(列名,···)
values(表达式 or default);
或者
insert into 表名
set 列名=表达式 or default,···
有时也会用到replace语句插入数据。
replace into 表名
values( 表达式 or default);
当需要修改表中数据时,我们可以用update语句。
update 表名
set 列名=表达式,···
where 条件
* 需注意的是如果update中没有where字句将默认更新所有行。当需要用update修改多个表时,要在修改的表名之间用逗号隔开。
当需要删除表中数据时,一般使用以下三种方法。
基本格式
delete from 表名
where 条件表达式
*当需要用delete来删除多个表时,要在需删除的表名之间用逗号隔开。
无条件格式
delete from 表名;
*如果使用无条件格式将会删除表中的所有行,需谨慎使用。
清空表
truncate table 表名
delete语句与truncate语句的区别:
*delete语句后面可以跟where子句,通过指定where子句中的条件表达式只删除满足条件的部分记录,而truncate语句只能用于删除表中的所有记录。
*使用delete语句时,每删除一条记录都会在日志中记录,而使用truncate语句时,不会在日志中记录删除的内容,因此truncate语句的执行效率比delete语句高。
select语句功能强大,有很多的子句,所以被使用的子句必须按语法说明中的顺序严格排序。基本语法结构如下。
select 字段名,··· from 表名(主语句)
where 条件表达式(子语句)
group by 字段名
having 条件表达式
order by 字段名[asc/desc]
limit [offset,]记录数];
想要用select语句实现1+1该怎么办呢?这时我们可以用到。
select 表达式
这是最简单的select语句。
select 1+1;
当select语句的表达式是表中的字段名变量,我们就可以查询表中该字段名下插入的信息。
*查询多个需要在字段名之间用逗号隔开。
当select语句指定列位置上使用“*”时,表示查询表中所以列。
当希望查询的结果使用自己定义的标题时,可以在列名之后使用as子句来更改查询结果的列名。
select 列名 as 别名
*as也可以省略不写。
*不允许在where子句中使用列别名,因为在执行where子句时,可能尚未确定列值。
有时查询某些列的时候会有重复行出现,就如这个book表,我只想查询表中有哪些作者。
使用distinct关键字来消除结果集中的重复行。
select distinct 列名,···
where子句必须紧跟在from子句之后,在where子句中使用一个条件从from子句的中间结果中选取行。
语句格式如下。
where <判定运算>
比较运算用于比较两个表达式的值,而表达式是除text和blod类型以外的表达式。
比较运算的格式如下。
表达式{ = | < | <= | > | >= | <=> | <> | != } 表达式
like运算符用于指出一个字符串是否与指定的字符串相匹配,语法表达式如下。
表达式 [not] like 表达式
* 使用like进行模式匹配时,长使用特殊符号" _ " " % "进行模糊查询, " % "代表0个或多个字符," _ "代表单个字符。
例:当我们需要查询一本书,但我们只记得它好像书名有个词叫“世界”,这时我们需要用到模糊查询。
当要查询的条件是某个值的范围时,可以使用between关键字,格式如下。
表达式 [not] between 表达式1 and 表达式2
使用in关键字可以指定一个值表,当字段的值与值表中的任意一个值匹配时,即返回true,否则返回false。
使用in关键字指定值表的格式如下。
表达式 [ not ] in (子查询)
当需要判定一个表达式的值是否为空值时,可以使用 is null 关键字,格式如下。
表达式 is [ not ] null
聚合函数中经常使用count函数,用于统计表中满足条件的行数,若找不到匹配的行,则返回0。
语言格式如下。
count ( 表达式 | * )
例:当需要查询book表中有几本书时,我们可以。
max函数和min函数分别用于求表达式中所以项的最大值与最小值。
语法格式如下。
max / min (表达式)
例:当需要查询book表中数量最多的书的数量和数量最少的书的数量时,我们可以。
sum函数和avg函数分别用于求表达式中所有项的总和与平均值。
语法格式如下。
sum / avg ( 表达式 )
例: 当需要查询book表中总共有多少书时,我们可以。
group by 子句用于根据字段对行进行分组,语法格式如下。
group by { 列名 | 表达式 }
*可以在列的后面指定 asc 或 desc 。
使用having 子句的目的与where子句类似,不同的是where子句用来在from子句之后选择行,而having子句用于group by 子句之后选择行。
语法如下。
having 条件
*having子句中的条件可以包含聚合函数,而where子句中的条件则不可以。
使用order by 子句后可以保证结果中的行一定顺序排列。
语法格式如下。
order by { 列名 | 表达式 | 列编号 } [ asc | desc ],···
*order by 子句后可以是一个列,一个表达式或一个正整数。
*order by 子句默认为asc 升序。
例:当我们需要以book表中书的数量查询书的全部信息。
limit子句主要用于限制被select语句返回的行数。
语法格式如下。
limit [ 偏移量, ] 行数
*语法格式中的偏移量和行数都必须是非负的整数常数。
例:当我们需要以book表中书的数量查询书的全部信息,并取数量最少的书。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。