数据库的增删改查sql语句_sql语句增删改查的基本命令

数据库的增删改查sql语句_sql语句增删改查的基本命令,第1张

数据库的增删改查sql语句_sql语句增删改查的基本命令 一文轻松学会Mysql数据库:DDL *** 作库表和DML语句增删改查表数据,全文特别详细,安装MYSQL数据请自行搜索,或者搜索我的头条文章有,,建议收藏+关注。


不迷路,用的时候找得到。


^_^学习目标能够理解数据库的概念能够安装MySql数据库能够使用SQL语句 *** 作数据库能够使用SQL语句 *** 作表结构能够使用SQL语句进行数据的添加修改和删除的 *** 作能够使用SQL语句进行条件查询数据能够使用SQL语句进行排序能够使用聚合函数能够使用SQL语句进行分组查询能够使用SQL语句进行分页查询第一章-数据库概述1. 知识点-数据库的介绍没有数据库之前,如果我们要进行数据存储,有几种方式:我们可以使用java集合等方式将数据保存在内存中,但是数据不能持久化保存,断电/程序退出,数据就清除了我们还可以将数据保存在普通文件中,可以持久化保存,但是查找,增加,修改,删除数据比较麻烦,效率低所以我们需要一个既可以持久化保存数据又可以方便 *** 作的地方来存储数据,这就是我们接下来要给大家介绍的数据库2.1 什么是数据库数据库(DataBase,DB):指长期保存在计算机的存储设备(硬盘)上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合. 还是以文件的方式存在服务器的电脑上的。


说白了就是数据的仓库, 用来保存数据的.2.2 常见的关系型数据库MySql :开源免费的数据库,中小型的数据库,已经被Oracle收购了。


MySql6.x版本也开始收费。


后来Sun公司收购了MySql,而Sun公司又被Oracle收购Oracle:收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MySql.DB2:IBM公司的数据库产品,收费的.银行系统中.SQLServer:MS公司.收费的中型的数据库.SyBase:已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.SQLite: 嵌入式的小型数据库,应用在手机端.知识点1:数据库结构数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。


为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。


数据库管理系统、数据库和表的关系如图所示:小结关系型数据库按行存储一个数据库下可以有多张表,一张表可以有多条记录一般情况下,一个项目对应一个数据库,一个实体类对应一张表,表中的每一条记录对应一个java对象知识点2-Sql介绍1.什么是sql?SQL:Structure Query Language。


(结构化查询语言),通过sql *** 作数据库( *** 作数据库, *** 作表, *** 作数据)SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准各数据库厂商(MySql,oracle,sql server)都支持ISO的SQL标准。


各数据库厂商在标准的基础上做了自己的扩展。


各个数据库自己特定的语法2.sql的语法每条语句以分号结尾(命令行里面需要),如果在navicat,java代码中不是必须加的。


SQL在window中不区分大小写,关键字中认为大写和小写是一样的3 sql的分类Data Definition Language (DDL数据定义语言) 如: *** 作数据库, *** 作表Data Manipulation Language(DML数据 *** 纵语言),如:对表中的记录 *** 作增删改Data Query Language(DQL 数据查询语言),如:对表中的查询 *** 作Data Control Language(DCL 数据控制语言),如:对用户权限的设置4.小结SQL:结构化查询语言,是关系型数据库的 *** 作标准,但是每个数据库又会有其独有的方言SQL分类:数据增删改–DML数据查询 — DQL数据库表 *** 作–DDL数据控制–DCL第四章-DDL *** 作数据库知识点-DDL *** 作数据库1.目标我们把Sql介绍完成了, 那下面就通过DDL *** 作数据库2.步骤创建数据库(掌握)查看数据库删除数据库(掌握)修改数据库数据库的其它 *** 作(掌握)3.讲解3.1创建数据库语法create database 数据库名 [character set 字符集][collate 校对规则]     注: []意思是可选的意思字符集(charset):是一套符号和编码。


练习创建一个数据库(默认字符集)create database web16db;创建一个day16_2的数据库,指定字符集为gbk(了解)create database web14_2 character set gbk;3.2查看所有的数据库3.2.1查看所有的数据库语法show databases; 3.2.2查看数据库的定义结构【了解】语法show create database 数据库名;查看web14_1这个数据库的定义show create database web14_1; 3.3删除数据库语法drop database 数据库名;删除web14_2数据库drop database web14_2;3.4修改数据库【了解】语法alter database 数据库名 character set 字符集;修改web14_1这个数据库的字符集(gbk)alter database web14_1 character set gbk;注意:是utf8,不是utf-8不是修改数据库名3.5其他 *** 作切换数据库, 选定哪一个数据库use 数据库名;   //注意: 在创建表之前一定要指定数据库. use 数据库名练习: 使用web14_1use web14_1;查看正在使用的数据库select database();4.小结创建数据库 create database db_name;修改数据库 alter database db_name;删除数据库 drop database db_name;查看数据库 show databases;第五章-DDL *** 作表知识点-创建表【重点】1.目标我们第四章已经把数据库的CRUD讲解完了,下面我们就学习创建表2.步骤创建表的语法介绍MySql常见的类型MySql约束3.讲解3.1语法create table 表( 列 类型 [约束], 列 类型 [约束] ... );3.2 类型整型 一般使用int 或者bigint,偶尔使用tinyint tinyint — byte smallint — short int — int bigint — long unsigned:表示无符号数字,最高位不表示正负zerofill:0填充,设置一个数字的长度,int(4): 存储1:0001tinyint 经常用于表示boolean类型 1表示true 0 表示false浮点/双精度型 默认的范围 float或者double指定范围 float(M,D) eg: float(4,2) 表达的范围: -99.99~99.99,M表示数字位长度,D表示小数位长度float(5,2):100.01字符串固定长度 char(n) eg: char(20), 最大能存放20个字符. ‘aaa’, 还是占20个字符的空间可变长度 varchar(n) eg:varchar(20), 最大能存放20个字符. ‘aaa’, 占3个字符的空间 插入数据时 数据需要使用单引号包起来一般使用varchar(n) 节省空间; 如果长度(eg:身份z)是固定的话 可以使用char(n) 性能高一点关于大文件一般在数据库里面很少存文件的内容, 一般存文件的路径一般不使用二进制存, 使用varchar(n)存文件的路径日期DATE 只有日期DATETIME 日期和时间 ,一般如果需要设置默认时间, 我们使用TimeStamp数据类型数值:tinyint int bigint double 字符串:char varchar 时间日期:datetime timestamp3.3 约束即规则,规矩 限制;作用:保证用户插入的数据保存到数据库中是符合规范的约束约束关键字主键primary key唯一unique非空not null约束种类:not null: 非空 ; eg: username varchar(40) not null username这个列不能有null值unique:唯一约束, 后面的数据不能和前面重复; eg: cardNo char(18) unique; cardNo 列里面不可以有重复数据primary key;主键约束(非空+唯一); 一般用在表的id列上面. 一张表基本上都有id列的, id列作为唯一标识的 auto_increment: ==自动增长,必须是设置了primary key之后,才可以使用auto_increment==id int primary key auto_increment; id不需要我们自己维护了, 插入数据的时候直接插入null, 自动的增长进行填充进去, 避免重复了.注意:先设置了primary key 再能设置auto_increment只有当设置了auto_increment 才可以插入null 自己维护 否则插入null会报错id列:给id设置为int类型, 添加主键约束, 自动增长或者给id设置为字符串类型,添加主键约束, 不能设置自动增长3.4练习创建一张学生表(含有id字段,姓名字段,性别字段. id为主键自动增长)CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, `name` VARCHAR(40) NOT NULL, sex INT);4.小结语法create table 表名( 列 类型 【约束】, 列 类型 【约束】);类型数值:int bigint double 偶尔使用tinyint字符:char(n) 固定长度 varchar(n) 可变长度时间:Date DateTime TimeStamp约束not null 非空unique 唯一primary key 主键(非空+唯一)auto_increment 自动增长iid可以设置成int类型, 设置成primary key, 添加auto_increment 作为记录唯一标识注意:列名:见名识义 多个单词用_拼接列类型:tinyint int bigint double char varchar datetime timestamp列约束: not null:不能为空 primary key:主键,限制表中的每一行都是唯一的,主键所在的列不能为空也不可以重复 unique key:唯一约束 限制当前列可以为null(只能出现一个),但是不能重复 primary key == unique key + not null列属性: auto_increment:自增 用在主键列上,并且该列为整型 zerofill:零填充 用在整型类型列上 unsigned:无符号,最高位不表示正负    1.auto_increment需要和primary key 一起使用    2.unsigned、zerofill不能和primary key一起使用知识点-查看表【了解】1.目标我们把表创建好了, 下面就来介绍查看表2.步骤查看当前数据库所有的表查看表的定义结构3.讲解3.1查看所有的表show tables;3.2查看表的定义结构语法desc 表名;练习: 查看student表的定义结构desc student;知识点-修改表【掌握】1.目标我们表创建好了, 如果要增加一列,要删除一列呢? 那下面就来讲解修改表2.步骤增加列修改列的类型约束修改列的名称,类型,约束删除列修改表名3.讲解3.1语法增加一列;alter table 表 add 字段 类型 约束;修改列的类型约束; alter table 表 modify 字段 类型 约束 ;修改列的名称,类型,约束;alter table 表 change 旧列 新列 类型 约束;删除一列; alter table 表名 drop 列名;修改表名 ; rename table 旧表名 to 新表名;3.2练习给学生表增加一个grade字段alter table student add grade varchar(20) not null;给学生表的sex字段改成字符串类型alter table student modify sex varchar(10);给学生表的grade字段修改成class字段alter table student change grade class varchar(20);把class字段删除alter table student drop class;把学生表修改成老师表(了解)rename table student to teacher4.小结修改表都是以alter table tb_name打头增加列 add修改列的类型 约束 modify修改列的名字 类型 约束 change删除列 drop修改表名 rename知识点-删除表【掌握】1.目标表创建好了, 我们还可以删除。


掌握表的删除2.步骤删除表3.讲解语法drop table 表名;把teacher表删除drop table teacher;4.小结删除表语法drop table 表名;创建表create table tb_name(列名 类型 约束 ,…);修改表add 、modify 、change 、 drop 、rename查看表show tables;desc tb_name;第六章-DML *** 作表记录-增删改【重点】准备工作: 创建一张商品表(商品id,商品名称,商品价格,商品数量.)create table product( pid int primary key auto_increment, //只有设置了auto_increment id列才可以赋值为null pname varchar(40), price double, num int);知识点-插入记录1.目标掌握插入记录2.步骤两种方式插入数据使用命令行 *** 作时候乱码的解决3.讲解方式一: 插入指定列, ==如果没有把这个列进行列出来, 以null进行自动赋值了==.eg: 只想插入pname, price , insert into t_product(pname, price) values(‘mac’,18000);insert into 表(列,列..) values(值,值..);注意: 如果没有插入了列设置了非空约束, 会报错的方式二: 插入所有的列insert into 表 values(值,值....);           eg:insert into product values(null,'苹果电脑',18000.0,10);insert into product values(null,'华为5G手机',30000,20);insert into product values(null,'小米手机',1800,30);insert into product values(null,'iPhonex',8000,10);insert into product values(null,'苹果电脑',8000,100);insert into product values(null,'iPhone7',6000,200);insert into product values(null,'iPhone6s',4000,1000);insert into product values(null,'iPhone6',3500,100);insert into product values(null,'iPhone5s',3000,100);insert into product values(null,'方便面',4.5,1000);insert into product values(null,'咖啡',11,200); insert into product values(null,'矿泉水',3,500);命令行插入中文数据报错:关闭服务, net stop MySql在数据库软件的安装目录下面, 修改配置文件 my.ini中客户端的编码为gbk重新打开命令行,开启服务, net start MySql4.小结语法插入特定的列insert into 表名(字段列表) values(值列表)插入所有的列insert into 表名 values(值,值,值....) 多行插入insert into 表名 values(值列表),(值列表),(值列表)...注意:插入特定的列没有赋值的列,系统自动赋为null(前提是当前列没有设置not null 约束)在插入指定列数据时,可以省略不插入的是一些(可以为空的列、设置默认值的列、设置AUTO_INCREMENT的列)。


列名与列值的类型、个数、顺序要一一对应。


值不要超出列定义的长度。


eg:password varchar(12) abcd123456789插入的日期和字符串,使用单引号括起来。


知识点-更新记录1.目标我们数据插入成功了, 还可以对已有的数据进行更新。


2.步骤更新数据3.讲解3.1语法update 表 set 列 =值, 列 =值 [where 条件]3.2练习将所有商品的价格修改为5000元update product set price = 5000;将商品名是Mac的价格修改为18000元UPDATE product set price = 18000 WHERE name = 'Mac';将商品名是Mac的价格修改为17000,数量修改为5UPDATE product set price = 17000,num = 5 WHERE name = 'Mac';将商品名是方便面的商品的价格在原有基础上增加2元UPDATE product set price = price+2 WHERE name = '方便面';4.小结语法update tb_name set 列1=值1[,列2=值2...] where条件注意实际工作中,where 条件必不可少,不可省略知识点-删除记录1.目标掌握记录的删除2.步骤使用delete删除使用truncate删除3.讲解3.1delete语法delete from 表 [where 条件]   注意: 删除数据用delete,不用truncate类型删除表中名称为’Mac’的记录delete from product where pname = 'Mac';删除价格小于5001的商品记录delete from product where price < 5001;删除表中的所有记录delete from product;3.2truncatetruncate table 表;4.小结删除记录delete from 表 【where 条件】 注意:实际开发中,where条件一定不能少delete 和truncate区别【面试题】 DELETE 删除表中的数据,表结构还在; 删除后的数据可以找回,一条一条的删除.TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。


删除的数据不能找回。


执行速度比DELETE快。


工作里面的删除 物理删除: 真正的删除了, 数据不在, 使用delete就属于物理删除逻辑删除: 没有真正的删除, 数据还在. 搞一个标记, 其实逻辑删除是更新 eg: del_flag 0存在 1删除工作里面一般使用逻辑删除用得多 ALTER TABLE product ADD del_flag TINYINT(4) DEFAULT 0 NOT NULL;# 逻辑删除UPDATE product SET del_flag=1 WHERE pid=3;第七章-DQL *** 作表记录-查询【重点】知识点-单表查询1.目标我们上面讲解了对数据的增删改, 下面就来重点讲解数据的简单查询.2.路径基本查询语法查询所有的列查询某张表特定列去重查询别名查询运算查询(+,-,*,/等)基本条件查询3.讲解3.1基本查询语法select [*] [列名 ,列名] [列名 as 别名 ...] [distinct 字段] from 表名 [where 条件] 3.2简单查询3.2.1 查询所有的列的记录语法select * form 表查询商品表里面的所有的列select * from product;3.2.2查询某张表特定列的记录语法select 列名,列名,列名... from 表查询商品名字和价格select pname, price from product;3.2.3 去重查询语法SELECT DISTINCT 字段名 FROM 表名;   //要数据一模一样才能去重去重查询商品的价格select distinct price from product;注意点: 去重针对某列, distinct前面不能先出现列名3.2.4 别名查询语法select 列名 as 别名 ,列名 from 表   //列别名 as可以不写select 别名.* from 表 as 别名     //表别名(多表查询, 看主页另外一篇Mysql高级)查询商品名称和商品价格,商品价格通过别名‘价格’来显示select pname , price as 价格 from product;3.2.5运算查询(+,-,*,/等)把商品名,和商品价格+10查询出来select pname ,price+10 from product;注意运算查询字段,字段之间是可以的字符串等类型可以做运算查询,但结果没有意义3.3条件查询3.3.1语法select ... from 表 where 条件 //取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回between…and… 区间查询eg: where price between 1000 and 3000 相当于 1000<=price<=3000 in(值,值..)-- 查询id为1,3,5,7的select * from t_product where id = 1select * from t_product where id = 3select * from t_product where id = 5select * from t_product where id = 7select * from t_product where id in(1,3,5,7)like 模糊查询 一般和_或者%一起使用_ 占一位% 占0或者n位name like '张%' --查询姓张的用户, 名字的字数没有限制name like '张_' --查询姓张的用户 并且名字是两个的字的and 多条件同时满足where 条件1 and 条件2 and 条件3or 任意条件满足where 条件1 or 条件2 or 条件33.3.2练习查询商品价格>3000的商品select * from product where price > 3000;查询id=1的商品select * from product where pid = 1;查询id<>1的商品select * from product where pid <> 1;查询价格在3000到6000之间的商品select * from product where price between 3000 and 6000;查询id在1,5,7,15范围内的商品select * from product where id = 1;select * from product where id = 5;select * from product where id = 7;select * from product where id = 15;select * from product where id in (1,5,7,15);查询商品名以iPho开头的商品(iPhone系列)select * from product where pname like 'iPho%';查询商品价格大于3000并且数量大于20的商品 (条件 and 条件 and…)select * from product where price > 3000 and num > 20;查询id=1或者价格小于3000的商品select * from product where pid = 1 or price < 3000;4.小结语法select [*]|[字段列表] from 表名 [where条件]select * from tb_name;条件where 条件between … and …inlike _|%知识点-排序查询1.目标能够使用SQL语句进行排序2.分析有时候我们需要对查询出来的结果排序显示,那么就可以通过ORDER BY子句将查询出的结果进行排序。


排序可以根据一个字段排,也可以根据多个字段排序,排序只是对查询的结果集排序,并不会影响表中数据的顺序。


3.讲解3.0 环境的准备# 创建学生表(有sid,学生姓名,学生性别,学生年龄,分数列,其中sid为主键自动增长)CREATE TABLE student( sid INT PRIMARY KEY auto_increment, sname VARCHAR(40), sex VARCHAR(10), age INT, score DOUBLE);INSERT INTO student VALUES(null,'zs','男',18,98.5);INSERT INTO student VALUES(null,'ls','女',18,96.5);INSERT INTO student VALUES(null,'ww','男',15,50.5);INSERT INTO student VALUES(null,'zl','女',20,98.5);INSERT INTO student VALUES(null,'tq','男',18,60.5);INSERT INTO student VALUES(null,'wb','男',38,98.5);INSERT INTO student VALUES(null,'小丽','男',18,100);INSERT INTO student VALUES(null,'小红','女',28,28);INSERT INTO student VALUES(null,'小强','男',21,95);3.1单列排序语法: 只按某一个字段进行排序,单列排序SELECT 字段名 FROM 表名 [WHERE 条件] ORDER BY 字段名 [ASC|DESC]; //ASC: 升序,默认值; DESC: 降序练习: 以分数降序查询所有的学生SELECT * FROM student ORDER BY score DESC3.2组合排序语法: 同时对多个字段进行排序,如果第1个字段相等,则按第2个字段排序,依次类推SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];练习: 以分数降序查询所有的学生, 如果分数一致,再以age降序SELECT * FROM student ORDER BY score DESC, age DESC4.小结排序的语法select * from tb_name where条件 order by 排序要使用的列[ASC|DESC [,第二列...]]order by 列 asc/desc, 列 asc/desc;asc: 升序【默认值】desc: 降序应用场景 商城里面 根据价格, 销量, 上架时间, 评论数… 社交里面 根据距离排序排序不改变表中数据的顺序,只是改变查询结果集的显示顺序知识点-聚合函数1.目标能够使用聚合函数2.分析之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是==纵向查询==,它是对一列的值进行计算,然后返回==一个结果值==。


聚合函数会忽略空值NULL聚合函数用于数学计算统计!3.讲解聚合函数作用max(列名)求这一列的最大值min(列名)求这一列的最小值avg(列名)求这一列的平均值count(列名)统计这一列有多少条记录sum(列名)对这一列求总和语法SELECT 聚合函数(列名) FROM 表名 [where 条件];练习-- 求出学生表里面的最高分数SELECT MAX(score) FROM student-- 求出学生表里面的最低分数SELECT MIN(score) FROM student-- 求出学生表里面的分数的总和(忽略null值)SELECT SUM(score) FROM student-- 求出学生表里面的平均分SELECT AVG(score) FROM student-- 统计学生的总人数 (忽略null) SELECT COUNT(sid) FROM studentSELECT COUNT(*) FROM student注意: 聚合函数会忽略空值NULL我们发现对于NULL的记录不会统计,建议如果统计个数则不要使用有可能为null的列,但如果需要把NULL也统计进去呢?我们可以通过 IFNULL(列名,默认值) 函数来解决这个问题. 如果列不为空,返回这列的值。


如果为NULL,则返回默认值。


4.小结语法select 聚合函数(列) from 表名;2.聚合函数 用于数学统计:max() 最大值min() 最小值sum() 求和avg() 平均值count() 统计数量:求一个表中的记录数,建议使用count(*)3.注意事项聚合函数会忽略null值的知识点-分组查询1.目标能够使用SQL语句进行分组查询2.分析分组查询是指使用 GROUP BY语句对查询信息进行分组GROUP BY怎么分组的? 将分组字段结果中相同内容作为一组,如按性别将学生分成两组==GROUP BY将分组字段结果中相同内容作为一组,并且返回每组的第一条数据,所以单独分组没什么用处。


分组的目的就是为了统计,一般分组会跟聚合函数一起使用==3.讲解3.1分组语法SELECT 字段1,字段2... FROM 表名 [where 条件] GROUP BY 列 [HAVING 条件];练习:根据性别分组, 统计每一组学生的总人数-- 根据性别分组, 统计每一组学生的总人数SELECT sex, count(*) FROM student GROUP BY sex3.2 分组后筛选 having练习根据性别分组, 统计每一组学生的总人数> 5的(分组后筛选)SELECT sex, count(*) FROM student GROUP BY sex HAVING count(*) > 54.小结分组语法select 分组列,分组统计结果 from 表 [where条件] group by 列 [having条件]注意事项根据某一列进行分组, 将分组字段结果中相同内容作为一组; 有几组 返回的记录就有几条单独分组 没有意义, 返回每一组的第一条记录分组的目的一般为了做统计使用, 所以经常和聚合函数一起使用在分组里面, 如果select后面的列没有出现在group by后面 展示这个组的这个列的第一个数据使用分组时,注意要进行查询显示的是分组列和分组统计结果。


where和having的区别【面试】子名作用where 子句1) 对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,即先过滤再分组。


2) where后面不可以使用聚合函数having字句1) having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤。


2) having后面可以使用聚合函数知识点-分页查询1.目标掌握分页查询2.分析LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数. 经常用来做分页查询3.讲解语法select ... from .... limit a ,b.LIMIT a,b;a:起始行数,从0开始计数,如果省略,默认就是0; a=(当前页码-1)*b;b: 返回的行数练习eg: 分页查询学生, 每一页查询4条  b=4;   a=(当前页码-1)*b;第一页: a=0, b=4;第二页: a=4, b=4;第三页: a=8, b=4;4.小结语法limit a,b; a:从第几条数据开始查询, 从0开始计数 【a=(当前页码-1)*b】b: 一页查询的数量【固定的,自定义的】应用场景如果数据库里面的数据量特别大, 我们不建议一次查询出来. 为了提升性能和用户体验, 使用分页查询的语法小结select...from...where...group by...order by...limitselect...from...where...select...from...where...order by...select...from...where...limit...select...from...where...order by...limitMysql进阶:多表联合查询,外键约束,多表间关系,连接查询,内连接查询,隐式内连接,事务特性和隔离级别

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/tougao/642772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-17
下一篇 2022-04-17

发表评论

登录后才能评论

评论列表(0条)

保存