mysql 库、表、数据的增删改
数据库定义
语法形式
(1)创建数据库
create database [if not exists ] 数据库名 [charset 字符集] [collate 字符排序规则];
if not exists:用于判断是否存在该数据库名,如果存在则不执行该语句
create database if not exists z_0705;
Show charset :查看字符集
Show collate :查看排列规则
(2)修改数据库
alter database 数据库名 character set=新字符集 collate=新校对
alter database z_0705 character;
(3)删除数据库:
drop database 数据库名;
drop database z_0705;
表定义语句
1)字段属性设置
not null: 不为空,表示该字段不能放“null”这个值。不写,则默认是可以为空
auto_increment: 设定int类型字段的值可以“自增长”,即其值无需“写入”,而会自动获得并增加
此属性必须随同 primary key 或 unique key 一起使用。
[primary] key: 设定为主键。是唯一键“加强”:也不能重复并且不能使用null,并且可以作为确定任意一行数据的“关键值”,最常见的类似:where id= 8; 或 where user_name = ‘zhangsan’;
通常,每个表都应该有个主键,而且大多数表,喜欢使用一个id并自增长类型作为主键。
但:一个表只能设定一个主键。
unique [key] : 设定为唯一键:表示该字段的所有行的值不可以重复(唯一性)。
default ‘默认值’: 设定一个字段在没有插入数据的时候自动使用的值。
comment ‘字段注释’:
2)索引设置
什么是索引:
索引是一个“内置表”,该表的数据是对某个真实表的某个(些)字段的数据做了“排序”之后的存储形式。
其作用是:极大提高表查找数据的速度!——其效率(速度)可以匹敌二分查找。
注意:索引在提供查找速度的同时,降低增删改的速度。
对创建(设计)表来说,建立索引是非常简单的事,形式如下:
索引类型 (字段名1,字段名2, .... ) //可以使用多个字段建立索引,但通常是一个
有以下几种索引:
普通索引:key(字段名1,字段名2, .... ):它只具有索引的基本功能——提速
唯一索引:unique key (字段名1,字段名2, .... )
主键索引:primary key (字段名1,字段名2, .... )
全文索引:fulltext (字段名1,字段名2, .... )
3)约束设置
什么叫约束:约束就是一种限定数据以符合某种要求的形式(机制)
约束主要有:
主键约束:primary key (字段名1,字段名2, .... )
其实就是主键索引,也是主键属性。即primary key有3个角度的理解(说法):字段属性设置为主键,或建立的主键索引,或设定一个主键约束,但他们的本质是一样
唯一约束:unique key (字段名1,字段名2, .... ),其实也是“3体合一”(类似primary key)
外键约束:
什么叫外键:就是设定一个表中的某个字段的值,必须“来源于”另一个表的某个主键字段的值。
语法形式:
foreign key (字段名1,字段名2, .... ) references 表名2(字段名1,字段名2, .... )
说明:
对某个(些)字段设定外键,则其相对应的其他表的对应字段需要设置为主键。
4)表选项
表选项就是对一个表的有关属性的设定,通常都不需要。如果不设定,则有其默认值。
有以下几个可用:
comment = ‘表的注释’;
charset = 字符编码名称; //跟数据的字符编码设定一个意思。
字符编码设定的范围及继承关系:
系统级设定:安装时确定了。
库级设定:建库时设定;
表级设定:就是这里的charset = 字符编码名称
字段级设定:作为字段属性出现。
他们都只对“字符类型”的字段有效。每一级如果没有设定,就会“继承使用”其上一级的设定。
auto_increment = 起始整数; //自增长类型值的初值,默认是1
engine = “表的存储引擎名”; //
存储引擎就是将数据存入硬盘(或其他媒介)的方式方法。通常就几个可用,默认是InnoDB
存储引擎决定一个数据表的各方面的信息:功能和性能。
(1)创建表
create table [if not exists] 表名(字段列表, [约束或索引列表]) [表选项列表];
说明:列表都是表示“多个”,相互之间用逗号分开。
字段基本形式: 字段名 类型 [字段修饰属性];
create table student(
sno varchar(20) not null comment'学号',
sname varchar(20) not null comment '学生姓名',
ssex varchar(20) not null comment '学生性别',
sbirthday datetime comment '学生出生年月',
class varchar(20) comment '学生所在班级',
primary key(sno)
);
(2)修改表:
一般概述
通常,创建一个表,能搞定(做到)的事情,修改表也能做到。大体来说,就可以做到:
增删改字段:
增:alter table 表名 add [column] 字段名 字段类型 字段属性;
删: alter table 表名 drop 字段名
改:alter table 表名 change 原字段名 新字段名 新字段类型 新字段属性;
增删索引:
增删约束:
修改表选项:
(3)删除表:
drop table [if exists] 表名;
drop table student;
数据操作语言(DML)
数据库设计3范式(3NF):
范式,就是规范,就是指设计数据库需要(应该)遵循的原则。
每个范式,都是用来规定某种结构或数据要求——后一范式都是在前一范式已经满足的情况用来“加强要求”
1)第一范式(1NF),原子性
原子性: 存储的数据应该具有“不可再分性”。
2)第二范式(2NF)唯一性
需要实现每一行数据具有唯一可区分的特性,并不能有部分依赖关系。
通常,给一个表加主键(也是推荐做法),就可以做到“唯一可区分”。
但主键有这样情况:
设定一个字段为主键:此时,表示该一个字段的值就可以明确确定一行数据。
设定多个字段为主键:表示只有这多个字段的值都确定后才能确定一行数据。此时也称为“联合主键”
什么叫依赖:
如果确定一个表中的某个数据(A),则就可以确定该表中的其他另一个数据(B),则我们说:B依赖于A。
实际上,一个表只要有主键,则其他非主键一定是依赖于主键的。
什么叫“部分依赖”:
如果确定一个表中的某个数据组合(A,B),则就可以确定该表中的其他另一个数据(C),则我们说:C依赖于(A,B)(此时A,B通常就是做出主键)。
但:如果某个数据D,它只依赖于数据A,或者说,A一确定,则D也可以确定,此时我们就称为“数据D部分依赖于数据A——可见部分依赖是指某个非主键字段,
依赖于联合主键字段的其中部分字段。
3)第三范式(3NF):独立性,消除传递依赖
在一个具有主键的表中,假设主键为A,其必然其他非主键都依赖于该主键,比如:B依赖于A,C依赖于A,D依赖于A。。。。。。
但同时:如果该表中的某个字段B的值一确定,就能够确定另一个字段的值C,则我们称为C依赖于B。
那么,就出现了:
C依赖B,B依赖A——这就是传递依赖。
则消除该传递依赖的的通常做法,就是将C依赖于B的数据,分离到另一个表中。
(1)数据插入(添加数据)
有3种形式
形式1:
insert into 表名(字段名1,字段名2,....) values (值a1,值a2, .....), (值b1,值b2, .....),..... ;
形式2:
insert into 表名1(字段名1,字段名2,....)select 字段名1,字段名2,.... from 表名2;
形式3:
insert into 表名 set 字段名1=值1,字段名2=值2, ..... ;
insert into student values
('100','李华','男','1977-09-01','95033');
('108','曾华','男','1977-09-01','95033'),
('105','匡明','男','1975-10-02','95031'),
('107','王丽','女','1976-01-23','95033'),
('101','李军','男','1976-02-20','95033'),
('109','王芳','女','1975-02-10','95031'),
('103','陆君','男','1974-06-03','95031');
(2)删除数据
基本语法形式:
delete from 表名 [where条件] [order排序] [limit限定];
delete from student where sname="王丽";
(3)修改数据
基本语法:
update 表名 set 字段名1=值表达式1,字段名2=值表达式2,....[where条件] [order排序] [limit限定];
uodate student set sname="王丽" where ssex="女";
mysql 库、表、数据的增删改的更多相关文章
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
- PreparedStatement实现表数据的增删改 & 封装数据库链接和关闭操作
PreparedStatement实现表数据的增删改 PreparedStatementUpdateTest package com.aff.PreparedStatement; import jav ...
- Mysql入门-对表数据的增删改查
这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mysql的时候, ...
- 《MySQL必知必会》[03] 表数据的增删改
1.增:插入数据 INSERT关键字可以插入新的行到数据库表中: 插入完整的行 插入行的一部分 插入多行 插入某些查询的结果 基本的INSERT语句是: INSERT INTO R(A1, A2, . ...
- MySQL表数据的增删改查
1.增 INSERT INTO tb VALUES(v1,v2,v3...); INSERT INTO tb (field1,field2...) VALUES(v1,v2...); INSERT I ...
- mysql--对库,表基本操作语句,增删改查
1.对数据库的操作 1.选择数据库 USE 数据库名 2.创建数据库 create database 数据库名 charset utf8; 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不 ...
- MySQL学习8 - 数据的增删改
一.介绍 二.插入数据 INSERT 三.更新数据UPDATE 四.删除数据DELETE 一.介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现 ...
- MySQL语句之数据的增删改查
1.插入记录insert语法:INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn); 也可以一次 ...
- java 读取mysql库表数据
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- Python操作MySQL数据库完成简易的增删改查功能
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目介绍 二丶效果展示 三丶数据准备 四丶代码实现 五丶完整代码 一丶项目介绍 1.叙述 博主闲暇之余花了10个小时写的 ...
随机推荐
- WARNING: You are using pip version 19.1.1, however version 19.2.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
pip3 install --upgrade pip
- hdoj 1010-Tempter of the Bone
Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, ...
- Anaconda3自带jupyter
1.cmd命令行中输入 JupyterNotebook 2.系统自动调起下面页面(注册端口冲突是打不开的)
- fmex挂单挖矿
最近fmex上线挂单挖矿,针对挂单写了个程序,"跟随盘口,避免成交",0成本薅羊毛. 代码在 https://github.com/xiaoxiaoleo/fmexminer 使用 ...
- 2019SDN课程阅读作业(2)
1.过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么? 分为三个阶段,第一个阶段是主动网络(从20世纪90年代中期到21世纪初),它在网络中引入了可编程功能,以实现更大的创新:第二个 ...
- Python——graphviz及pydotplus安装步骤
Python——graphviz及pydotplus安装步骤 一.安装Graphviz 网站:http://www.graphviz.org/download/ 下载msi文件 直接安装,完成之后添加 ...
- tansition-group 使用方法
<transition-group name="breadcrumb"> <el-breadcrumb-item v-for="(item,index) ...
- QEMU支持的网络模式
网络是现代计算机系统不可或缺的一部分,QEMU也对虚拟机提供丰富的网络支持.qemu-kvm中主要给客户机提供了如下4种不同模式的网络. (1)基于网桥(Bridge)的虚拟网卡 (2)基于NAT(N ...
- B2B2C 商业模式
b2b2c_百度百科https://baike.baidu.com/item/b2b2c/876805 What is Business to Business to Consumer (B2B2C) ...
- 详解Django rest_framework实现RESTful API
这篇文章主要介绍了详解Django rest_framework实现RESTful API,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 一.什么是REST 面向资源是R ...