MySQL数据类型/属性/增删改查(14)

MySQL数据类型

  • 日期类型

·date

date数据类型负责存储日期信息(1000-01-01到9999-12-31)
可以使用数字和字符串插入(20180809或"2018-08-09")非数字或字母使用分隔符

·datetime

datetime数据类型负责存储日期和时间信息的组合(1000-01-01 00:00:00到9999-12-31 23:59:59)
可以使用数字和字符串插入(20180809122556或"2018-08-09 12:25:56")

·time

time数据类型负责存储时间信息(-838:59:59到838:59:59)

·timestame

timestame自动获取当前的日期和时间

  • 数值数据类型

·bool和boolean

bool和boolean只是tinyint(1)的别名

·tinyint

tinyint数据类型是MySQL排名第五的整数范围(无符号值:0~255 有符号值:-128~127)

·smallint

smallint数据类型是MySQL排名第四的整数范围(无符号值:0~65535 有符号值:-32768~32767)

·mediumint

mediumint数据类型是MySQL排名第三的整数范围(无符号值:0~16777215 有符号值:-8388608~8388607)

·int

int数据类型是MySQL排名第二的整数范围(无符号值:0~4294967295 有符号值:-2147483648~2147483647)

·bigint

bigint数据类型是MySQL排名第一的整数范围(无符号值:0~18446744073709511615 有符号值:-9233372036854755808~9233372036854755807)

·decimal

decimal数据类型是存储为字符串的浮点数(无符号值:2.2250738585072014E-308~1.7976931348623157E+308 有符号值:-1.7976931348623157E+308~2.2250738585072014E-308)

·double

double数据类型是双精度浮点数(无符号值:2.2250738585072014E-308~1.7976931348623157E+308 有符号值:-1.7976931348623157E+308~2.2250738585072014E-308)

·float

float数据类型是单精度浮点数(无符号值:1.175494351E-38~3.402823466E+38 有符号值:-3.402823466E+38~-1.175494351E-38)

浮点型比如:double(M,D) M存储数值的个数,D小数的位数

  • 字符串数据类型

·char

char数据类型为MySQL提供了固定的长度,支持最大255个字符,如果插入的字符不足占用length指定的长度,剩余部分用空格填充

·varchar

varchar数据类型是MySQL的可变长度,支持长度为65536个字符,会保留尾部的空白部分

·longblob(longtext非二进制)

longblob数据类型是MySQL以二进制字符串表示形式,支持长度4294967259个字符

·mediumblob(mediumtext非二进制)

mediumblob数据类型是MySQL二进制字符串表示形式,支持长度16777215个字符

·blob(text非二进制)

blob数据类型是MySQL二进制字符串表示形式,支持长度65535个字符

·tinyblob(tinytext非二进制)

tinyblob数据类型是MySQL二进制字符串表示形式,支持长度255个字符

MySQL属性

  • primary key

主键,只能出现一次

创建自动增加主键

create table xiu (
    id smallint not null auto_increment
)

创建单字段主键

create table xiu (
    id varchar(255),
    primary key(id)
)

创建多字段主键

create table xiu (
    id varchar(255) not null,
    age  varchar(255) not null,
    primary key(id,age)
)
  • not null

不能为空

  • auto_increment

自动增长

  • binary

区分大小写

  • unique

只能出现一次,null可以多次出现

  • national

确保使用默认字符集

  • default

确保没有任何值可用的情况下,赋予某个常量值

  • zerofill

前导,用0填充

  • unsigned

设置负号

操作数据库

  • 查看数据库
show databases;//查看所有数据库
  • 添加数据库
create database xiu;//添加名为xiu的数据库
  • 删除数据库
drop database xiu;//删除名为xiu的数据库
  • 默认数据库
use xiu;//默认为xiu数据库

操作数据库表

  • 添加表
create table xiu (
    id tinyint primary key auto_increment,//主键,自增
    name varchar(20) not null,//不能为空
    age int not null//不能为空
)
  • 查询表
show create table xiu;//查询xiu表
  • 重命名
rename table xiu to kang;//将xiu表重命名为kang表
  • 删除表
drop table xiu;//删除xiu表

操作数据库字段

  • 添加一个列
alter table xiu add column kang varchar(10);
  • 修改一个列
alter table xiu change kang kang varchar(10) not null;
  • 删除一个列
alter table xiu drop birdate;
  • 重命名一个列
alter table kang change age sex varchar(10);

数据的操作

  • 添加一条数据
insert into xiu values(1,"name","age");
  • 指定字段添加值
insert into xiu (name,age) values ("name","age");//因为主键是自增,所以可以不用添加id字段
  • 查看数据
select * from xiu;//*代表查询所有字段,也可以指定字段查询
  • 修改数据
update xiu set name="user" where id=1;//将id=1的数据的name字段的值修改为"user"
  • 删除数据
delete from xiu where id = 1;//删除id为1的数据

 添加查询

  • 字段与值相等

=

(查询xiu表的数据,条件为name="user")

select * from xiu where name = "user";
  • 同时满足两个条件

and

(查询xiu表的数据,同时满足这两个条件name="user",age=18)

select * from xiu where name="user" and age=18;
  • 满足任意条件

or

(查询xiu表的数据,满足其中一个条件name="user",age=18)

select * from xiu where name="user" or age=18;
  • 该字段与值相等

in

(查询xiu表的数据,满足其中任一条件age=24,age=18)

select * from xiu where age in(24,18);
  • 该字段与值不相等

not in

(查询xiu表的数据,不满足其中任一条件age=24,age=18)

select * from xiu where age not in(24,18);
  • 该字段满足是该值,主要判断空值

is

(查询xiu表的数据,条件为age=null)

select * from xiu where age is null;
  • 该字段不满足该值 is not 值

(查询xiu表的数据,条件为age!=null)

select * from xiu where age is not null;
  • 模糊查询需要通配符

like

‘_’:表示占一位

‘%’:表示占零位或者多位

(查询xiu表的数据,条件为name值的第二个字符为s)

select * from xiu where name like("_s%");
  • 模仿查询,需要通配符‘_’‘%’

not like

(查询xiu表的数据,条件为name值的第二个字符不为s)

select * from xiu where name not like("_s%");
  • 范围查询

between

(查询xiu表的数据,条件为age的值的范围是10-30的数)

select * from xiu where age between 10 and 30;
  • 去除重复

distnct

(查询xiu表的name字段,条件为删除重复的name值)

select distinct name from xiu;

排序

  • 升序

order by ... asc

(查询xiu表的数据,按照age从小到大排序)

select * from xiu order by age asc;
  • 降序

order by ... desc

(查询xiu表的数据,按照age从大到小排序)

select * from xiu order by age desc;

截取

limit

(查询xiu表的数据,获取第一条数据开始的三条的数据)

select * from xiu limit 0,3;

聚合函数

  • avg平均值
  • max最大值
  • min最小值
  • sum和
  • count(空值不计数)数据条数

(获取xiu表中name字段有多少条数据)

select count(name) from xiu;

分组

group by

where后不能直接添加聚合函数

(将xiu表按字段age进行分组,然后获取每个组最大的id)

select max(id) from xiu group by age;

过滤

having

(获取每个组最大的id,且id不能为2)

select * from xiu group by age having id != 2;
  • where与having的区别

where在group by之前,针对每一行的数据

having在group by之后,针对每一组的数据

外键约束

 ··········································································续写中。。。。。。。

foreign key(从表字段)references 主表名(主表主键)

外键的查询

show create table 表名

外键的删除

alter table 表名 drop foreign key 外键名

外键的添加

alter table 表名 add foreign key(从表字段)references 主表名(主表主键)

主表更新

on update

主表删除

on delete

允许的级联

cascade 如果主表被更新或删除,那么从表也会执行相应操作

set null如果表名删除或更新,那么从表变成null

restrict拒绝主表的相关操作 默认值

⊙⊙别名

as 名

as可以省略

⊙⊙多表

select a.字段1,b.字段2 from 表名1 as a,表名2 as b

⊙⊙子查询

按位置分

where型

from型

exists型 了解(判断是否存在)

按结果分

一个值 :标量子查询 可以使用 = < > !=

一列值 :列子查询

in满足集合中任意一个条件即可

not in不满足集合中的条件

=any相当于in

<any小于集合中的最大值

>any大于集合中的最小值

!=any不等于集合中的值

=all等于集合中的所有值

<all小于集合中的最小值

>all大于集合中的最大值

!=all相当于not in

一行值

需要加(字段1,字段2...)字段个数与子语句查询的结果相关

多行多列

需要为该表添加别名

⊙⊙内置函数

数学方法

floor(x):返回x的整数部分

round(x,y)四舍五入,y,保留了的小数位数。

字符串

length(str):求出字符串的长度,以字节为单位。

substring(str,b,e):b下标(从1开始)。b:开始位置 e:截取个数

substr(str,x):从下标x开始截取。

lower(str):转小写

upper(str):转大写

trim(str):去除所有空格

ltrim(str):去除左边的空格

rtrim(str):去除出右边空格

时间日期

now():当前系统时间

date_format();时间的格式化

%Y:四位数的年 %y:二位数的年

%M:英文月份   %m:数字的月份

dayname():返回当前日期的星期几

dayofweek():返回当月中,每周的第几天,结果为1-7,从周日开始算。

dayofyear():返回一年中的第多少天。

dayofmonth():一个月中的第多少天

datediff(date1,date2): 计算两个日期之间的时间差,单位是天。

⊙⊙连接查询 :多表的操作

内连接  inner join(inne可以省略)

on    表示连接时就判断,不生成笛卡尔集

左表名 inner join 右表名 on 条件

where 表示先生成笛卡尔集,在进行过滤

左表名 inner join 右表名 where 条件

using 前提 拥有相同的字段名

左表名 inner join 右表名 using(字段)

外链接  outer join(outer可以省略)外连接必须添加条件

左连接  没有连接成功,左表数据保留,右表用空值代替

左表名 left outer join 右表名 on/using 条件

右连接  没有连接成功,左表用空值代替,右表数据保留

左表名 right outer join 右表名 on/using 条件

全连接 full join

mysql暂不支持

可以使用   (左连接)union(右连接)  实现相同效果

自然连接 natural join

natural join 有相同字段,类似于using

natural left join 有相同字段,类似于左连接的using

natural right join 有相同字段,类似于右连接的using

笛卡尔连接

连接时没有添加条件

一张表的数据与另外一张表的所有数据连接

原文地址:https://www.cnblogs.com/xiukang/p/8569966.html

时间: 2024-07-31 08:09:34

MySQL数据类型/属性/增删改查(14)的相关文章

java jdbc 连接mysql数据库 实现增删改查

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的

【Mysql】Java中对Mysql数据库的增删改查、Java的System类

这部分也是所谓JDBC.网站数据源的内容,把名字弄得很高深似得,实际上只是Java中对Mysql数据库的增删改查的内容.非常简单,之前写了这么多Mysql的内容,没好好总结一下,实在是不应该.今天就实现一个Java中对Mysql数据库的增删改查,随便带点Java取出当前系统的系统名与系统时间的知识,完成一个还算有点意思的小例子. 一.基本目标 首先,在Mysql数据库中有一张名为testtable的空表,id为自增列,username,class都是文本列,但是class里面都存放数字,也就是整

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码:

MYSQL所有的增删改查等等语句,作为程序员的你,够用了

MYSQL的常用命令和增删改查语句和数据类型 连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码]   创建数据库:create database [库名]   显示所有数据库: show databases;   打开数据库:use [库名]   当前选择的库状态:SELECT DATABASE();   创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......);   显示数据表字段:describe 表名; 

mysql数据库的增删改查语句

连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 显示所有数据库: show databases; 打开数据库:use [库名] 当前选择的库状态:SELECT DATABASE(); 创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......); 显示数据表字段:describe 表名; 当前库数据表结构:show tables; =============

java数据库(MySQL)之增删改查

1.查询数据 先救从简单的来吧,之前我们实现了将数据库表格信息读取到一个List集合中,数据库的查询,实 际上就是对这个集合的查询: 1 public class Show { 2 public static void main(String[] args) { 3 //获取之前的数据集合 4 List<User> list = Do.userlist(); 5 //foreach遍历这个集合 6 for (User user : list) { 7 //查询条件,查找user为tom的用户名

学习Mysql第二天--增删改查

跬步何以至千里 今天主要学习增删改查,坚持每天学习一点 增删改查主要还是记住命令以及语法. 增删改查命令中都需要有表名 增 insert into 表名 value(); 删 delete from 表明 where from 参数 = “”; 改 update 表名 set 参数 = "" where owner = ""; 查 select * from 表名; 查看数据表的结构 (参数 类型等) desc 表名; mysql数据类型(引用菜鸟教程) MySQL

mysql 命令行增删改查

1.mysql数据库的连接与关闭 连接数据库: mysql -h 服务器主机地址 -u 用户名 -p密码 关闭连接: 在任何时候输入exit或quit 2.创建新用户并授权 grant 权限 on 数据库.数据表 to 用户名@登录主机 identified by "密码" **登录主机是指定允许哪个主机登录,一般为了安全,就设为本地localhost **权限包括增删改查  select insert delete update 例:grant all privileges on b

Node 连接Mysql并进行增删改查

NPM: NPM的全称是Node Package Manager,类似于ruby的gem,Python的PyPL.setuptools,PHP的pear,是Nodejs中的包管理器.Nodejs自身提供了基本的模块.但是在这些基本模块上开发实际应用需要较多的工作.NPM上已经有近万个Nodejs库或框架,这些库从各个方面可以帮助Nodejs的开发者完成较为复杂的应用. 安装NPM(Unix下): curl http://npmjs.org/install.sh | sh 利用NPM安装Node模