Myql
作者:互联网
一、数据库分类:
网状数据库
层次型(树状)数据库
关系型数据库(RDBMS)
Relational database manage system
MySQL SQL server oracle
非关系型数据库(NoSQL)
MongoDB
使用shell登录mysql
h – host 主机
P – port 端口
u -user 用户
p - password 密码
mysql.exe -h127.0.0.1 -P3306 -uroot -p
简写形式: mysql -uroot
数据完整结构
Server -> Database -> Table ->Row(行)->Column(列)
三、数据库命令
(1) 查看当前数据库服务器中所有的数据库
show databases;
(2) 使用数据库
use 数据库名称;
(3) 查看当前数据库中所有的数据表
show tables;
(4) 查看数据表中有多少列(表头)
desc 表的名称;
-----------------------脚本中常用的------------------------
(5) 删除数据库
drop database if exists 数据库名称;
(6) 创建数据库
create database 数据库名称;
(7) 创建数据表
create table 表名称 (
eid int,
name varchar(8),
….列名称
);
(8) 插入数据
insert into 表名称 values(列数据1, 列数据2…);
(9) 查询数据
select * from 表名称;
1. mysql命令执行方式
(1) 命令行 – 写一行,执行一行(通过shell)。
(2) 脚本形式 – 把所有要执行的命令写入到一个文件中,然后执行整个文件。
① 创建 .sql文件;
② 打开shell终端
mysql -uroot < 拖拽sql文件到这位置
注释:
单行注释 # 注释的内容
多行注释 /* 注释的内容 */
需求:保存员工的信息(编号eid、姓名name、性别sex、电话 phone)
创建数据库
创建数据表
往数据表中插入数据
--1
1. Sql语句
SQL(structured query language),结构化查询语言,用于操作数据库的语言,绝大多数的关系型数据都支持。
四、列约束
主键约束 只能使用在整型数据,从小到大排序,不能为空NULL,不能重复; PRIMARY KEY
非空约束: 列不能为空,可以插入重复的数据 NOT NULL
唯一约束: UNIQUE 不能插入重复的数据,可出现重复NULL
默认约束: DEFAULT
1.外键约束
当前表的中值,要在另一个表中存在; 但是允许使用NULL
foreign key(列名称) references 表名称(列名称)
2.检查约束
student( age tinyint check(age >18 and age>24) )
mysql不支持检查约束。
3.项目中如何存储日期时间数据
2018-06-05 2018/06/05 05/06/2018
性别 男/女 F/M BOY/GIRL
date
BOOL 1/0
internationalzation i18n
计算机元年 1970-1-1,通常记录一个时间,用某个时间与计算机元年之间的毫秒差
1s = 1000ms 1m = 60s 1h=60m 1d=24h
1y = 2460601000365
1000 1970-1-1 0:0:1
1000*60 1970-1-1 0:1:0
10006060 1970-1-1 1:0:0
10006060*24 1970-1-2 0:0:0
开发中存储时间使用 BIGINT
存储性别使用 BOOL
五、MySQL中使用自增列
AUTO_INCREMENT 自动增长,如果声明一个列为自增列,无需手动赋值,只需要指定为NULL,就会自动在当前数据中最大的值的基础上 +1 插入。
注意:用于整型 PRIMARY KEY 的列,允许手动赋值。
六、查询:简单查询和复杂查询
1.简单查询 —— 只查询特定的列
select eid,ename,salary from emp;
2.简单查询 —— 查询所有的列
select * from emp;
3.简单查询 —— 只显示不同的记录/合并相同的记录
示例:查询员工都在哪些部门;
SELECT DISTINCT(deptId) FROM emp;
4.简单查询 —— 条件查询
示例:查询出编号为5的员工所有信息
SELECT * FROM emp WHERE eid=5;
1.复杂查询 —— 聚合/分组查询
聚合函数:
count( ) 计算数量
sum( ) 计算总量
max() 计算最大
min() 计算最小
avg() 计算平均
GROUP BY 分组查询
示例:查询出所有员工的总数量
SELECT COUNT(*) FROM emp; #15
SELECT COUNT(eid) FROM emp; #15
SELECT COUNT(deptId) FROM emp; #14
3.复杂查询 —— 跨表/多表查询
示例:查询出每个员工的姓名及其所在部门的名称
SELECT ename,dname FROM emp,dept; #错误
SELECT ename,dname FROM emp,dept WHERE deptId=did;
(1)内连接查询 - 等同于SQL-92多表查询
SELECT ename,dname FROM emp INNER JOIN dept ON deptId=did;
(2)左外连接查询
SELECT ename,dname FROM emp LEFT OUTER JOIN dept ON deptId=did;
左侧表中所有的记录,即使右侧没有对应记录也会显示出来。
(3)右外连接查询
SELECT ename,dname FROM emp RIGHT JOIN dept ON deptId=did;
右侧表中所有的记录,即使左侧没有对应记录也会显示出来。
注意:在左(右)外连接中,OUTER关键字可以省略。
(4)全连接查询 - FULL JOIN 显示左侧和右侧所有的记录——MySQL不支持
(5)全连接解决方案
UNION(合同相同项)/UNION ALL(不合并相同项)
(SELECT ename FROM emp_cn)
UNION
(SELECT ename FROM emp_us)
(SELECT ename FROM emp_cn)
UNION ALL
(SELECT ename FROM emp_us)
合并左外连接 和 右外连接
(SELECT ename,dname FROM emp LEFT OUTER JOIN dept ON deptId=did)
UNION
(SELECT ename,dname FROM emp RIGHT OUTER JOIN dept ON deptId=did);
标签:deptId,ename,Myql,数据库,查询,emp,SELECT 来源: https://www.cnblogs.com/jingjing-2019/p/11201397.html