插入数据insert
1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); 语法二: INSERT INTO 表名 VALUES (值1,值2,值3…值n); 2. 指定字段插入数据 语法: INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…); 3. 插入多条记录 语法: INSERT INTO 表名 VALUES (值1,值2,值3…值n), (值1,值2,值3…值n), (值1,值2,值3…值n); 4. 插入查询结果 语法: INSERT INTO 表名(字段1,字段2,字段3…字段n) SELECT (字段1,字段2,字段3…字段n) FROM 表2 WHERE …;
四种插入数据方式: 一.插入一条数据 insert into student(id,name,age,sex,salary) values(1,'小猪',18,'男',2500); 二.插入多条数据 insert into student(id,name,age,sex,salary) values(1,'小猪',18,'男',2500) ,(2,'小猪2',28,'男',2500),(3,'小猪3',38,'男',2500); 三.直接插入 insert into student values(1,'小猪',18,'男',2500); ps:如果插入的数据个数和位置正好与表的字段个数和位置匹配,则可以省略表名后面的字段定义 四.查询并插入 insert into student(id,name,age) select id,name,age from tb ; ps:从tb表中查询数据并插入到 student表中
代码示例
更新操作update
语法: UPDATE 表名 SET 字段1=值1, 字段2=值2, WHERE CONDITION; 示例: UPDATE mysql.user SET password=password(‘123’) where user=’root’ and host=’localhost’;
删除操作delete
语法: DELETE FROM 表名 WHERE CONITION; 示例: DELETE FROM mysql.user WHERE password=’’;
方式一: delete from student; ps:删除 student 表中所有的数据,注意:如果有自增主键,主键记录的值不会被删除. 方式二: delete from student where id=1; ps:只删除id 为1的数据. 方式三: truncate student; ps:清空表
代码示例
truncate和delete的区别
1、TRUNCATE 在各种表上无论是大的还是小的都非常快。而DELETE 操作会被表中数据量的大小影响其执行效率. 2、TRUNCATE是一个DDL语言而DELETE是DML语句,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。 3、TRUNCATE不能触发触发器,DELETE会触发触发器。 4、当表被清空后表和表的索引和自增主键将重新设置成初始大小,而delete则不能。
查询操作search
1.单表查询
单表查询(https://www.cnblogs.com/Eva-J/articles/9688313.html)
2.联表查询
多表查询(https://www.cnblogs.com/Eva-J/articles/9688383.html)
-- 关键字 as -- 起别名 -- select name as '姓名' from 表名 distinct -- 去重 -- select distinct 字段名,字段名 from 表名
-- 注意:null 和 空字符 -- null select * from 表名 where 字段名 is null; -- 无法查找出空字符 select * from 表名 where 字段名 is not null; -- 无法查找出空字符 --空字符 select * from 表名 where 字段名 = '' -- 无法查找出null -- 实现同时查找空字符和null select * from 表名 where 字段名 is null or 字段名 = ''
-- 模糊查询 -- 关键字 like 、not like % -- 任意多个字符 _ -- 下划线表示单个字符 -- 一个下划线代表一个占位符
-- 排序查询 -- 关键字 -- order by -- asc --默认使用正序 -- desc --倒叙 select * from 表名 oder by 字段名 desc; # 中文不支持排序,但可以强制中文排序 必须指定一个编码格式UTF8不支持排序要转为GBK select * from 表名 order by convert(字段名 using gbk);
-- 解决MySQL中文乱码 -- 先查询使用的是什么编码 show variables like 'char%'; #修改方法: #1. 创建my.ini文件,放在mysql根路径下 #2. 在该文件中添加以下内容即可: #3.添加此文件后需要重新启动服务,以保证此文件生效 ------------------------------------------------------------ [client] default-character-set=utf8 [mysql] #设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 #允许最大连接数 max_connections=200 #服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 #创建新表时将使用的默认存储引擎 default-storage-engine=INNODB #解决mysql在执行sql语句后出现1055错误,sql_mode = only_full_group_by不相容 sql_mode='NO_ENGINE_SUBSTITUTION'