mysql 的增删改查
数据库的基本流程就是先看你的数据库中的库都是哪些:show databases;
然后再进入相应的库进行操作 : use+进入的库/表 切换路径
查看这个库内的所有的表:
show tabales;
查看这个表内的所有的所有信息:
select * from +表名;
数据表基本
1、创建表
|
1
2
3
4
|
create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空)ENGINE=InnoDB DEFAULT CHARSET=utf8 |
是否可空,null表示空,非字符串
not null - 不可空
null - 可空
是否可以为空
默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
create table tb1(
nid int not null defalut 2,
num int not null
)
默认值
自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
create table tb1(
nid int not null auto_increment primary key,
num int null
)
或
create table tb1(
nid int not null auto_increment,
num int null,
index(nid)
)
注意:1、对于自增列,必须是索引(含主键)。
2、对于自增可以设置步长和起始值
show session variables like 'auto_inc%';
set session auto_increment_increment=2;
set session auto_increment_offset=10; shwo global variables like 'auto_inc%';
set global auto_increment_increment=2;
set global auto_increment_offset=10;
自增
主键,primary key 一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
create table tb1(
nid int not null auto_increment primary key,
num int null
)
或
create table tb1(
nid int not null,
num int not null,
primary key(nid,num)
)
主键
2、删除表
|
1
|
drop table 表名 |
3、清空表
|
1
2
|
delete from 表名truncate table 表名 |
4、修改表
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
添加列:alter table 表名 add 列名 类型删除列:alter table 表名 drop column 列名修改列: alter table 表名 modify column 列名 类型; -- 类型 alter table 表名 change 原列名 新列名 类型; -- 列名,类型 添加主键: alter table 表名 add primary key(列名);删除主键: alter table 表名 drop primary key; alter table 表名 modify 列名 int, drop primary key; 添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);删除外键:alter table 表名 drop foreign key 外键名称 修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
|
改一个表中的列:
修改列:
alter table 表名 modify column 列名 类型; -- 类型
alter table 表名 change 原列名 新列名 类型; -- 列名,类型 alter table t1 modify name char(10); 直接把你的t1 表中的name列的char给修改为10个字节的 其中的column可以省略不写 给一个列改名字:
alter table t1 change name NAME char(10); 把t1表中的name列的名字改为NAME
表内容操作
查看一个表的具体的信息:desc+表名
1、增
|
1
2
3
|
insert into 表 (列名,列名...) values (值,值,值...)insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)insert into 表 (列名,列名...) select (列名,列名...) from 表 |
Insert into t1(id,name) values(1,’老王’) 表示 给t1这个表中的 id和name列分别插入加入数据 1 和老王 也可以省略into 不写
2、删
|
1
2
|
delete from 表delete from 表 where id=1 and name='alex' |
delete from+表 这个清空表之后下次再增加就会从以后的基础上增加
truncate table +表 这个清空表之后后就会从1 开始增加
3、改
|
1
|
update 表 set name = 'alex' where id>1 |
4、查
|
1
2
3
|
select * from 表select * from 表 where id > 1select nid,name,gender as gg from 表 where id > 1 |
主键:
主键是为了保证数据的唯一性而设置的
一张表只能有一个主键
一个主键可以用两个列合起来做一个主键
CREATE TABLE t1(
nid int(11) NOT NULL AUTO_INCREMENT ,
pid int(11) NOT NULL ,
num int(11) NOT NULL ,
PRIMARY KEY(pid,num) //把这个两个列设置为主键
)ENGINE = INNODB DEFAULT CHARSET=UTF8;
上面就是把t1表中的pid和num列设置为主键 并且主键不可以为空
外键:
外键好比就是你的表格中有一些人物的属性有很多人物的属性是一样的 或者这些属性是很多人的是重复的 那么如果都写上汉字比如‘中共中央北京市海定区 五道口职业技术学院’这个属性很多人具有的话,你再存储的时候也要每一个人都要写吗?不,如果每个人都写那么就会很占内存 因为占用好多字节,我们可以建立一个表格把这些属性存放起来 然后就给这些属性 设定id值 把这个id值和人物的表格关联绑定,然后 如果具有的属性就用属性代表的id来表示就节省很多内存 这就是外键由来,
外键的创建:
在创建表的时候就创建外键:先创建属性表 (主表)后创建字表就是要绑定外键的表
在表内创建:
constraint +外键名字+foreign key(本表的id) +references 从表名字(主表id列)
必须要给你的外键起名字 同一个数据库中的外键的名字不可以相同
同一个表也可以建立多个外键 就是把不同的列建立不同的外键
#被关联表
create table class(
id int auto_increment primary key,
name varchar(32)
)engine=innodb default charset=utf8; #关联表
create table student(
id int auto_increment primary key,
name varchar(32),
class_id int,
constraint fk_stu_class foreign key(class_id) references class(id) # 这个是指定它的外键是自己建立的一个列
)engine=innodb default charset=utf8; 这就是在创建表的时候同时把外键创立,constraint +外键名字+ foreign key +(本表的要关联的列一般都是id列) +references +从表名(父表的id列) 如果这个时候建立了外键那么 主表再删除的时候就不能了 因为它本身是有关联的需要先删除关联表
外键的关联必须是两个都是相同的 类型 不能一个是bigint 一个是int 两个列都应该是相同的类型
修改自增的起始值:
修改一个表id自增的起始值就是让他们可以直接跳到每一个我们想要的起始值
比如:这样可以直接从1调到20插入

Alter table +表名 Auto_increment = 你想要设置的从第几位开始的id
Alter table t1 auto_increment = 20;这个是把你的要自增的id设置从20开始增加
但是只可以增大你的设置的id
步长:
不仅仅可以设置自增的起始值还可以设置增加的步长
你在设置自增的值的时候其实也可以设置步长增加的 但是mysql的自增步长设置,只能分为会话步长和全局步长,会话步长就是这次你的登陆的设置 别人的设置没有或者别人的登陆是没有作用的 会话就是你自己的这一次登陆才能生效,而全局步长是设置之后以后的所有都遵循这个设置的,不论那一次登陆 无论谁登陆
MySQL: 自增步长
基于会话级别:
show session variables like 'auto_inc%'; 查看全局变量
set session auto_increment_increment=2; 设置会话步长
# set session auto_increment_offset=10;
基于全局级别:
show global variables like 'auto_inc%'; 查看全局变量
set global auto_increment_increment=2; 设置会话步长
# set global auto_increment_offset=10;
你在设置自增的值的时候其实也可以设置步长增加的 但是mysql的自增步长设置,只能分为会话步长和全局步长,会话步长就是这次你的登陆的设置 别人的设置没有或者别人的登陆是没有作用的 会话就是你自己的这一次登陆才能生效,而全局步长是设置之后以后的所有都遵循这个设置的,不论那一次登陆 无论谁登陆
MySQL: 自增步长
基于会话级别:
show session variables like 'auto_inc%'; 查看全局变量
set session auto_increment_increment=2; 设置会话步长
# set session auto_increment_offset=10;
基于全局级别:
show global variables like 'auto_inc%'; 查看全局变量
set global auto_increment_increment=2; 设置会话步长
# set global auto_increment_offset=10;
数据类型:
MySQL的数据类型大致分为:数值、时间和字符串
一般有bigint int 只不过是表示的数字的大小值不一样而已 bigint表示的值比较多
mysql 的增删改查的更多相关文章
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- MySQL数据库(增删改查语句)
MySQL数据库(增删改查语句)一.登录数据库:----> mysql -uroot -proot;(对应用户名和密码)二.SQL语句: 数据定义语言DDL 用来定义数据库.表.列,关 ...
- python操作mysql数据库增删改查的dbutils实例
python操作mysql数据库增删改查的dbutils实例 # 数据库配置文件 # cat gconf.py #encoding=utf-8 import json # json里面的字典不能用单引 ...
- Asp.Net操作MySql数据库增删改查
Asp.Net操作MySql数据库增删改查,话不多说直接步入正题.git源码地址:https://git.oschina.net/gxiaopan/NetMySql.git 1.安装MySQL数据库 ...
- Mysql 的 增删改查
mysql的增删改查 1:新建数据库 create database 数据库名 [其他选项]; 2:新建数据表 create table students ( id int unsigned not ...
- MySQL之增删改查之
MySQL之增删改查 前言:以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表上,未涉及多表操作. ...
- MySql之增删改查 · YbWork's Studio
前提:在进行"增删改查"的操作之前,先建立一个包含数据表student的数据库(具体操作可以见MySQL之最基本命令): 1."增"--添加数据 1.1 为表中 ...
- 使用MySQL练习增删改查时因为版本问题出现连接错误
使用MySQL练习增删改查时出现连接错误,错误提示如下: 2020-02-19 19:53:51.088 ERROR 16328 --- [reate-249798694] com.alibaba.d ...
- koa+mysql实现增删改查-全栈之路(001)
Date: 2020-4-23 以前很少写文章,从今天开始我要挑战一下自己,连续输出100篇技术类文章.这100篇文章我尽量以实战案例为主. 如果你觉得本文还不错,记得关注或者给个 star,你们的赞 ...
- (转)mysql的增删改查
MySQL数据库的增删改查. 1,首先启动mysql数据库的服务,在运行的窗口中输入:net start mysql,这样,就可 以启动mysql数据库的服务,同理,输入net stop mysql, ...
随机推荐
- Python离线安装依赖包
1.制作requirement.txt pip freeze > requirement.txt 2.下载离线Pytho安装包 pip download -r requirement.txt - ...
- 安装TD出现Unknown user name or bad password问题
在Server 2003 sp2上安装TD8.0 出现Unknown user name or bad password,是因为2003启用了DEP保护. 关闭系统的DEP保护就可以了. 方法如下 ...
- 从var func=function 和 function func()区别谈Javascript的预解析机制
var func=function 和 function func()在意义上没有任何不同,但其解释优先级不同:后者会先于同一语句级的其他语句. 即: { var k = xx(); function ...
- 【es6】正则扩展
- Set up the environment for driver compiling in Debian
1.check the kernel version $ uname -r --amd64 2.install the source code $ sudo apt-get install linux ...
- 数据库~Mysql派生表注意的几点~关于百万数据的慢查询问题
基础概念 派生表是从SELECT语句返回的虚拟表.派生表类似于临时表,但是在SELECT语句中使用派生表比临时表简单得多,因为它不需要创建临时表的步骤. 术语:*派生表*和子查询通常可互换使用.当SE ...
- JavaScript设计模式-22.观察者模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- windows下python2.7版本numpy,Scipy,matplotlib,sklearn安装
系统是windows32位,安装了python2.7.13. 安装顺序就是numpy,Scipy,matplotlib,sklearn. 首先是更新一下pip (确保pip能使用) 然后将setupt ...
- js if和switch,==和===
今天改插件BoxScroll的时候,因为if里面的条件判断多于两个,于是立马想着改写switch.改到一半,忽然记起来JSHint等代码质量检测工具中的一个要求,用===替换==,不用不可靠的强制转型 ...
- jmap查看内存使用情况与生成heapdump--转
http://www.webspherechina.net/home/space.php?uid=191&do=blog&id=7572 如果想分析自己的JAVA Applicatio ...