热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据库CRUD语句快速入门_MySQL

MySQL数据库CRUD语句快速入门
bitsCN.com
MySQL数据库CRUD语句快速入门 SQL语句sql语句,一种用于操作数据库的语言 数据库, 简单地理解为硬盘上的文件, 可以存放数据 sql 语句大致可以分类两大类 进入数据库的方法: 1. 命令行代码: 进入数据库C:/mysql -hlocalhost -P3306 -uroot -p123456 启动数据库 net start mysql 停止数据库net stop mysql 一、针对数据库database和表table的操作1、database和table的常见操作创建create 查看show 修改alter 删除drop // 创建一个数据库 create database mydb; // 查看所有的数据库库 show databases; // 删除 mydb drop database mydb; // 删除 user 表 drop table user; 针对表中的记录的操作 增 insert 删 delete 改 update 查 select 2 操作数据库创建一个名称为mydb1的数据库 create database mydb1; 创建一个使用utf-8字符集的mydb2数据库。 create database mydb2 character set utf8; 创建一个使用utf-8字符集,并带校对规则的mydb3数据库。 create database mydb3 character set utf8 collate utf8_general_ci; 查看当前数据库服务器中的所有数据库 show databases; 查看前面创建的mydb2数据库的定义信息,字符信息 show create database mydb2; 删除前面创建的mydb3数据库 drop database mydb3; 将mydb2的字符集修改为gbk alter database mydb2 character set gbk; // 备份数据库 use mydb2; create table a ( name varchar(20) ); // 插入数据 insert into a (name) values("zhangsan"); insert into a (name) values("wangwu"); // 备份数据库 mysqldump -uroot -proot mydb1 > d:/a.sql 这条命令跟mysql是一个级别的,所以不能在mysql下面使用。 // 删除 mydb2 drop database mydb2; // 恢复数据库 create database mydb22; source d:/a.sql // source 命令 指定一个sql脚本 关闭报错声音 Mysql –uroot –p123456 -b 3、操作表1. 创建表 创建员工表 Id 整形 name 字符型 sex 字符型或bit型 brithday 日期型 Entry_date 日期型 job 字符型 Salary 小数型 resume 大文本型 创建表: create table employee ( id int, name varchar(20), gender varchar(6), brithday date, entry_date date, job varchar(20), salary double, reshme text ); 2. 修改表 在上面员工表的基础上增加一个image列 alter table employee add image blob; 修改job列,使其长度为60 alter table employee modify job varchar(60); 删除sex列。 alter table employee drop sex; 表名改为users。 rename table employee to user; 修改表的字符集为utf-8 alter table user character set utf8; 列名name修改为username alter table user change column name username varchar(20); 查看所有表 show tables; 查看表的创建语句 show create table user; 查看表结构 desc user; 删除 user 表 drop table user; 4、针对表中数据的增删改查针对表中的数据操作无外乎四个:增删改查 crud create 1. insert语句 employee.sql create table employee ( id int, name varchar(20), sex varchar(10), birthday date, salary float, entry_date date, resume text ); // 向员工表插入三条记录 Insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(1,'zhangsan','male','1987-11-23',1500,'2010-2-18','good boy'); insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(2,'wangwu','male','1988-11-23',1200,'2010-2-18','good boy'); insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(3,'xiaohong','female','1983-11-23',1800,'2010-2-18','good girl'); insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(4,'赵楠','男','1986-11-23',3800,'2011-2-18','绝种好男人'); // 查看表的所有记录 select * from employee; // 查看数据使用的所有编码 show variables like 'character%'; // 修改客户端的编码 为 gbk set character_set_client=gbk; // 修改结果集的编码为gbk set character_set_results=gbk; // insert 语句的其他写法 create table a ( username varchar(20), password varchar(20) ); insert into a values('zs','111'); insert into a values('wangwu','2222'),('lisi','3333'); insert a values('aaa','bbb'); insert a (username) values('aaa'); 2. update语句 将所有员工薪水修改为5000元 update employee set salary=5000; 将姓名为’zhangsan’的员工薪水修改为3000元。 update employee set salary=3000 where name='zhangsan'; 将姓名为’lisi’的员工薪水修改为4000元,sex改为female。 update employee set salary=4000,sex='female' where name='wangwu'; 将xiaohong的薪水在原有基础上增加1000元 update employee set salary=salary+1000 where name='xiaohong'; 3. delete语句 删除表中name为’赵楠’的记录。 delete from employee where name='赵楠'; 删除表中所有记录。Delete是一条条的删,如果条目很多的话,会效率很低 delete from employee; 使用truncate删除表中记录。 摧毁表再创建表 尽量用这个 truncate employee; 4. select语句 student.sql create table student( id int, name varchar(20), chinese float, english float, math float ); insert into student(id,name,chinese,english,math) values(1,'张小明',89,78,90); insert into student(id,name,chinese,english,math) values(2,'李进',67,53,95); insert into student(id,name,chinese,english,math) values(3,'王五',87,78,77); insert into student(id,name,chinese,english,math) values(4,'李一',88,98,92); insert into student(id,name,chinese,english,math) values(5,'李来财',82,84,67); insert into student(id,name,chinese,english,math) values(6,'张进宝',55,85,45); insert into student(id,name,chinese,english,math) values(7,'黄蓉',75,65,30); 查询表中所有学生的信息。 select * from student; 查询表中所有学生的姓名和对应的英语成绩。 select name,english from student; 过滤表中重复数据。 select distinct english from student; 在所有学生分数上加10分特长分。 select name,english+10,chinese+10,math+10 from student; 统计每个学生的总分。 select name,english+chinese+math as sum from student; 使用别名表示学生分数。 where 子句 查询姓名为李一的学生成绩 select * from student where name='李一'; 查询英语成绩大于90分的同学 select * from student where english>90; 查询总分大于200分的所有同学 select name,english+chinese+math sum from student where english+chinese+math>200; 此处可以不用as 运算符 查询英语分数在 80-90之间的同学。 select * from student where english between 65 and 85; 查询数学分数为89,90,91的同学。 select name,math from student where math in(89,90,91); 查询所有姓李的学生成绩。 select * from student where name like '李%'; // 查询姓李的两个字的学生 select * from student where name like '李_'; 查询数学分>80,语文分>80的同学。 select * from student where math>80 and chinese>80; 查询英语>80或者总分>200的同学 select *,chinese+math+english from student where english>80 or chinese+english+math>200; order by 子句 对数学成绩排序后输出。 select * from student order by math; 对总分排序后输出,然后再按从高到低的顺序输出 select *,chinese+math+english from student order by chinese+math+english desc; 对姓李的学生成绩排序输出 order从句是需要放在where从句的后面 select *,chinese+math+english from student where name like '李%' order by chinese+math+english; 合计函数 count 统计一个班级共有多少学生? select count(*) from student; 统计数学成绩大于90的学生有多少个? select count(*) from student where math>90; 统计总分大于230的人数有多少? select count(*) from student where chinese+math+english>230; sum 统计一个班级数学总成绩? select sum(math) from student; 统计一个班级语文、英语、数学各科的总成绩 select sum(math),sum(chinese),sum(english) from student; 统计一个班级语文、英语、数学的成绩总和 select sum(math+chinese+english) from student; 统计一个班级语文成绩平均分 select sum(chinese)/count(*) from student; 缺考的不参与计算 select sum(chinese)/count(chinese) from student; avg 语文平均分 select avg(chinese) from student; max/min 语文最 高分 select max(chinese) from student; select语句(6) group by 订单表 create table orders( id int, product varchar(20), price float ); insert into orders(id,product,price) values(1,'电视',900); insert into orders(id,product,price) values(2,'洗衣机',100); insert into orders(id,product,price) values(3,'洗衣粉',90); insert into orders(id,product,price) values(4,'桔子',9); insert into orders(id,product,price) values(5,'洗衣粉',90); 将商品归类 select * from orders group by product; 显示单类商品总结 select *,sum(price) from orders group by product; 商品分类 显示单类商品总价大于100的 select *,sum(price) from orders group by product having sum(price)>100; // 将单价大于20 的商品进行归类显示 按照价格排序 select * from orders where price>20 group by product order by price; 5、表的约束表的约束就是在定义表时,我们可以在创建表的同时为字段增加约束,对将来插入的数据做一些限定 一、表的约束 表的约束就是在定义表时,为表中的字段加一些约束条件,对将来插入的数据做一些限定 1. 唯一约束 unique create table a ( id int, username varchar(20) unique, password varchar(20) ); insert into a (id,username,password) values(1,'zhangsan','1111'); insert into a (id,username,password) values(2,'wangwu','1111'); 2. 非空约束 not null create table b ( id int not null, name varchar(20) ); insert into b (id,name) values (1,'aaaa'); insert into b (id,name) values (1,'bbbb'); 3. 主键约束 相当于 唯一约束+非空约束 数据库中的每张表都应该至少有一个主键,通常是id create table c ( id int primary key, name varchar(20) ); insert into c(id,name) values (1,'aaaa'); insert into c(id,name) values (2,'bbbb'); create table d ( firstname varchar(20), lastname varchar(20), primary key(firstname, lastname) ); insert into d (firstname, lastname) values ('tom', 'cat'); insert into d (firstname, lastname) values ('tom', 'hks'); create table e ( id int , name varchar(20) ); insert into e (id,name) values(1,'aaa'); 为表加上主键约束 alter table e add primary key(id); 此处修改的命令: 修改job列,使其长度为60。 alter table employee modify job varchar(60); 删除主键约束 alter table e drop primary key; 4. 定义主键自动增长 这个的作用就是让id键随着条目的增加,自动往上增长。 注意主键类型必须是int,只有int类型的才可以自增 create table f ( id int primary key auto_increment, name varchar(20) ); insert into f(name) values ('aaa'); insert into f(id,name) values (11,'bbb'); mysql> select * from f; +----+------+ | id | name | +----+------+ | 1 | aaa | | 2 | aaa | | 3 | aaa | | 4 | aaa | | 11 | bbb | | 12 | aaa | | 13 | aaa | | 14 | aaa | | 15 | aaa | | 16 | aaa | +----+------+ 外键约束 约束力: 插入的外键值必须为被参照列存在的值 被参照表中被参照的数据不允许删除 注意:外键约束并没有非空和唯一的约束力 创建丈夫表和妻子表 create table husband ( id int primary key auto_increment, name varchar(20) ); create table wife ( id int primary key auto_increment, name varchar(20), husbandid int, constraint husbandid_FK foreign key(husbandid) references husband(id) ); 外界约束:Constraint是定义外键约束的,foreign key是外键的名称 参照某张表的主键 分别添加两条记录 insert into husband(name) values ('laobi'); insert into husband(name) values ('laoyu'); insert into wife(name,husbandid) values ('fengjie',2); insert into wife(name,husbandid) values ('furongjie',1); fengjie 找老公 select * from husband where id=(select husbandid from wife where name='fengjie'); delete from husband where name='laoyu'; 6 表的关系1 多对一 创建部门表 create table department ( id int primary key auto_increment, name varchar(20) ); 添加三个部门信息 insert into department(name) values('开发部'); insert into department(name) values('销售部'); insert into department(name) values('人事部'); 创建员工表 create table employee ( id int primary key auto_increment, name varchar(20), departmentid int, constraint departmentid_FK foreign key(departmentid) references department(id) ); 添加六个员工信息 insert into employee(name,departmentid) values ('张三',1); insert into employee(name,departmentid) values ('李四',1); insert into employee(name,departmentid) values ('王五',2); insert into employee(name,departmentid) values ('赵六',3); insert into employee(name,departmentid) values ('田七',3); insert into employee(name,departmentid) values ('周八',null); 多表的查询 查出1号部门所有的员工 select * from employee where departmentid=1; 查出开发部所有的员工 select * from employee where departmentid=(select id from department where name='开发部'); 查出赵六在那个部门 select * from department where id=(select departmentid from employee where name='赵六'); -------------------------------------- 联合查询 查出开发部所有的员工 select * from department,employee; +----+--------+----+------+--------------+ | id | name | id | name | departmentid | +----+--------+----+------+--------------+ | 1 | 开发部 | 1 | 张三 | 1 | | 2 | 销售部 | 1 | 张三 | 1 | | 3 | 人事部 | 1 | 张三 | 1 | | 1 | 开发部 | 2 | 李四 | 1 | | 2 | 销售部 | 2 | 李四 | 1 | | 3 | 人事部 | 2 | 李四 | 1 | | 1 | 开发部 | 3 | 王五 | 2 | | 2 | 销售部 | 3 | 王五 | 2 | | 3 | 人事部 | 3 | 王五 | 2 | | 1 | 开发部 | 4 | 赵六 | 3 | | 2 | 销售部 | 4 | 赵六 | 3 | | 3 | 人事部 | 4 | 赵六 | 3 | | 1 | 开发部 | 5 | 田七 | 3 | | 2 | 销售部 | 5 | 田七 | 3 | | 3 | 人事部 | 5 | 田七 | 3 | | 1 | 开发部 | 6 | 周八 | NULL | | 2 | 销售部 | 6 | 周八 | NULL | | 3 | 人事部 | 6 | 周八 | NULL | +----+--------+----+------+--------------+ 笛卡尔集 多张表的所有记录的排列组合 笛卡尔集当中有很多部匹配的数据(参照表外键列的值和被参照表主键的值不一致) 为了方便 以下称为废数据 加条件去掉废数据 select * from department,employee where employee.departmentid=department.id; 加条件做查询 select * from department,employee where employee.departmentid=department.id and department.name='开发部'; 优化 给表加别名 只保留需要的数据 select e.* from department d,employee e where e.departmentid=d.id and d.name='开发部'; 查出赵六在那个部门 select d.* from department d,employee e where e.departmentid=d.id and e.name='赵六'; 2. 多对多 创建老师表 create table teacher ( id int primary key auto_increment, name varchar(20) ); 添加三个老师 insert into teacher(name) values ('老方'),('老余'),('老毕'); create table student ( id int primary key auto_increment, name varchar(20) ); 添加三个学生 insert into student(name) values('大毛'),('二毛'),('三毛'),('四毛'),('五毛'),('六毛'),('七毛'),('八毛'),('小毛'); 创建中间表描述关系 create table tea_stu ( teaid int, stuid int, primary key(teaid,stuid), constraint teaid_FK foreign key(teaid) references teacher(id), constraint stuid_FK foreign key(stuid) references student(id) ); 添加数据 insert into tea_stu (teaid,stuid) values (1,1),(1,2),(1,4),(1,5),(1,6),(1,8),(2,1),(2,3),(2,5),(2,7),(2,9),(3,2),(3,3),(3,4), (3,5),(3,6),(3,7),(3,8); 查询2号老师教过的学生 select s.* from student s,tea_stu ts where ts.stuid=s.id and ts.teaid=2; 查询老余教过的所有的学生 select s.* from student s,tea_stu ts,teacher t where ts.stuid=s.id and ts.teaid=t.id and t.name='老余'; 多表联合查询 查询的结果为笛卡尔集 n张表联合查需要n-1个条件来去掉废数据 去掉废数据的条件 参照表的外键列=被参照表的主键列 再加上查询条件即可得到结果 3. 一对一 create table person ( id int primary key auto_increment, name varchar(20) ); create table idcard ( id int primary key, location varchar(20), constraint personid_FK foreign key(id) references person(id) ); insert into person (name) values('zhangsan'); insert into person (name) values('lisi'); insert into idcard (id,location) values(2,'天津'); insert into idcard (id,location) values(1,'上海'); 查李四的身份证 select idcard.* from person,idcard where idcard.id=person.id and person.name='lisi'; bitsCN.com
推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
author-avatar
l沈佩玉iVf
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有