MySQL库的相关操作
再熟悉一下Mysql库、表、记录的基本操作。
库 增 create database userinfo1 charset utf8; 查 show databases;
show create database userinfo1; 改 alter database userinfo1 charset gbk; 删 drop userinfo1; 表 use useronfo1 (切换到userinfo数据库下)
增 create table msg1 (id int,name char); 查 show tables;
show create table msg1;
desc msg1; 改 alter table msg1 modify name char(6); 删 drop table msg1; 记录 增 insert into msg1 values (1,'jason');
insert into msg1 values(2,'egon'),(3,'kevin'),(4,'tank'); 查 select * from msg1;
select name from msg1;
select * from msg1 where id > 1 and id < 3; 改 update msg1 set name = 'DSB' where name = 'egon'; 删 delete from msg1 where name = 'DSB';
存储引擎
不同的应用软件处理不同类型的数据
Mysql 5.5版本及以上默认的存储引擎是innodb
innodb:支持行锁表锁,外键,事物,安全性更高,较myisam数据更安全
memory:内存引擎,将所有的数据直接放在内存,一旦断电数据全部消失
blackhole:一切存入其中的数据都会消失 create table msg1(id int ,name char (16))engine = innodb;
一 、 创建表的完整语法:
#语法:
create table 表名(
字段名1 类型[ (宽度) 约束条件 ],
字段名2 类型[ (宽度) 约束条件 ],
字段名3 类型[ (宽度) 约束条件 ]
);
#在创建的时候有三点需要注意的地方
1、在一张表内字段名不能重复
2、字段和类型是必须要有的,而宽度和约束条件是可选的
3、最后一个字段后面不能加逗号
#宽度:对存储数据的限制
create database day38;
use day38;
create table t1(name char);
insert into t1 values('jason');
#1.能够成功但是显示的时候只显示一位(mysql默认是一位)
#2.第二种情况,直接报错
select * from t1;
#约束条件
create table t2(name char(16) not null);
#字段类型与约束条件之间的关系
字段类型限制的是存储数据的类型
约束条件是基于字段类型之上的附加的额外限制
二 、 整形(表)
分类:TINYINT SMALLINT MEDIUMINT INT BIGINT
作用:年龄,等级等信息
TINTINT默认有正负号
create table t3(id tinyint);
create table t4(id tinyint unsigned); # unsigned 为“无符号”的意思
int类型
create table t5(id int);
alter table t5 modify id int unsigned;
#给整形设置宽度
特例:唯独整形字段在设置宽度的时候,限制不是存储宽度而是显示宽度
creat table t6(id int(8)); #如果存入的数字够8位则正常显示,如果不够8位默认用空格填充
用0填充:create table t7(id int(8) zerofill);
在创建整形字段的时候,不需要指定字段宽度(整形的显示宽度)
like模糊查询
%:匹配任意数量的任意字符
_:匹配单个数量的任意字符
show variables like '%mode%';
#设置严格模式
set session:当前窗口下有效
set global:全局有效,终生受用!
set global sql_mode = ‘STRICT_TRANS_TABLES’;
#设置完成后需要退出客户端,重新登录客户端即可,不需要重启服务端
三 、 浮点型
分类:
float
double
decimal
作用:薪资,体重,身高
浮点类型(5,3) #总长度为5,其中小数占3位,整数占2位
float (255,30)
double (255,30)
decimal (65,30)
三者区别:
精度由低到高
float
double
decimal
create table t10(id float(255,30));
create table t11(id double(255,30));
create table t12(id decimal(65,30));
insert into t10 values(1.111111111111111111111111111111);
insert into t11 values(1.111111111111111111111111111111);
insert into t12 values(1.111111111111111111111111111111);
四、 字符类型
char :定长
varchar :变长
create table t13(name char(4)); #name 字段固定存储四个长度,如果超了直接报错,如果不够默认用空格填充
create table t14(name varchar(4)); #name字段如果超了直接报错,如果不够按实际长度存储
insert into t13 values('a'); 'a '
insert into t14 valuse('a'); 'a'
char_length(name) #统计字段值所对应的长度
select char_length(name) from t13;
select char_length(name) from t14;
#这个是修改操作
set global sql_mode =' strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH';
char VS varchar
char(4)定长
优点:存取速度都快,简单粗暴
缺点:浪费空间
varchar(4)变
给varchar类型的数据自动加上报头用来标识数据的长度
报头通常占1~2bytes
缺点:存取速度都慢
优点:节省空间
1bytes + egon 1bytes + jxx1bytes + lxx1bytes + oow
五 、日期类型
data年月日
time 时分秒
detetime 年月日时分秒
year 年
create table t15(
id int,
birth data,
class_time time,
reg_time detetime,
yy year
);
insert into t15 values(1,"2000-01-21","11:11:11","2019-01-21 11:11:11","2019");
六 、枚举与集合
枚举(enum):多选一
create table t16(
id int,
name char(6),
gender enum('male',;female','others')
);
insert into t16 values(1,'egon','xxx')
集合(set) :多选多(虽然是多选多,但是你仍然可以只选一个)
create table t17(
id int,
name char(6),
gender enum('male','female','others'),
hobby set('red','DJ','DBJ','run')
);
insert into t17 values(1,'tank','male','read,DBJ,DJ');
insert into t17 values(1,'tank','name','DBJ');
七 、约束条件
"""
primary key(pk) 标识该字段为该表的主键,可以唯一的标识记录
foreign key(fk) 标识该字段为该表的外键
not null 标识该字段不能为空
unique key(uk) 标识该字段的值是唯一的
auto_increment 标识该字段的值自动增长(整数类型,而且为主键)
default 为该字段设置默认值
unsigned 无符号
zerofill 使用0填充
"""
not null:限制字段不能为空
create table t20(id int,name char(4) not null);
default:设置字段默认值
create table t21(
id int,
name char(4),
gender enum('male','female','others')default 'male'
);
insert into t21 values(1,'egon'); #报错
insert into t21(id,name) values(1,'egon');
通常情况下not null 和default 是配合使用的
unique
某个字段对应的值在当前表中是唯一的
#单列唯一
create table t22(
id int unique, #单个地段
name char(16)
);
insert into t22 values(1,'egon'),(1,'tank');
服务器ip和port
#联合唯一
create table t23(
host char(16),
port int,
unique(host,port) #多个字段
);
insert into t23 values('127.0.0.1',8080),('127.0.0.1',8081);
insert into t23 values('127.0.0.1',8080),('127.1.1.1',8080);
insert into t23 values('127.0.0.1',8080),('127.0.0.1',8080);
primary key
九 、主键
单从限制条件上来说,它就相当于not null + unique 非空且唯一
crearte table t26(
id int primary key,
name char(16)
)engine = innodb;
innodb 引擎中,所有的表都必须有且只有一个主键,它是innodb 引擎用来组织数据的依据
强调(******)
1、一张表中必须有且只有一个主键,如果你没有设置主键,
那么会从上到先搜索知直到遇到一个非空且唯一的字段自动将其设置为主键
create table t25(
id int,
name char(16),
arg int not null unique
)engine = innodb;
desc t25;
2、如果表里面没有指定任何的可以设置为主键的字段,那么innodb会采用自己默认的一个隐藏字段作为主键,
隐藏意味着你在查询的时候无法根据这个主键字段加速查询了
索引:类似于书的目录,没有主键相当于一页一页翻着查
3、一张表中通常都应该有一个id字段,并且通常将改id字段改成主键
auto_increment:自增
create table t27(
id int primary key auto_increment,
name char(16)
);
# 联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键
create table t28(
ip char(16),
port int,
primary key(ip,port)
);
desc t28;
这里补充一点:
delete from tb1;
强调:上面的这条命令确实可以将表里的所有记录都删掉,但不会将id重置为0,
所以收该条命令根本不是用来清空表的,delete是用来删除表中某一些符合条件的记录
delete from tb1 where id > 10;
如果要清空表,使用truncate tb1;
作用:将整张表重置,id重新从0开始记录
MySQL库的相关操作的更多相关文章
- openresty 学习笔记四:连接mysql和进行相关操作
openresty 学习笔记四:连接mysql和进行相关操作 毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库.比如首次查询数据在red ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- PHP对MySQL数据库的相关操作
一.Apache服务器的安装 <1>安装版(计算机相关专业所用软件---百度云链接下载)-直接install<2>非安装版(https://www.apachehaus.com ...
- Deepin系统安装mysql教程及相关操作
Deepin系统安装mysql教程及相关操作 1.安装MySQL sudo apt-get install mysql-server,期间需要输入两次密码,root账户的密码. sudo apt-ge ...
- MySQL之记录相关操作
一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ...
- MySQL库表详细操作
昨天我们初始了MySQL,今天我们先从库表方面详细说一下具体操作 一.库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 ...
- mysql 库表的操作
MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf ...
- MySQL数据库---记录相关操作
序 表中记录的相关操作一共四种:插入,更新,删除.查询.其中使用最多,也是最难的就是查询. 记录的插入 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3… ...
- mysql 库与表操作
1. 库操作 1.1. 创建数据库 语法规则:create database 库名; CREATE DATABASE dt55; 在创建库时,希望指定编码语法:create database 库名 c ...
随机推荐
- springboot+jwt完成登录认证
本demo用于测试jwt,通过登录验证通过后,使用jwt生成token,然后在请求header中携带token完成访问用户列表信息. 准备工作: 1. 实体类SysUser.java package ...
- leetcode 384. Shuffle an Array
384. Shuffle an Array c++ random函数:https://www.jb51.net/article/124108.htm rand()不需要参数,它会返回一个从0到最大随机 ...
- ISO/IEC 9899:2011 条款6.9.1——函数定义
6.9.1 函数定义 语法 1.function-definition: declaration-specifiers declarator declaration-listopt ...
- spark sql插入表时的文件个数研究
spark sql执行insert overwrite table时,写到新表或者新分区的文件个数,有可能是200个,也有可能是任意个,为什么会有这种差别? 首先看一下spark sql执行inser ...
- 深度学习:21天实战caffe学习资源-4-环境安装
使用anaconda3环境下的python2.7, 机器macos mojave 10.14 1.安装Xcode 首先现在app store中安装Xcode: 不然会有” framework not ...
- centos的6.9版本安装mysql
用yum安装后,执行service命令启动: [root@centos ~]# yum install mysql-server Loaded plugins: fastestmirror, secu ...
- Qt Http get
1.直接建立连接,向网站发送http请求 QNetworkAccessManager *accessManager = new QNetworkAccessManager(this); connect ...
- ABAP DEMO 下拉框
效果展示: *&---------------------------------------------------------------------* *& Report YCX ...
- python解决排列组合
笛卡尔积:itertools.product(*iterables[, repeat]) import itertools for i in itertools.product('BCDEF', re ...
- 一些Python中的二维数组的操作方法
一些Python中的二维数组的操作方法 这篇文章主要介绍了一些Python中的二维数组的操作方法,是Python学习当中的基础知识,需要的朋友可以参考下 需要在程序中使用二维数组,网上找到一种这样的用 ...