mysql管理命令

 show  databases;  显示服务器上当前所有的数据库

 use  数据库名称;  进入指定的数据库

 show  tables;  显示当前数据库中所有的数据表

 desc  表名称; 描述表中都有哪些列(表头)

 quit;  退出服务器的连接

常用的SQL命令

 (1)丢弃指定的数据库,如果存在的话

DROP  DATABASE  IF  EXISTS  jd;

 (2)创建新的数据库

CREATE  DATABASE  jd;

 (3)进入创建的数据库

USE  jd;

 (4)创建保存数据的表

CREATE  TABLE  student(

sid  INT,

name  VARCHAR(8),

sex  VARCHAR(1),

score  INT

);

 (5)插入数据

INSERT  INTO  student  VALUES('1','scott','m','87');

 (6)查询数据

SELECT * FROM student;

 (7)删除数据

DELETE FROM  student  WHERE sid='3';

 (8)修改数据

UPDATE  student  SET  name='guo',score='89'  WHERE sid='4';

标准SQL语句分类

DDL: Data Define Language 定义数据结构

CREATE/DROP/ALTER

DML: Data Manipulate Language 操作数据

INSERT/DELETE/UPDATE

DQL: Data Query Language 查询数据

SELECT

DCL: Data Control Language 控制用户权限

GRANT(授权)/REVOKE(收权)

解决mysql存储中文乱码

脚本文件另存为的编码

客户端连接服务器端的编码(set names utf8)

服务器端在创建数据库时的编码(chaset=utf8)

mysql中的列类型

创建数据表的时候,指定的列可以存储的数据类型

CREATE  TABLE  t1( nid 列类型 );

 (1)数值型 —— 引号可加可不加

TINYINT  微整型,占1个字节,范围-128~127

SMALLINT  小整型,占2个字节,范围-32768~32767

INT  整型,占4个字节,范围-2147483648~2147483647

BIGINT  大整型,占8个字节

FLOAT  单精度浮点型,占4个字节,最多3.4e38,可能产生计算误差

DOUBLE  双精度浮点型,占8个字节,范围比BIGINT大的多

  DECIMAL(M,D)  定点小数,不会产生计算误差,M代表总的有效位数,D小数点后的有效位数

  BOOL  布尔型,只有两个值TRUE/1、FALSE/0,TRUE和FALSE不能加引号;在存储的时候使用TINYINT类型,具体的值是1和0

 (2)日期时间型 —— 必须加引号

DATE  日期型  '2019-10-31'

TIME  时间型  '14:26:30'

DATETIME  日期时间型   '2019-10-31 14:26:30'

 (3)字符串型 —— 必须加引号

  VARCHAR(M)  变长字符串,不会产生空间浪费,操作速度相对慢,M最大是65535

  CHAR(M)  定长字符串,可能产生空间浪费,操作速度相对的快,M最大值是255,常用于存储手机号,身份证号等一些固定长度的字符串

  TEXT(M)  大型变长字符串,M最大是2G

列约束

mysql可以对要插入的数据进行特定的验证,只有满足条件才允许插入到数据表中,否则被认为非法的插入

例如:一个人的性别只能是男或者女,一个人成绩0~100

  CREATE  TABLE  t1( id  列类型  列约束 );

 (1)主键约束——PRIMARY  KEY

声明了主键约束的列上的值不能出现重复,一个表中只能有一个主键,通常加在编号列;表中查询的记录会按照主键从小到大的顺序排列——加快查找速度。

声明了主键约束后就不能在插入NULL值

(2)非空约束 —— NOT NULL

声明了非空约束的列上不允许插入NULL值

 (3)唯一约束——UNIQUE

声明了唯一约束的列上不允许插入重复的值,允许插入NULL,甚至多个NULL   ps:NULL和任何值比较都不等,包括两个NULL比较

(4)检查约束——CHECK

检查约束可以对插入的数据进行自定义验证

CREATE  TABLE  student(

score  TINYINT  CHECK(score>=0 AND score<=100)

);

mysql不支持检查约束,会降低数据的插入速度

 (5)默认值约束——DEFAULT

可以使用DEFAULT关键字声明默认值,有两种方式可以应用默认值

INSERT INTO laptop_family VALUES(70,'神州',DEFAULT);

INSERT INTO laptop_family(fid,fname) VALUES(80,'华为');

(6)外键约束——FOREIGN KEY

声明了外键约束的列,取值必须在另一个表的主键列上出现过,两者的列类型要保持一致,允许插入NULL

FOREIGN KEY(外键列) REFERENCES 另表(主键列)

mysql中的自增列

AUTO_INCREMENT: 自动增长,假如声明了自增列,无需手动赋值,直接赋值为NULL,会获取当前的最大值,然后加1

注意:

只适用于整数型的主键列上

自增允许手动赋值

3.简单查询

#演示表
#设置客户端连接服务器端编码
SET NAMES UTF8;
#丢弃数据库,如果存在
DROP DATABASE IF EXISTS tedu;
#创建数据库,设置编码
CREATE DATABASE tedu CHARSET=UTF8;
#进入创建的数据库
USE tedu;
#创建数据表dept
CREATE TABLE dept(
did INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(8) UNIQUE
);
#插入数据
INSERT INTO dept VALUES(10,'研发部');
INSERT INTO dept VALUES(20,'市场部');
INSERT INTO dept VALUES(30,'运营部');
INSERT INTO dept VALUES(40,'测试部');
#创建数据表emp
CREATE TABLE emp(
eid INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(8),
sex BOOL DEFAULT 0,
birthday DATE,
salary DECIMAL(7,2),
deptId INT,
FOREIGN KEY(deptId) REFERENCES dept(did)
);
#插入数据
INSERT INTO emp VALUES(NULL,'Tom',1,'1990-5-5',6000,20);
INSERT INTO emp VALUES(NULL,'Jerry',0,'1991-8-20',7000,10);
INSERT INTO emp VALUES(NULL,'David',1,'1995-10-20',3000,30);
INSERT INTO emp VALUES(NULL,'Maria',0,'1992-3-20',5000,10);
INSERT INTO emp VALUES(NULL,'Leo',1,'1993-12-3',8000,20);
INSERT INTO emp VALUES(NULL,'Black',1,'1991-1-3',4000,10);
INSERT INTO emp VALUES(NULL,'Peter',1,'1990-12-3',10000,10);
INSERT INTO emp VALUES(NULL,'Franc',1,'1994-12-3',6000,30);
INSERT INTO emp VALUES(NULL,'Tacy',1,'1991-12-3',9000,10);
INSERT INTO emp VALUES(NULL,'Lucy',0,'1995-12-3',10000,20);
INSERT INTO emp VALUES(NULL,'Jone',1,'1993-12-3',8000,30);
INSERT INTO emp VALUES(NULL,'Lily',0,'1992-12-3',12000,10);
INSERT INTO emp VALUES(NULL,'Lisa',0,'1989-12-3',8000,10);
INSERT INTO emp VALUES(NULL,'King',1,'1988-12-3',10000,10);
INSERT INTO emp VALUES(NULL,'Brown',1,'1993-12-3',22000,NULL);

 (1)查询特定的列

示例: 查询所有员工的姓名、工资

SELECT ename,salary FROM emp;

 (2)查询所有的列

SELECT * FROM emp;

SELECT eid,ename,sex,birthday,salary,deptId FROM emp;

 (3)给列起别名

示例: 查询所有员工的姓名和工资,使用汉字别名

SELECT ename AS 姓名,salary AS 工资 FROM emp;

练习: 查询所有员工的编号、姓名、性别、生日,使用汉字别名

SELECT eid AS 编号,ename AS 姓名,sex 性别,birthday 生日 FROM emp;

练习: 查询所有员工的姓名和工资,使用一个字母作为别名

SELECT ename e,salary s FROM emp;

 (4)显示不同的记录/合并相同的记录

示例: 查询出员工都分布在哪些部门

SELECT DISTINCT deptId FROM emp;

练习: 查询出都有哪些性别的员工

SELECT DISTINCT sex FROM emp;

 (5)查询时执行计算

示例: 计算2+3-5*6.4+3.6*8.7

SELECT  2+3-5*6.4+3.6*8.7;

练习: 查询出所有员工的姓名及其年薪

SELECT ename,salary*12 FROM emp;

练习: 假设每个员工的工资增加500,年终奖5000,查询出所有员工的姓名及其年薪,给列起汉字别名

SELECT ename 姓名,(salary+500)*12+5000 年薪 FROM emp;

 (6)查询结果集排序

示例: 查询所有的部门,结果集按照部门编号升序排列

SELECT * FROM dept ORDER BY did ASC;#ascendant

示例: 查询所有的部门,结果集按照部门编号降序排列

SELECT * FROM dept ORDER BY did DESC;

describe  描述

descendant  降序

练习:查询所有的员工,结果集按照工资降序排列

SELECT * FROM emp ORDER BY salary DESC;

练习: 查询所有的员工,结果集按照年龄从小到大排列

SELECT * FROM emp ORDER BY birthday DESC;

练习: 查询所有的员工,结果集按照姓名升序排列

SELECT * FROM emp ORDER BY ename;

练习: 查询所有的员工,结果集按照工资降序排列,如果工资相同按照姓名升序排列

SELECT * FROM emp ORDER BY salary DESC,ename;

练习: 查询所有的员工,结果集中女员工显示在前边,如果性别相同,按照年龄从大到小排列

SELECT * FROM emp ORDER BY sex,birthday;

 (7)条件查询

示例: 查询出编号为7的员工

SELECT * FROM emp WHERE eid=7;

练习: 查询出姓名叫king的员工的编号,姓名,工资

SELECT eid,ename,salary FROM emp WHERE ename='king';

练习: 查询出所有的女员工

SELECT * FROM emp WHERE sex=0;

练习: 查询出20号部门下的员工有哪些

SELECT * FROM emp WHERE deptId=20;

练习: 查询出工资为5000以上的员工有哪些

SELECT * FROM emp WHERE salary>5000;

比较运算符: >  <  =   >=  <=  !=(不等于)

练习: 查询出1991-1-1后出生的员工有哪些

SELECT * FROM emp WHERE birthday>'1991-1-1';

练习: 查询出不在10号部门的员工有哪些

SELECT * FROM emp WHERE deptId!=10;

练习: 查询出没有明确部门的员工有哪些

SELECT * FROM emp WHERE deptId IS NULL;

练习: 查询出有明确部门的员工有哪些

SELECT * FROM emp WHERE deptId IS NOT NULL;

练习: 查询出工资在6000以上的男员工有哪些

SELECT * FROM emp WHERE salary>6000 AND sex=1;

练习: 查询出工资在5000~8000之间所有员工

SELECT * FROM emp WHERE salary>=5000 AND salary<=8000;

SELECT * FROM emp WHERE salary BETWEEN 5000 AND 8000;

练习:查询出工资在5000以下和8000以上的所有员工

SELECT * FROM emp WHERE salary<5000 OR salary>8000;

SELECT * FROM emp WHERE salary NOT BETWEEN 5000 AND 8000;

练习: 查询出1990年之前和1993年之后出手的员工有哪些

SELECT * FROM emp WHERE birthday<'1990-1-1' OR birthday>'1993-12-31';

练习: 查询出1993年出生的员工有哪些

SELECT * FROM emp WHERE birthday>='1993-1-1' AND birthday<='1993-12-31';

SELECT * FROM emp WHERE birthday BETWEEN '1993-1-1' AND '1993-12-31';

练习: 查询出20号部门和30号部门的员工有哪些

SELECT * FROM emp WHERE deptId=20 OR deptId=30;

SELECT * FROM emp WHERE deptId IN(20,30);

练习: 查询出不在20号部门或者30号部门的员工有哪些

SELECT * FROM emp WHERE deptId NOT IN(20,30);

AND/OR

BETWEEN.. AND../NOT BETWEEN..AND..

IS NULL/IS NOT NULL

IN() / NOT IN()

 (8)模糊条件查询

示例: 查询出姓名中含有字母e的员工

SELECT * FROM emp WHERE ename LIKE '%e%';

练习: 查询出姓名中以e以为的员工

SELECT * FROM emp WHERE ename LIKE '%e';

练习: 查询出姓名中倒数第二个字符为e的员工

SELECT * FROM emp WHERE ename LIKE '%e_';

%  可以匹配任意个字符   >=0

 _   可以匹配任意1个字符  =1

以上两个匹配符必须结合LIKE关键字使用

 (9)分页查询

假如查询的结果集有太多的数据,一次显示不完,可以使用分页显示

需要有两个条件: 当前的页码值、每页的数据量

SELECT * FROM emp LIMIT start,count;

   start: 开始查询的值,从哪一条开始查询

   count: 每页的数据量

 start = (当前的页码值-1)*每页的数据量

注意事项: start和count必须是数值型,不能加引号。

假设每页显示5条数据

第1页: SELECT * FROM emp LIMIT 0,5;

第2页: SELECT * FROM emp LIMIT 5,5;

第3页: SELECT * FROM emp LIMIT 10,5;

假设每页显示6条数据,查询前3页

第1页: SELECT * FROM emp LIMIT 0,6;

第2页: SELECT * FROM emp LIMIT 6,6;

第3页: SELECT * FROM emp LIMIT 12,6;

#

Mysq sql语句教程的更多相关文章

  1. SQL语句教程

    SQL指令 SELECT DISTINCT WHERE AND OR IN BETWEEN LIKE ORDER BY 函数 COUNT GROUP BY HAVING ALIAS 表格链接 外部链接 ...

  2. linux之SQL语句简明教程

    本教程参考http://www.1keydata.com/cn/sql/ 目的是让初学者了解linux下Mysql的操作,但是我仍想侧重于SQL语句的讲解 sql语句的学习将按照下图的流程: 当然在这 ...

  3. [SQL基础教程] 2-1 SELECT语句基础

    [SQL基础教程] 2-1 SELECT语句基础 列的查询 Syntax SELECT<列名>,..... FROM<表名>; SELECT col_1, col_2 FROM ...

  4. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 连接数据库执行SQL语句

    BIML 101 - BIML 快速入门教程 第一节 连接数据库执行SQL语句 本小节将用BIML建一个简单的可以执行的包. 新建一个biml文件,贴入下面的代码 1 <Biml xmlns=& ...

  5. mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...

  6. 【转】mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句

    转自:除非申明,文章均为一号门原创,转载请注明本文地址,谢谢! 转载地址:http://blog.csdn.net/kutejava/article/details/9164353#t5 1. if ...

  7. SqlServer教程:经典SQL语句集锦

    SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRAN ...

  8. linux之SQL语句简明教程---UPDATE DELETE FROM

    我们有时候可能会需要修改表格中的资料.在这个时候,我们就需要用到 UPDATE 指令.这个指令的语法是: UPDATE "表格名" SET "栏位1" = [新 ...

  9. linux之SQL语句简明教程---INSERT INTO

    到目前为止,我们学到了将如何把资料由表格中取出.但是这些资料是如果进入这些表格的呢? 这就是这一页 (INSERT INTO) 和下一页 (UPDATE) 要讨论的. 基本上,我们有两种作法可以将资料 ...

随机推荐

  1. oracle Notes

    1. selecting distinct values from an assocaitive array 2. Setting the NLS_LANG Environment Variable ...

  2. 什么是Spring Boot?

    什么是Spring Boot? Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者 ...

  3. Pycharm2019版官方版本激活码,无需破解

    AHD9079DKZ-eyJsaWNlbnNlSWQiOiJBSEQ5MDc5REtaIiwibGljZW5zZWVOYW1lIjoiSmV0IEdyb3VwcyIsImFzc2lnbmVlTmFtZ ...

  4. rope(平衡二叉树)

    题目描述: 链接:https://www.nowcoder.com/acm/contest/141/C来源:牛客网 Eddy likes to play cards game since there ...

  5. 用u盘和iso镜像文件装win8.1系统

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/xyl295528322/article/details/37910939 原料: 1.老毛桃U盘启动 ...

  6. HDFS文件的基本操作

    HDFS文件的基本操作: package wjn; import java.io.BufferedInputStream; import java.io.BufferedReader; import ...

  7. adb]ADB server didn't ACK

    遇到上述问题 此时由于不正常退出 会在进程中遗留Android debug进程 ,需要强制删除

  8. docker镜像仓库

    搭建私有镜像仓库 Docker Hub作为Docker默认官方公共镜像,如果想自己搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单. 下载registry镜像并启动 [roo ...

  9. 禁用usb是否一种方法?

    CM_Request_Device_EjectW?? ddk  sdk必须安装 https://blog.csdn.net/phmatthaus/article/details/49779585

  10. [css知识体系]flexbox模型

    背景 flexbox 模型的产生主要是为给布局.对齐和容器内的空间分配提供一个更有效的方法,即使尺寸未知或是动态改变的(flex,收缩,弹性 就是为此命名). flex布局使得容器能够改变子元素的宽高 ...