MySQL学习(3)
一 SQL语句
1. 数据库级别(*)
- 显示全部数据库:show databases;
- 创建数据库:create database '数据库名字’;
- 使用数据库:use '数据库名字';
- 删除数据库:drop database 's数据库名字‘;
- 导出数据库:mysqldump -uroot -p 数据库名 > 导出文件名
- 导入数据库:mysql -uroot -p 数据库名 < 文件路径.数据表
2.数据表级别(*)
- 显示全部数据表:show tables;
- 显示数据表列:desc '数据表名';
- 创建表:create table '数据表名'(nid 类型,name 类型);
- 删除表:drop table '数据表名';
- 清空表内容:elete from '数据表名';
- 清空表内容:truncate table '数据表明'; 速度快,自增回到原点;
- 添加列:lter 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 '主表名' add constraint '外键名' foreign key '从表名'('外键字段') references '主表'(字段');
- 删除外键:alter table '表名' drop foreign key '外键名';
create table '表名'('Field名' 'Field类型' '是否为空' 默认值,'Field名' 'Field类型' '是否为空' 默认值)engine=innodb charset=utf8;
例:
创建表tb2成功。
create table '表名'('Field名' 'Field类型' '是否为空' 默认值 auto_increment primary key,'Field名' 'Field类型' '是否为空' 默认值)engine=innodb charset=utf8; auto_increment代表自增(只能数值类型,所引,主键,一张表只能由一个自增列),加它时后面一定要由primary key(一张表只能由一个主键,不能为NULL,一般情况下把自增列设为主键,可以两列一起作为主键,查找速度非常快)
例:
可以看到,我只查了num的值,但是id的value是随着递增的。
a. delete from '数据表'与truncate table '数据表'的区别
(1) 用delete from tb2;清空数据表tb2后,然后重新插入两行数据,结果:
可以看到id是在原来的基础上递增的。
(2) truncate table tb2; 然后再重新插入数据,结果:
可以看到表中id列是从1开始递增了。
b. 外键
把两个表中的两列进行了关联,加了约束。
(1) 创建friInfo的表:
创建department的表:
向department表中插入数据,显示:
将friInfo表中的departmentId和department表中的id建立关联:
fk_f_d是外键的名字;外键建立成功。
我们看看能否在friInfo表中的departmentId中插入在department表id列中没有的数字,结果:
提示我们不可以插入数据,那我们插入符合要求的,结果:
可以看到插入成功。
friInfo表中的departmentId列的数据只能从department中的id列选取。
(2)可以在创建表的时候直接添加约束
例:
- create table department(
- id int not null auto_increment primary key,
- name varchar(20))engine=innodb default charset=utf8;
- create table friInfo(
- id int not null auto_increment primary key,
- name varchar(20),
- departmentId int,
- constraint fk_f_d foreign key(departmentId) referneces department(id))engine=innodb default charset=utf8;
3.数据行级别(****)
增:a. insert into '表名'('列名','列名') values('值','值'),('值','值'), ('值','值'); 一次插入多条数据;
b. insert into '表名'('列名','列名') select '列名','列名' from '表名'; 把另一个表的两列中的数据插入到表的列中;
删:delete from '表名' where '列名'='值'; 将某一列中某一值的一行数据删掉; '列名'>'值', '列名'<值', '列名'!='值' 都可以;
改:update '表名' set '列名1'='值1' where '列名2'='值2' and ...; 把'列名2'='值2的'列名1'的值改为'值1';
查:select '列名1', '列名2' from '数据表名' where '列名'='值'; 显示表中'列名'='值'的那行中 '列名1'和'列名2'数据;
其他:条件,通配符,限制,排序,分组,连表,组合。参考https://www.cnblogs.com/wupeiqi/articles/5713315.html
二 SQL基本数据类型
1. 数字
(1) bit(m) 二进制位,m表示二进制位的长度,范围1~64,默认m=1
(2) tinyint 相当于c++中的int8类型,默认是有符号的,创建无符号:tinyint unsigned;注意:布尔类型用 tinyint(1)表示;
(3) smallint 相当于c++中的int16类型;
(4) int 相当于c++中的int32类型;
(5) bigint 相当于c++中的int64类型;
(6) decimal(m[,d]) 精确的小数,m是数字总个数(负号不算),最大值65,d是小数点后个数,最大值30;
(7) float(m,d) 单浮点数,m是数字总个数,d是小数点后数字个数;数值越大越不准确;
(8) double(m,d) 双浮点数,m是数字总个数,d是小数点后数字个数;数值越大越不准确;
2.字符串
(1) char(m) 固定长度的字符串,最大长度255字符,m代表字符串长度,即使数据小于m,也会占用m个字符;
(2) varchar(m) 可变长度的字符串,最大长度255字符,m代表字符串长度,只要小于m长度的字符串都可以保存在数据类型中;相比于char类型效率较低;
(3) text 保存变长的大字符串,最大长度65535个字符;
(4) mediumtext 保存变长的大字符串,最大长度16777215个字符;
(5) longtext 保存变长的大字符串,最大长度4294967295个字符;
(6) TinyBlog、Blog、MediumBlog、LongBlog 二进制数据;
3.时间
(1) date: YYYY-MM-DD;
(2) time: HH:MM:SS;
(3) datetime: YYYY-MM-DD HH:MM:SS;
(4) year: YYYY;
(5) timestamp: YYYYMMDD HHMMSS;
4.枚举
相当于c++中的枚举。
用法:
- create table studentInfo(
- name varchar(20),
- age int,
- class ENUM('class1', 'class2', 'class3')
- )engine=innodb default charset=utf8;
insert into studentInfo(name,age,class) values('a',19,'class1'),('b',20,'class2'),('c',21,'class3');
5.集合
可以设置多个值。
用法:
- create table teacher(
- name varchar(20),
- course SET('math', 'sports', 'english')
- )engine=innodb default charset=utf8;
- insert into teacher(name,course) values('a', ('math', 'sports')), ('b', ('english', 'sports')), ('c', ('math', 'english'));
MySQL学习(3)的更多相关文章
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(七) 查询
我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(八) 插入 更新 删除
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...
- 我的MYSQL学习心得(九) 索引
我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(十) 自定义存储过程和函数
我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心 ...
随机推荐
- 【转】从技术和成本算笔账,自动驾驶L3过渡到L4有多难?
转自:http://www.sohu.com/a/160479216_121787 从技术和成本算笔账,自动驾驶L3过渡到L4有多难? 2017-07-28 09:34 英伟达解决方案架构师程亚冰认为 ...
- 使用Google App Engine开始新的网站开发学习
继长时间的迷茫后,我发现还是回归php网站开发更适合我,或者没有那么深刻,但至少要做点事情.不知道以后将从事什么样的工作,但现在找点事情做还是很好的.所以,为了激发我学习的热情,我在网上搜了一下免费云 ...
- Contour等高线图代码
import matplotlib.pyplot as plt import numpy as np def f(x,y): # the height function return (1 - x / ...
- 变身六次失去核心的小米Note还能火吗
奥特曼变身有时间限制,因此我们总是希望它多变几次身,从而把小怪兽打得嗷嗷叫.但对于科技产品来说,不断推出"变身版",似乎总有江河日下.大势已去之感.三星形形色色的复仇者联盟S6版, ...
- JavaWeb中遇到的字符编码问题
一.常见的编码方式 1.UTF-8 2.ISO-8859-1 二.Tomcat的编码问题 Tomcat8和7的编码方式 Tomcat7对URI默认编码是ISO-8859-1 Tomcat8对URI默认 ...
- angularJS进阶阶段(4)
angularJS进阶阶段(4) 编译器/$compile 编译器$compile是一个AngularJS的内置服务,它负责遍历DOM树来查找匹配指令, 并调用指令的实现代码进行处理. HTML编译包 ...
- 难住了同事:Java 方法调用到底是传值还是传引用
Java 方法调用中的参数是值传递还是引用传递呢?相信每个做开发的同学都碰到过传这个问题,不光是做 Java 的同学,用 C#.Python 开发的同学同样肯定遇到过这个问题,而且很有可能不止一次. ...
- SpringBoot 全局异常处理 @RestControllerAdvice +@ExceptionHandler 请求参数校验
ControllerAdvice 指示带注释的类辅助“控制器”. 作为的特殊化@Component,允许通过类路径扫描自动检测实现类. 通常用于定义@ExceptionHandler, @InitBi ...
- 浅析TCP/IP协议
浅析TCP/IP协议 0x00 什么是TCP/IP协议? 想一想人与人之间交流需要什么?我们是不是要掌握一种我们都能体会到对方意思的语言.那么计算机与网络设备之间进行通信,是不是不同设备之间是不是 ...
- HTML中的meta标签常用属性及其作用总结
文章同步到github 以前没怎么太注意过meta标签的作用,只是简单了解一些常用属性,现在结合个人了解的进行记录与总结: 元数据 首先需要了解一下元数据(metadata)元素的概念,用来构建HTM ...