一、什么是CRUD?
CRUD既mysql数据库的增加删除修改删除。
Insert语句 (增加数据)、Update语句 (更新数据)、Delete语句 (删除数据)、Select语句(查找数据)
二、Insert语句 (增加数据)
使用 INSERT 语句向表中插入数据。
INSERT INTO table_name [(column [, column...])] VALUES (value [, value...]);
- 插入的数据应与字段的数据类型相同。
- 数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
- 在values中列出的数据位置必须与被加入的列的排列位置相对应。
- 字符和日期型数据应包含在单引号中。
- 插入空值:不指定或insert into table value(null)
- 如果要插入所有字段可以省写列列表,直接按表中字段顺序写值列表
字段名
字段类型
id
整形
name
字符串型
gender
字符串型
birthday
日期型
salary
浮点型
entry_date
日期型
resume
大文本型
Tip:mysql中文乱码
- mysql有六处使用了字符集,分别为:client 、connection、database、results、server 、system。
- client是客户端使用的字符集。
- connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。
- database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
- results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。
- server是服务器安装时指定的默认字符集设定。
- system是数据库系统使用的字符集设定。(utf-8不可修改)
show variables like'character%'; set names gbk;临时修改当前CMD窗口和mysql的通信编码字符集
- 通过修改my.ini 修改字符集编码
请到mysql安装目录下面找到 my.ini文件 修改default-character-set=utf8 为 default-character-set=gbk 有两个地方都要改 修改文件前,先停止mysql服务 ,等修改后再重新启动 使用dos命令 :net stop mysql 来停止服务 net start mysql 来启动
三、 Update语句 (更新数据)
使用 update语句修改表中数据。
UPDATE tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERe where_definition]
UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。
WHERe子句指定应更新哪些行。如没有WHERe子句,则更新所有的行。
四、 Delete语句 (删除数据)
使用 delete语句删除表中数据。
delete from tbl_name [WHERe where_definition]
- 如果不使用where子句,将删除表中所有数据。
- Delete语句不能删除某一列的值(可使用update)
- update table_name set 字段名='';
- 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。
- drop table table_name;
- 同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记外键约束这个潜在的问题。
- 删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同,参看mysql文档。
五、Select语句(查找数据)
Select语句(1)
基本select语句 SELECT [DISTINCT] *|{column1, column2. column3..}FROM table; select 指定查询哪些列的数据。 column指定列名。 *号代表查询所有列。 from指定查询哪张表。 DISTINCT可选,指显示结果时,是否剔除重复数据
Select语句(2)
在select语句中可使用表达式对查询的列进行运算 SELECT * |{column1|expression, column2|expression,..} FROM table; 在select语句中可使用as语句 SELECT column as 别名 from 表名;
Select语句(3)
使用where子句,进行过滤查询。练习: 查询姓名为XXX的学生成绩 查询英语成绩大于90分的同学 查询总分大于200分的所有同学
Select语句(4)
在where子句中经常使用的运算符
比较运算符
> < <= >= = <>
大于、小于、大于(小于)等于、不等于
between ...and...
显示在某一区间的值
in(set)
显示在in列表中的值,例:in(100,200)
like ‘张pattern’
模糊查询%_
is null
判断是否为空
select * from user where id is null
ifnull(原值,替代值)
如果原值为null,则使用代替值
select ifnull(score,0) from exam;
逻辑运算符
and
多个条件同时成立
or
多个条件任一成立
not
不成立,例:where not(salary>100);
Like语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like ‘_a%’;
Select语句(5)
使用order by 子句排序查询结果。 SELECT column1, column2. column3.. FROM table; order by column asc|desc Order by 指定排序的列,排序的列既可是表中的列名,也可以是select 语句后指定的列名。 Asc 升序(默认)、Desc 降序 ORDER BY 子句应位于SELECT语句的结尾。
聚集函数-count
count(列名)返回某一列,行的总数 Select count(*)|count(列名) from tablenam [WHERe where_definition]
聚集函数-SUM
Sum函数返回满足where条件的行的和 Select sum(列名){,sum(列名)…} from tablename[WHERe where_definition]
聚集函数-AVG
AVG函数返回满足where条件的一列的平均值 Select avg(列名){,avg(列名)…} from tablename [WHERe where_definition]
聚集函数-MAX/MIN
Max/min函数返回满足where条件的一列的最大/最小值 Select max(列名)from tablename [WHERe where_definition]
Select语句(6)分组操作
使用group by 子句对列进行分组 SELECT column1, column2. column3.. FROM table group by column having ...
- 使用having 子句 对分组结果进行过滤
- where和having区别:where在分组前进行条件过滤,having在分组后进行条件过滤。使用where的地方都可以用having替换。但是having可以使用分组函数,而where后不可以使用。