1.MySQL
[1]数据库简介
- DataBase
- 存储数据的仓库
- 关系型数据库
- 关系型数据库中保存全都是表格(Table)
- 数据库的有点:
1.可以保存大量的信息
2.有较好的查询性能
- 常见数据库:
- MySQL --> 甲骨文
- DB2 --> IBM
- Oracle --> 甲骨文
- SQL Server --> 微软
[2]SQL(Structured Query Language)简介
- 结构查询语言
- SQL就是一门来操作数据库的语言
- SQL的国际化标准是由ISO组织来定义的
大部分厂商都对SQL标准进行了实现,而各个厂商又在SQL标准上进行了扩展,
数据库厂商自己扩展的功能,我们称为方言。
- SQL的基本语法:
1.SQL是大小写不敏感的,但是我们要求关键字要大写。
2.SQL语句要求以;结尾(主要指在命令行窗口)
3.SQL中的命名规范,单词之间使用下划线连接
[3]数据库操作
> 基本操作
- 登录:
mysql -u用户名 -p密码
- 退出:
quit/exit
- 显示所有数据库:
SHOW DATABASES;
- 使用数据库:
USE 数据库名;
- 创建数据库:
CREATE DATABASE 数据库名;
- 显示所有表:
SHOW TABLES;
- 查看表中的数据:
SELECT * FROM 表名;
- 删除数据库
DROP DATABASE 数据库名;
> 表操作:
- 创建表
CREATE TABLE 表名(
列名 列类型,
列名 列类型,
...
列名 列类型
);
例子:
CREATE TABLE t_stu(
name VARCHAR(50)
);
- 查看表结构
DESC 表名;
- 删除表
DROP TABLE 表名;
> 常用数据类型
- 字符串
CHAR
- 定长字符串,char的长度是固定的
比如:CHAR(10),长度永远为10
如果内容的长度不够10,则自动在字符串后边补空格
char型数据在保存时会自动去掉后边的空格
- 一般我们使用char型来保存一些长度固定的数据,身份证号
- CHAR的最大长度是255
VARCHAR
- 可变长度的字符串
- 最大长度65535
- 数值
INT
- 整型
- 创建int类型也可以指定长度
- int(11),默认长度也是11,所以在创建int型的不用指定长度
DOUBLE
- 浮点型
- 表示浮点数
- 声明double可以指定一个长度
double(5,2) --> 表示数字长度是5位,其中有两位小数
DECIMAL
- 浮点类型
- 十进制精确计算的浮点类型
- DECIMAL使用方式和DOUBLE类似,也是可以声明一个长度 DECIMAL(6,2)
- 一般涉及到钱的数据时我们需要使用
- 时间
DATE
- 只保存日期
- 2016-1-9
TIME
- 只保存时间
- 11:21:00
DATETIME
- 同时保存时间和日期
2016-1-9 11:21:00
TIMESTAMP
- 保存时间戳
- 时间戳值:1970-1-1 0:0:0 到当前时间的一个毫秒数
- 时间戳默认在数据被修改后自动更新
- 创建一个学生表
int id
String name
Date birth
String gender
CREATE TABLE t_stu(
id INT,
name VARCHAR(50),
birth DATE,
gender CHAR(2)
);
> 数据库的操作主要就是对表中数据的增删改查(CRUD)
> 数据的修改
- 插入数据
> INSERT INTO 表名 (列名1,列名2,列名3, ... 列名N) VALUES(列值1,列值2,列值3 ... 列值N);
- 例子,我们向t_stu表中插入一个学生信息
id为1,name为sunwukong,birth为1980-8-8,性别为male
- INSERT INTO t_stu (id, name, birth, gender) VALUES(1,'sunwukong','1980-8-8','male')
- 在mysql中操作字符串时一定要使用单引号'
INSERT INTO t_stu (id, name, birth) VALUES(1,'sunwukong','1980-8-8');
> INSERT INTO 表名 VALUES(列值1,列值2,列值3 ... 列值N);
- 如果表名后边不写列名,则values中的值,应该按照创建表时顺序来写
INSERT INTO t_stu VALUES(3,'zhubajie','1970-7-1','male');
- 修改数据
> UPDATE 表名 SET 列名1=列值1,列名2=列值2, ... 列名N=列值N [WHERE 条件];
> 例子:
UPDATE t_stu SET gender='male'
这种不加条件的update语句,会修改表中的所有数据。
如果只希望修改部分数据,则需要在语句后边添加上条件。
> 例子2
UPDATE t_stu SET gender='怪蜀黍' WHERE id=4;
- 在WHERE关键字后边可以附加条件,这样语句只会对符合条件的数据生效
- SET之后的=号,代表赋值
- WHERE之后的=号,代表判断
- 大部分逻辑运算符都可以在SQL中使用
> 例子3
UPDATE t_stu SET gender='猪' WHERE id=3 AND name='zhubajie';
UPDATE t_stu SET gender='男' WHERE id=3 OR id=4;
- AND表示并列,AND前后的条件必须同时满足,才会执行
- OR表示或者,OR前后的条件只要满足一个就好执行。
- 删除数据
> DELETE FROM 表名 [WHERE 条件];
> 例子1:
DELETE FROM t_stu;
- 不带条件的删除,会删除表中的所有数据(慎用)
> 例子2:
DELETE FROM t_stu WHERE id=3;
- 删除id为3的学生信息
- 清空表
> TRUNCATE TABLE 表名;
> 清空表时干了两件事:
1.删除整个表
2.创建一个新表
> 数据的查询
- 查询表中的所有列
SELECT * FROM 表名 [WHERE 条件];
* 代表查找全部的列
- null比较特殊,不能用=判断,使用IS NULL
- 查询表中的指定列
SELECT 列名1 , 列名2 , ... 列名N FROM 表名 [WHERE 条件];
SELECT empno , ename , job , mgr , hiredate , sal , comm , deptno FROM emp;
- 真正开发时,数据库表的列数往往是很多的,所以向SELECT * FROM emp这种语句,开发中用的不多。
- 使用别名
SELECT 列名1 AS 别名1 , 列名2 AS 别名2 , ... 列名N AS 别名N FROM 表名 [WHERE 条件];
- 例子:我们可以在列名后跟着一个AS关键字,然后设置别名
SELECT empno AS 员工号 , ename AS 姓名 , job AS 职位 , mgr AS 上级 , hiredate AS 入职日期 , sal AS 工资 , comm AS 提成 , deptno AS 部门编号 FROM emp;
SELECT 列名1 别名1 , 列名2 别名2 , ... 列名N 别名N FROM 表名 [WHERE 条件];
- 例子:也可以不使用AS关键字,直接在列名后加一个空格,然后加别名
SELECT empno 员工号 , ename 姓名 , job 职位 , mgr 上级 , hiredate 入职日期 , sal 工资 , comm 提成 , deptno 部门编号 FROM emp;
- 排序
> 升序
SELECT * FROM 表名 ORDER BY 列名 ASC;
例子:
SELECT * FROM emp ORDER BY sal ASC;
> 降序
SELECT * FROM 表名 ORDER BY 列名 DESC;
例子:
SELECT * FROM emp ORDER BY sal DESC;
> 函数(做一些计算)
1.COUNT
- 用来对查询到数据进行计数的。
- 例子1:
SELECT COUNT(*) FROM emp;
- COUNT(*) 统计所有数据的行数
- 例子2:
SELECT COUNT(列名) FROM emp;
- 统计当前列不为null的数据的条数
- 列子3:
SELECT COUNT(1) FROM emp;
- 和CONUT(1)和CONUT(*)一样
2.MAX
- 获取多个值中的最大值
- 例子:
SELECT MAX(sal) FROM emp;
3.MIN
- 获取多个值中的最小值
- 例子:
SELECT MIN(sal) FROM emp;
4.AVG
- 多个值取平均值
- 例子:
SELECT AVG(sal) FROM emp;
5.SUM
- 多个值得求和:
- 例子:
SELECT SUM(sal) FROM emp;
[4]约束
- 约束就是为表中的内容添加限制条件
> 主键(PRIMARY KEY)
- 就是一条数据的唯一标识,通过主键可以快捷的检索到数据。
特点:
- 唯一
- 非空
- 可以被引用
- 创建主键:
CREATE TABLE t_user(
id INT PRIMARY KEY,
`name` VARCHAR(50)
);
> 主键自增(AUTO_INCREMENT)
- 主键自增指的是主键自动生成并且自动累加
- 注意:自增主键只适用于int型主键,字符串主键不能使用。
- 创建方式:
CREATE TABLE t_user2(
id INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(50)
)
> 非空(NOT NULL)
CREATE TABLE test_tb(
username VARCHAR(50) NOT NULL
)
> 唯一(UNIQUE)
CREATE TABLE test_tb(
username VARCHAR(50) UNIQUE
)
> 外键(FOREIGN KEY)
- 外键关联指的是将一个表中的列和另一个表的主键进行关联。
FOREIGN KEY (列名) REFERENCES 引用表的表名(引用列的列名)
FOREIGN KEY (dept_id) REFERENCES dept(id)
- 可以被外键关联的列,一定是主键
- 注意:含外码的关系称为参照关系。
- 一对多 1-N
例子:部门与员工
- 一个部门可以有多个员工,一个员工只能属于一个部门
- 一对多的关系我们一般是通过在多的一方来保存一的一方主键
#一对多的关系
#创建一个dept表
CREATE TABLE dept (
id INT PRIMARY KEY AUTO_INCREMENT,
dept_name VARCHAR(50)
)
#创建一个员工表
CREATE TABLE emp(
id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR(50),
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES dept(id)
)
- 一对一 1-1
> 夫妻的关系就是一对一的关系
> 一个丈夫只能有一个妻子,一个妻子只有一个丈夫
#一对一关系
#创建一个husband表
CREATE TABLE husband(
id INT PRIMARY KEY,
hname VARCHAR(50)
)
#创建一个wife
CREATE TABLE wife(
id INT PRIMARY KEY,
wname VARCHAR(50),
FOREIGN KEY (id) REFERENCES husband(id)
)
#插入一个husband
INSERT INTO husband VALUES(1,'武大郎');
INSERT INTO husband VALUE(1,'西门庆');
#插入一个wife
INSERT INTO wife VALUES(1,'潘金莲');
- 多对多 N-N
> 老师和学生
- 一个老师可以有多个学生
- 一个学生可以有多个老师
- 多对多的关系我们一般都是以创建一个中间表的形式来映射
- 例子:
#多对多的关系
#创建一个tea
CREATE TABLE tea(
id INT PRIMARY KEY AUTO_INCREMENT,
tname VARCHAR(50)
)
#创建一个学生
CREATE TABLE stu(
id INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(50)
)
#创建一个中间表
CREATE TABLE tea_stu(
tea_id INT,
stu_id INT,
FOREIGN KEY (tea_id) REFERENCES tea(id),
FOREIGN KEY (stu_id) REFERENCES stu(id)
)
#插入几个老师
INSERT INTO tea VALUES(NULL,'张三丰');
INSERT INTO tea VALUES(NULL,'陈近南');
INSERT INTO tea VALUES(NULL,'扫地僧');
#插入几个学生
INSERT INTO stu VALUES(NULL,'张无忌');
INSERT INTO stu VALUES(NULL,'韦小宝');
INSERT INTO stu VALUES(NULL,'乔峰');
INSERT INTO stu VALUES(NULL,'杨过');
转载请注明出处!
http://www.cnblogs.com/libingbin/
感谢您的阅读。如果文章对您有用,那么请轻轻点个赞,以资鼓励。
- Mysql简单入门
这两天比较懒,没有学习,这个是我问一个学java的小伙伴要的sql的总结资料,大体语句全在上面了,复制到博客上,以后忘记可以查看 #1命令行连接MySQLmsyql -u root -proot;#2 ...
- Linux上SQL及MYSQL简单操作
Linux上检查MYSQL是否安装: $ sudo service mysql start Ubuntu Linux安装配置MYSQL: $ sudo apt-get install mysql-se ...
- [原创]MYSQL的简单入门
MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...
- Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用
MySql基本操作 -- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式 CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET UTF ...
- day39——SQL语句简单介绍、库、表、记录、安装mysql简单命令
day39 SQL语句简单介绍 库(增删改查) 查看数据库 show databases; 查看其中一个库 show create database db1; 创建数据库 create databas ...
- [转]MySQL主从复制入门
1.MySQL主从复制入门 首先,我们看一个图: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中. 假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的33 ...
- [置顶] Mysql存储过程入门知识
Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...
- Java中Redis简单入门
Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案. Redis官方网网站是:http://www.redis.io/,如下: Redis ...
- MyBatis学习总结(一)简单入门案例
MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...
随机推荐
- 在Linux(Ubuntu)下搭建ASP.NET Core环境并运行 继续跨平台
最新教程:http://www.cnblogs.com/linezero/p/aspnetcoreubuntu.html 无需安装mono,在Linux(Ubuntu)下搭建ASP.NET Core环 ...
- inner join on, left join on, right join on的区别与介绍
Table A aid adate 1 a1 2 a2 3 a3 TableB bid bdate 1 b1 2 b2 4 b4 两个表a,b相连接, ...
- 【开源】Ionic项目实例《Ionic中文社区》
介绍 这几天闲着没事,就做了个第三方的Ionic社区的移动客户端,练练手,界面设计和图片资源直接从官方版拿来的.真懒o(︶︿︶)o 唉 网站开放出来的接口,都已全部实现,大家可以下着试试看. 源码 h ...
- sql查询重复记录和from子查询
select name from (SELECT name,count(name) as countFROM Table WHERE (OrgUUId = (select top 1 uuid fro ...
- 【C#】VS2015开发环境的安装和配置(一)2016-08-03更新
分类:C#.VS2015.WPF.ASP.NET MVC.Android.iOS.Unity3D: 更新日期:2016-08-03 一.简介 为了避免网上乱七八糟的过时介绍,避免误导初学者,这次把至2 ...
- Nam Game
哪一方最终给对方留下4的倍数个石头则win,即想方设法的给对方留下4的倍数个石头. 例如: 9(B win) A:3 B:2(B取2,给对方余4,对方则lose) A:1 | 2 | 3 B:3 | ...
- malloc和new的区别
(1)malloc在C和C++中都可以使用,用来申请一段内存:申请的内存一定要用free释放,然后把指针置为null: new只能在C++中使用,用于动态内存分配:new的对象要delete掉: (2 ...
- GJM : 使用浏览器的计算力,对抗密码破解 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- [Cordova] 无法编译Visual Studio项目里Plugin副本的Native Code
[Cordova] 无法编译Visual Studio项目里Plugin副本的Native Code 问题情景 开发Cordova Plugin的时候,开发的流程应该是: 建立Cordova Plug ...
- [Tool] SourceTree初始化GitFlow遇到错误(git command not found)的解决方案
[Tool] SourceTree初始化GitFlow遇到错误(git command not found)的解决方案 问题情景 使用SourceTree,可以方便开发人员快速的套用GitFlow开发 ...