1、数据表操作
1.1、创建数据表
1.1.1、语法
create table [if not exists] 表名(
字段名 类型[属性] [comment '说明']
)[引擎设置][字符集设置] [comment '说明'];
1.1.2、说明
1)、if not exists:可以缺省,缺省该语句创建表时,如果表存在将报错
2)、多字段之间用“,”进行分割,最后一个字段末尾不需要使用“,”
3)、comment:可以缺省,该子句可以为字段添加说明
4)、引擎设置:engine=引擎(InnoDB、MyIsam、Memory)
5)、字符集设置:charset=字符集(iso-8859-1、utf-8)
1.2.3、示例
略
1.2、查看数据库下表信息
1.2.1、查看数据库下所有的表信息
show tables;
1.2.2、查看表结构信息
desc 表名;
1.3、修改表信息
1.3.1、修改表名
1)、语法
alter table 原表名 rename as 新表名;
2)、作用
将原表名更改为新表名;
1.3.2、添加字段
1)、语法
/*默认在字段列表的末尾增加字段*/
alter table 表名 add 字段名 字段类型;
/*在字段列表的第一个位置添加字段*/
alter table 表名 add 字段名 字段类型 first
/*在指定字段的后面添加新字段*/
alter table 表名 add 字段名 字段类型 after 旧字段名;
1.3.3、修改字段
1)、修改字段类型
alter table 表名 modify 字段名 字段类型[属性]
2)、修改字段名
alter table 表名 change 原字段名 新字段名 类型[属性]
1.3.4、删除字段
1)、语法
alter table 表名 drop 字段名;
2)、作用
删除表中指定的字段
1.3、删除表
1)、语法
drop table 表名;
2)、作用
删除指定名称的表;
2、DML操作数据
2.1、insert插入数据
2.1.1、语法
insert [into] 表名[(字段名列表)] values(值列表);
2.1.2、示例
略
2.1.3、注意事项
1)、字段名是可选的,如省略则依次插入所有字段
2)、插入的数据项,要求符合外键约束
3)、值列表和字段名列表一一对应
4)、具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值
5)、插入的数据项,要求符合主键约束
2.2、插入多行数据
2.2.1、语法
insert [into] 表名(字段名列表) values(值列表1),(值列表2),……,(值列表n);
2.2.2、建议
为避免表结构发生变化引发的错误,建议插入数据时写明具体字段名
2.3、查询结果插入到现有表
2.3.1、语法
INSERT INTO 目标表(字段1,字段2……)
SELECT字段1,字段2…… FROM 原表
2.3.2、作用
通过INSERT SELECT语句将现有表中的数据添加到已存在的
2.3.3、注意事项
插入过程中目标表必须已经存在。
2.4、创建表并插入数据
2.4.1、语法
CREATE TABLE 目标表(SELECT 字段1,字段2...... FROM原表)
2.4.2、作用
查询并将查询结果插入到新创建的目标表中。
2.4.3、注意事项
目标表必须不存在。
2.5、更新数据
2.5.1、语法
UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n [WHERE 条件];
2.5.2、作用
更新表中符合条件的数据;
2.5.3、示例
略
2.5.4、注意事项
1)、多个字段之间用“,”进行分割
2)、如果省略where子句将更新所有数据
2.6 删除数据
2.6.1、语法
delete [from] 表名 [where 条件]
2.6.2、作用
删除符合条件的所有数据
2.6.3、示例
略
2.6.4、注意事项
1)、如果有主外键关联表,先删外键表数据,再删除主键表数据
2)、如果省略了where条件将删除当前表中所有数据
2.7、truncate table
2.7.1、语法
truncate table 表名
2.7.2、作用
清空表中所有记录
2.7.3、示例
略
2.7.4、注意事项
表结构及其字段、约束、索引保持不变
2.7.5、delete和truncate table的区别
1)、truncate table的标识列会被重置;delete不会重置
2)、truncate table的执行速度相对较快;delete的执行速度相对较慢
3)、truncate table没有where子句;delete有where子句
4)、truncate table无法删除有外键约束的表;delete可以删除有外键约束的表
3、DQL查询语言
3.1、概述
DQL是Data Query Language英文缩写,数据查询语言
3.2、基本查询语句
3.2.1、语法
select */字段名列表 from 表名
3.2.2、说明
》*:表时所有字段
》字段名列表:查询结果集将只返回包含字段列表的所有数据
3.2.3、示例
略
3.2.4、列别名
1)、语法
select 字段名1 [as] 别名1,字段名2 [as] 别名2,.... from 表名
2)、作用
为查询结果中将使用别名替换字段名进行显示。
3.3、带条件查询语句
3.3.1、语法
select */字段名列表 from 表名 where 条件表达式
3.3.2、作用
对数据按条件进行筛选。
3.3.3、示例
略
3.4、多条件查询语句
3.4.1、运算符
1)、算数运算符
+、-、*、/、%
2)、关系运算符
=、>、>=、<、<=、<>(!=)
3)、逻辑运算符
and(&&)、or(||)、not(!)
3.4.2、概述
多条件查询是利用逻辑运算符把多个条件组合起来的条件查询
3.4.3、语法
SELECT * FROM 表名WHERE 条件1 逻辑运算符 条件2
3.5、模糊查询
3.5.1、in关键字
1)、作用
查询指定字段与枚举值相匹配的所有数据。
2)、语法
where 字段名 in (值列表)
3)、说明
各值之间使用“,”进行分割
3.5.2、区间查询
1)、查询指定范围的数据值
where 关系表达式1 逻辑运算符 关系表达式2
where 字段名 between 起始值 and 终止值
2)、注意
使用between...and语句查询时,终止值一定要大于起始值,否则将导致无查询结果
3.5.3、通配符查询
1)、定义
模糊查询是使用SQL 通配符替代一个或多个字符的条件查询
2)、概述
》一类字符,代替一个或多个真正的字符
》与LIKE关键字或RLIKE关键字一起使用
3)、通配符
》_:一个字符,如:name like ‘L_’
》%:表示任意长度的任意字符,如:name like ‘L%’
》[]:括号中所指定范围内的一个字符,如:tel like ‘13[1-6]452’
》[^]:不在括号中所指定范围内的一个字符,如:tel like ‘13[^1-6]452’
4)、语法
where 字段名 like '条件'
3.6、查询排序
3.6.1、作用
一组数据按照升序或降序排列。
3.6.2、语法
select * from 数据表 [where 条件表达式] [order by 字段名 asc/desc]
3.6.3、说明
》asc(默认值):数据按照升序排序
》desc:数据按照降序进行排序
3.6.4、示例
略
3.6.5、注意事项
》当使用多个排序字段时,首先按照第一排序字段进行排序,当第一字段值相等则会按照第二字段进行排序
》多个排序字段之间使用",”进行分割
3.7、limit查询
3.7.1、作用
查询语句中使用limit子句限制结果集
3.7.2、语法
select* from 表名 [where <查询条件>]
[order by <排序的列名>[asc/desc]]
[limit [位置偏移量, ]行数];
3.7.3、示例
略
3.7.4、应用
使用limit实现分页查询。
3.8、查询null值
3.8.1、特点
》区别空字符串’’,null表时什么都没有
》只能出现在定义允许为NULL的字段
》须使用 IS NULL 或 IS NOT NULL 比较操作符去比较
3.8.2、语法
select * from 表名 where 字段名 is [not] null
3.8.3、示例
略
3.9、distinct查询
3.9.1、作用
去掉select查询返回的记录结果中重复的记录, 相同记录只返回一条
3.9.2、语法
select distinct 字段名1, 字段名2... from 表名
3.10、分组查询
3.10.1、应用环境
需要对数据进行分组统计查询时使用,如:统计公司各部分员工信息,按年级统计学生信息
3.10.2、语法
select * from 表名
[where 条件表达式]
[group by 分组字段]
[having 条件表达式]
[order by 字段] [limit 偏移地址,行数]
3.10.3、示例
略
3.10.4 注意事项
》select语句后面只能跟分组字段、或聚合函数
》having分组筛选无法使用select后面的聚合函数