mysql增删改查语法
MySQL
关注公众号“轻松学编程”了解更多。
MySQL是关系型数据库,对大小写不敏感。
MySQL属于关系型数据库,
优点:
- 复杂查询
- 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
- 事务支持
- 使得对于安全性能很高的数据访问要求得以实现。
缺点
- 开发维护成本高
- 刻板、欠灵活、存储空间大
- 低访问速度
- 可扩展性差
一、常用数据类型
1、数值型
1.1 整型
int或integer:占4字节(一个字节8位),可以表示的范围:-232到+232(40多亿)。
bigint,占8字节,
1.2 浮点
float:占4字节,可以表示6到7位小数。
double:占8字节,可以表示15到16位小数。
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 字节 | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 字节 | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 字节 | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 字节 | (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT | 4 字节 | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度浮点数值 |
DOUBLE | 8 字节 | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) | 双精度浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
2、字符串型
2.1 字符串
char:占1字节,最多表示256个字节。定长。利于索引,但由于定长所以有时会导致磁盘空间浪费。
varchar:不定长,最多表示65536个字节,由于不定长所以不利于索引,可以节省空间。
######2.2 大字符串
text:表示范围0-65 535字节,一般用来保存一篇博文或短文。
longtext:表示范围40亿字节+,一般用来保存小说等。
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-65535 字节 | 变长字符串 |
TINYBLOB | 0-255字节 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
BLOB | 0-65 535字节 | 二进制形式的长文本数据 |
TEXT | 0-65 535字节 | 长文本数据 |
MEDIUMBLOB | 0-16 777 215字节 | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295字节 | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
二进制文本:blob,最多65535字节,longblob最大存储字节达到40亿+,理论上可以存大文件的原始字节,可以用来存放一部电影。
3、时间日期
类型 | 大小(字节) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | ‘-838:59:59’/‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD |
标准日期写法:20170901。
标准日期时间写法:20170901095200。
二、增删改查
MySQL对大小写不敏感。
1、登录数据库
打开cmd.exe输入(要设置环境变量:加入mysql.exe的路径):
mysql -u root -p
然后输入在安装MySQL时设置的密码。
2、显示数据库
show databases;
3、创建数据库
create database china charset=utf8;
4、使用数据库
use china;
5、创建表
#创建省份表
create table t_provinces(proId int primary key auto_increment,
proName varchar(50) not null ,ProSort int,ProRemark nvarchar(50));
#创建城市表
create table t_citys(cityId int primary key auto_increment,
cityName varchar(50) not null,proId int,citySort int);
#创建县区表
create table t_districts(id int primary key auto_increment,
disName varchar(30) not null,cityId int,disSort int);
6、查看所有表
show tables;
7、显示表结构
desc t_provinces;
8、增加表记录
insert into t_provinces(proName,proSort,proRemark)
values('北京市','1','直辖市');
9、查看表所有记录
select * from t_provinces;
10、修改表记录
update t_provinces set proName = '天津市' ,proSort = 2 where proId = 1;
11、修改表结构
11.1 增加字段
alter table 表名 add 字段名 字段类型 字段约束。
alter table t_provinces add nickName varchar(20) null;
11.2 修改字段名
alter table 表名 change 旧字段名 新字段名 新类型 新约束。
alter table t_provinces change nickName shortName varchar(10) null;
11.3 修改字段类型/约束
alter table 表名 modify 字段名 新的类型 新的约束。
alter table t_provinces modify shortName char;
11.4 增加索引
ALTER table t_provinces ADD INDEX short_name_index(shortName );
11.5 删除字段
alter table t_provinces drop shortName;
12、删除
删除数据库:drop database 数据库名;
删除表:drop table 表名;
删除表记录:delete from 表名 where 条件。
上面的是物理删除,即一旦删除就没有了,实际上一般用逻辑删除,即添加一个字段isDelete(值为0或1),0表示不删除,1表示删除,以此达到删除的目的,在数据库中仍然保留数据。
三、字段约束
1、主键:PRIMARY KEY
#主键是唯一不重复的,一般与自增auto_increment一起用
create table t_provinces(proId int primary key auto_increment);
2、自增:AUTO_INCREMENT
#从1开始,每增加一条记录,绑定该约束的的字段会自增1
create table t_provinces(proId int primary key auto_increment);
#proId在增加记录时会自加1
3、非空:NOT NULL
#在增加记录时,绑定该字段后,该字段必须填值
insert into t_provinces(proName) values('北京市');
#在创建表时,proName设置了not null
4、默认:DEFAULT
#可以设置default 0 ,当增加记录时,绑定该约束的字段如果没给值,则给默认值0
create table school(id int primary key auto_increment,
name varchar(30),openTime datetime default 20180319090000);
5、唯一:UNIQUE
#值不可重复
alter table school modify name varchar(20) not null unique;
四、查询
1、order by
按照字段名对查询结果进行排序
#ORDER BY 字段名 ASC 升序
SELECT * FROM t_citys ORDER BY proid ASC;
#ORDER BY 字段名 DESC 升序
SELECT * FROM t_citys ORDER BY proid DESC;
2、limit
取前若干条记录
select * from t_citys limit 3;
3、like
字段名 like ‘%某字符串%’ :判断字段名中的值是否包含某字符串。‘%’表示可变字符。
select * from t_citys where cityName like '%名%';
select * from t_citys where cityName like '石%';
select * from t_citys where cityName like '%京市';
4、逻辑运算符(in,and,or,between)
in:判断结果是否落在指定范围内
#把proid的值是1或2时的记录查询出来
SELECT * FROM t_citys WHERE proId IN (1,2);
and:与
SELECT * FROM t_citys WHERE proId > 1 AND proId < 3;
or:或
SELECT * FROM t_citys WHERE proId = 1 or proId = 3;
between 值1 and 值2:在 值1与 值2之间
SELECT * FROM t_citys WHERE proId between 1 and 3;
5、group by
group by 字段名:按照字段名进行分组。对分组的结果进行统计筛选,一般用来计数、求最大\小值、平均值。
having:分组后的筛选条件
where:是分组前的条件筛选
#查找城市数量大于17的省份
SELECT tp.proname ,temp.qty AS ccityQty
FROM(
SELECT proid, COUNT(cityid) qty
FROM t_citys
GROUP BY proid
HAVING qty>17
) temp JOIN T_Provinces tp
ON temp.proid = tp.proid;
6、数据库函数
count(col) :计算col中的记录数;
max(col),min(col):求col中的最大值和最小值;
avg(col):求col中的平均值;
sum(col):求和。
#求每个省中的城市数量:先以省份proid分组,然后分别计算每组中有多少个cityid。
SELECT COUNT(cityid) FROM t_citys GROUP BY proid LIMIT 4;
SELECT max(cityid) FROM t_citys GROUP BY proid;
#查找拥有最多城市的省份
SELECT tp.proname ,temp.qty AS ccityQty_max
FROM
(
SELECT proid, COUNT(cityid) qty
FROM t_citys
GROUP BY proid
) temp JOIN T_Provinces tp
ON temp.proid = tp.proid
WHERE temp.qty = (
SELECT COUNT(cityid) qty
FROM t_citys
GROUP BY proid
ORDER BY qty DESC
LIMIT 1
);
#字段名1 as 字段名2:意思是字段名1的别名为字段名2。注:as 可以省略
#join在下面有讲到
五、多表联合查询
1、union
子表A union 子表B:整合字段数量相同的子查询。
#把表A查询出的结果好表B查询出的结果整合到一张表中
SELECT proid FROM t_provinces WHERE proid<3
UNION
SELECT cityname FROM t_citys WHERE proid<3 ;
2、join
2.1 A (inner) join() B
内连接:求两个表的交集,inner可省略。
#通过proid来查找t_provinces和t_citys的交集
SELECT tp.proname,tc.CityName FROM t_provinces tp
JOIN
t_citys tc
ON tc.proid=tp.ProID
WHERE tc.proid < 3;
2.2 A left join() B
左连接LEFT JOIN的含义就是求两个表的交集外加左表剩下的数据。
2.3 A right join() B
右连接RIGHT JOIN就是求两个表的交集外加右表剩下的数据。
#查找广东省茂名市所有县区
SELECT * FROM(
SELECT tc.cityid,tp.proname,tc.cityname FROM t_provinces tp
JOIN
t_citys tc
ON tp.proid = tc.proid
WHERE ProName="广东省"
) temp
JOIN
t_districts td
ON temp.cityid = td.cityid
WHERE temp.cityname = "茂名市";
六、允许远程主机连接本地Mysql服务器
打开命令窗口,输入:
#123456为mysql密码mysql -u root -p123456>>>use mysql;>>>update user set host='%' where user='root';>>>flush privileges;
版本5.7以后
mysql -u root -p123456>>>use mysql;>>>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;>>>flush privileges;
后记
【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。
也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!
公众号
关注我,我们一起成长~~
mysql增删改查语法相关推荐
- MySQL—增删改查,分组,连表,limit,union,alter,排序,去重
MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充#增加:#insert i ...
- mysql增删改查,连表,排序,等
(mysql增删改查,连表,排序,等,)–教学来自(bilibili狂神!)(笔记是自己学习过程中纯手写,由于是直接复制笔记,有些可以忽略) (学习方法"先理解,在敲一遍"之后复习 ...
- Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法)
Database之SQL:自定义创建数据库的各种表demo集合(以方便理解和分析sql的各种增删改查语法的具体用法) 目录 自定义创建数据库的各种表demo集合 具体案例 1.学生信息数据表案例
- koa2 mysql增删改查_koa2实现对mysql的增删改查函数封装
// 项目开始先造一个简单的node服务器server.js: const Koa = require('koa'); const Path= require('path'); const Stati ...
- python pymysql实例_Python使用pymysql模块操作mysql增删改查实例分析
Python使用pymysql模块操作mysql增删改查实例分析 发布时间:2020-09-30 16:42:12 来源:脚本之家 阅读:92 本文实例讲述了Python使用pymysql模块操作My ...
- mysql 增删改查时的错误解决方法大全
mysql 增删改查时的错误解决方法大全 信息1:Error: Access denied for user: 'linanma@localhost' (Using password: YES ...
- Mysql增删改查sql语句练习
Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...
- mysql增删改查,模糊查询及链表(一)
在Nodejs中mysql增删改查及链表 欢迎点击: 个人官网博客 1.连接mysql数据库 let mysql=require('mysql') let connextion=mysql.creat ...
- 运维之道 | MySQL增删改查插入必会命令大全
MySQL增删改查插入必会命令大全 基本命令 1.登录mysql [root@localhost ~]# mysql -u root -p 2.查询当前所存在的库 MariaDB [(none)]&g ...
- 二进制安装mysql及MySQL增删改查
二进制安装mysql及MySQL增删改查 1. MySQL简介 2. MySQL的特点 3. 数据库在 Web 开发中的重要地位 4. 安装MySQL 4.1 首先需要下载MySQL的包 4.3 解决 ...
最新文章
- Python,Opencv cv2.Canny()边缘检测
- 第一回写的用arraylist模拟栈操作
- MySQL statefulset_Kubernetes进阶之StatefulSet有状态部署
- java多数做增删改查_Java 实现一个 能够 进行简单的增删改查的 超市管理系统
- Android香露刀之SeekBar之双管齐下
- win10使用自带虚拟机没有Hyper-V场景
- 流式数据分析_流式大数据分析
- 计算机应用技术试卷在线老师,《计算机应用技术》试卷B.doc
- python中的引用,Python里的引用和拷贝
- zoj3802:easy 2048 again(状压dp)
- 简单servlet和jdbc回顾
- 野外探路手机必备地图神器
- 人人都是创业者:视屏和企业合并连接怎么制作
- 官方示例(十):网页开发3D粒子系统实现降雨效果 ThingJS
- matlab实现手绘风格(简笔画风格、漫画风格)的曲线绘图
- 阿里云新ip某些地区无解析值
- GeoPandas入门 | 01-地理数据介绍
- 利用Anaconda配置环境(安装第三方库)
- JLINK和STlink使用SWD接口时连接或烧录出现故障解决问题根源解决办法
- 挫折中前行-aspera下载数据
热门文章
- Java语言实现word转PDF
- c#操作斑马打印机打印中文
- Mac与Linux SSH无密登陆(互信)
- 杂谈 之 闲来无事(三)
- java小说网站源码_基于java的小说网站代码(全)
- pcm5102a解码芯片音质评测_精品推荐:用家票选TOP 30款最佳便携式解码耳放(中)...
- @PostConstruct @DependsOn
- 兄弟 DCP-7055打印机硒鼓清零方法
- android viewholder静态,android – 静态ViewHolder并在使用RecyclerView时获取上下文
- codeblocks12.11汉化方法(汉化包的使用)