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 > 1 select 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, ...
随机推荐
- 【JAVA-WEB】在url上追加sessionid
HttpSession session = request.getSession(); url = url+";jsessionid="+session.getId();
- 字符编码的来源,ascii、unicode和utf-8编码的关系
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特 ...
- Comet技术在Java Web中的应用
HTTP协议是互联网上大量信息交换的基础,其特点是,它是基于请求-响应模式的无状态的单向协议,即,必须由客户端发起一个请求建立连接,服务器接收请 求,把数据返回给客户端,然后释放连接.下一次,再由客户 ...
- 【转】NuGet学习笔记
关于NuGet园子里已经有不少介绍及使用经验,本文仅作为自己研究学习NuGet一个记录. 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package M ...
- 有线mac 无线MAC 地址&&telnet要先开服务: ipconfig /all getma
在向IEEE申请到Mac address后,写到Lan设备里,就是Lan Mac,写到Wlan设备里,就是wlan Mac,写到BT设备里,就是BT Mac. MAC(Media Access Con ...
- 学会了ES6,就不会写出那样的代码
用let不用var ES6之前我们用var声明一个变量,但是它有很多弊病: 因为没有块级作用域,很容易声明全局变量 变量提升 可以重复声明 还记得这道面试题吗? var a = []; for (va ...
- laravel5.4学习--laravel基本路由
最基本的 Laravel 路由只接收一个 URI 和一个闭包,并以此提供一个非常简单且优雅的定义路由方法: Route::get('foo', function () {return 'Hello W ...
- iOS开源项目周报0323
由OpenDigg 出品的iOS开源项目周报第十三期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. CHIPag ...
- CSS级联样式表-css选择器
CSS概念 Cascading Style sheet 级联样式表 表现HTMl或XHTML文件样式的计算机语言 包括对字体,颜色,边距,高度,宽度,背景图片,网页定位等设定 建议:把表示样式的代码从 ...
- 文件流FileStram类
本节课主要学习三个内容: 创建FileStram流 读取流 写入流 文件流FileStram类,是用来实现对文件的读取和写入.FileStram是操作字节的字节数组,当提供向文件读取和写入字节的方法时 ...