mysql数据库语法_MySQL数据库语法(一)

MySQL数据库语法

数据库管理系统(DBMS)的概述

什么是DBMS:数据的仓库

方便查询

可存储的数据量大

保证数据的完整、一致

安全可靠

DBMS的发展:今天主流数据库为关系型数据库管理系统(RDBMS 使用表格存储数据)

常见DBMS:Orcale、MySQL、SQL Server、DB2、Sybase

DBMS = 管理程序 + 多个数据库(DB)

DB = 多个table(不只是table,但这里先不介绍其他组成部分)

table的结构(即表结构)和table的记录(即表记录)的区别!

应用程序与DBMS:应用程序使得DBMS来存储数据!

学号 姓名 性别 年龄 学历

str str str int

1001 张三 女 23

安装MySQL

参数《MySQL安装图解.doc》安装

MySQL安装成功后会在两个目录中存储文件:

D:\Program Files\MySQL\MySQL Server 5.1:DBMS管理程序

C:\ProgramData\MySQL\MySQL Server 5.1\data:DBMS数据库文件(卸载MySQL时不会删除这个目录,需要自己手动删除)

MySQL重要文件

D:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe:客户端程序,用来操作服务器。但必须保证服务器已开启才能连接上!

D:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld.exe:服务器程序,必须先启动它,客户端才能连接上服务器。

D:\Program Files\MySQL\MySQL Server 5.1\bin\my.ini:服务器配置文件

C:\ProgramData\MySQL\MySQL Server 5.1\data

该目录下的每个目录表示一个数据库,例如该目录下有一个mysql目录,那么说明你的DBMS中有一个名为mysql的database。

在某个数据库目录下会有0~N个扩展名为frm的文件,每个frm文件表示一个table。你不要用文本编辑器打开它,它是由DBMS来读写的!

my.ini,MySQL最为重要的配置文件

配置MySQL的端口:默认为3306,没有必要去修改它;

配置字符编码:

* [client]下配置客户端编码:default-character-set=gbk

* [mysqld]下配置服务器编码:character-set-server=utf8

配置二进制数据大小上限:

* 在[mysqld]下配置:max_allowed_packet=8M

C:\ProgramData\MySQL\MySQL Server 5.5\data目录下:有一个目录就有一个数据库!!!

每个数据库目录下,有一个frm文件,就说明有一张表!

服务器操作

开启服务器(必须保证mysql为windows服务):net start mysql

查看进程表中是否存在:mysqld.exe进程(存在)

关闭服务器(必须保证mysql为windows服务):net stop mysql

查看进程表中是否存在:mysqld.exe进程(不存在)

客户登操作

cmd

登录服务器:mysql -uroot -p123 -hlocalhost

-u:后面跟随用户名

-p:后面跟随密码

-h:后面跟随IP

退出服务器:exit或quit

SQL

什么是SQL:结构化查询语言(Structured Query Language)。

SQL的作用:客户端使用SQL来操作服务器。

启动mysql.exe,连接服务器后,就可以使用sql来操作服务器了。

将来会使用Java程序连接服务器,然后使用sql来操作服务器。

SQL标准(例如SQL99,即1999年制定的标准):

由国际标准化组织(ISO)制定的,对DBMS的统一操作方式(例如相同的语句可以操作:mysql、oracle等)。

SQL方言

某种DBMS不只会支持SQL标准,而且还会有一些自己独有的语法,这就称之为方言!例如limit语句只在MySQL中可以使用

SQL语法

SQL语句可以在单行或多行书写,以分号结尾

可使用空格和缩进来增强语句的可读性

MySQL不区别大小写,建议使用大写

SQL语句分类(*****)

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;

创建、删除、修改:库、表结构!!!

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);

增、删、改:表记录

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

DQL*****(Data Query Language):数据查询语言,用来查询记录(数据)。

ddl:数据库或表的结构操作()

dml:对表的记录进行更新(增、删、改)()

dql:对表的记录的查询(*****,难点)

dcl:对用户的创建,及授权!

DDL

数据库

查看所有数据库:SHOW DATABASES

切换(选择要操作的)数据库:USE 数据库名

创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8]

删除数据库:DROP DATABASE [IF EXISTS] mydb1

修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8

数据类型(列类型)

int:整型

double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;

decimal:浮点型,在表单钱方面使用该类型,因为不会出现精度缺失问题;

char:固定长度字符串类型; char(255),数据的长度不足指定长度,补足到指定长度!

varchar:可变长度字符串类型; varchar(65535), zhangSan

text(clob):字符串类型;

很小

blob:字节类型;

很小

date:日期类型,格式为:yyyy-MM-dd;

time:时间类型,格式为:hh:mm:ss

timestamp:时间戳类型;

创建表:

CREATE TABLE [IF NOT EXISTS] 表名(ITCAST_0001

列名 列类型,

列名 列类型,

...

列名 列类型

);

查看当前数据库中所有表名称:SHOW TABLES;

查看指定表的创建语句:SHOW CREATE TABLE 表名(了解);

查看表结构:DESC 表名;

删除表:DROP TABLE 表名;

修改表:前缀:ALTER TABLE 表名

修改之添加列:

ALTER TABLE 表名 ADD (

列名 列类型,

列名 列类型,

...

);

修改之修改列类型(如果被修改的列已存在数据,那么新的类型可能会影响到已存在数据):ALTER TABLE 表名 MODIFY 列名 列类型;

修改之修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;

修改之删除列:ALTER TABLE 表名 DROP 列名;

修改表名称:ALTER TABLE 原表名 RENAME TO 新表名;

alter table 表名

add (

列名 列类型,

列名 列类型,

...

列名 列类型

)

alter table 表名

modify 列名 列新的类型

alter table 表名

rename to 新名

DQL:SELECT * FROM 表名

DML(数据操作语言,它是对表记录的操作(增、删、改)!)

插入数据

INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1, 列值2, ...);

在表名后给出要插入的列名,其他没有指定的列等同与插入null值。所以插入记录总是插入一行,不可能是半行。

在VALUES后给出列值,值的顺序和个数必须与前面指定的列对应

INTERT INTO 表名 VALUES(列值1, 列值2)

没有给出要插入的列,那么表示插入所有列。

值的个数必须是该表列的个数。

值的顺序,必须与表创建时给出的列的顺序相同。

修改数据

UPDATE 表名 SET 列名1=列值1, 列名2=列值2, ... [WHERE 条件]

条件(条件可选的):

条件必须是一个boolean类型的值或表达式:UPDATE t_person SET gender='男', age=age+1 WHERE sid='1';

运算符:=、!=、<>、>、=、<=、BETWEEN...AND、IN(...)、IS NULL、NOT、OR、AND

WHERE age >= 18 AND age <= 80

WHERE age BETWEEN 18 AND 80

WHERE name='zhangSan' OR name='liSi'

WHERE name IN ('zhangSan', 'liSi')

WHERE age IS NULL, 不能使用等号

WHERE age IS NOT NULL

删除数据

DELETE FROM 表名 [WHERE 条件];

TRUNCATE TABLE 表名:TRUNCATE是DDL语句,它是先删除drop该表,再create该表。而且无法回滚!!!

在数据库中所有的字符串类型,必须使用单引,不能使用双引!

日期类型也要使用单引!

// 插入所有列

INSERT INTO stu(

number, name, age, gender

)

VALUES(

'ITCAST_0001', 'zhangSan', 28, 'male'

);

// 插入部分列,没有指定的列默认为NULL值

INSERT INTO stu(

number, name

) VAKLUES(

'ITCAST_0002', 'liSi'

)

// 不给出插入列,那么默认为插入所有列!值的顺序要与创建表时列的顺序相同

INSERT INTO stu VALUES(

'ITCAST_0003', 'wangWu', 82, 'female'

);

UPDATE

UPDATE stu SET name='xxx', age=102

DCL(理解)

一个项目创建一个用户!一个项目对应的数据库只有一个!

这个用户只能对这个数据库有权限,其他数据库你就操作不了了!

创建用户

CREATE USER 用户名@IP地址 IDENTIFIED BY '密码';

用户只能在指定的IP地址上登录

CREATE USER 用户名@'%' IDENTIFIED BY '密码';

用户可以在任意IP地址上登录

给用户授权

GRANT 权限1, … , 权限n ON 数据库.* TO 用户名@IP地址

权限、用户、数据库

给用户分派在指定的数据库上的指定的权限

例如;GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO user1@localhost;

给user1用户分派在mydb1数据库上的create、alter、drop、insert、update、delete、select权限

GRANT ALL ON 数据库.* TO 用户名@IP地址;

给用户分派指定数据库上的所有权限

撤销授权

REVOKE 权限1, … , 权限n ON 数据库.* FROM 用户名@IP地址;

撤消指定用户在指定数据库上的指定权限

例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;

撤消user1用户在mydb1数据库上的create、alter、drop权限

查看权限

SHOW GRANTS FOR 用户名@IP地址

查看指定用户的权限

删除用户

DROP USER 用户名@IP地址

*****DQL -- 数据查询语言

查询不会修改数据库表记录!

一、 基本查询

字段(列)控制

查询所有列

SELECT * FROM 表名;

SELECT * FROM emp;

--> 其中“*”表示查询所有列

查询指定列

SELECT 列1 [, 列2, ... 列N] FROM 表名;

SELECT empno, ename, sal, comm FROM 表名;

完全重复的记录只一次

当查询结果中的多行记录一模一样时,只显示一行。一般查询所有列时很少会有这种情况,但只查询一列(或几列)时,这总可能就大了!

SELECT DISTINCT * | 列1 [, 列2, ... 列N] FROM 表名;

SELECT DISTINCT sal FROM emp;

--> 保查询员工表的工资,如果存在相同的工资只显示一次!

列运算

I 数量类型的列可以做加、减、乘、除运算

SELECT sal*1.5 FROM emp;

SELECT sal+comm FROM emp;

II 字符串类型可以做连续运算

SELECT CONCAT('$', sal) FROM emp;

III 转换NULL值

有时需要把NULL转换成其它值,例如com+1000时,如果com列存在NULL值,那么NULL+1000还是NULL,而我们这时希望把NULL当前0来运算。

SELECT IFNULL(comm, 0)+1000 FROM emp;

--> IFNULL(comm, 0):如果comm中存在NULL值,那么当成0来运算。

IV 给列起别名

你也许已经注意到了,当使用列运算后,查询出的结果集中的列名称很不好看,这时我们需要给列名起个别名,这样在结果集中列名就显示别名了

SELECT IFNULL(comm, 0)+1000 AS 奖金 FROM emp;

--> 其中AS可以省略

条件控制

条件查询

与前面介绍的UPDATE和DELETE语句一样,SELECT语句也可以使用WHERE子句来控制记录。

SELECT empno,ename,sal,comm FROM emp WHERE sal > 10000 AND comm IS NOT NULL;

SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 20000 AND 30000;

SELECT empno,ename,job FROM emp WHERE job IN ('经理', '董事长');

模糊查询

当你想查询姓张,并且姓名一共两个字的员工时,这时就可以使用模糊查询

SELECT * FROM emp WHERE ename LIKE '张_';

--> 模糊查询需要使用运算符:LIKE,其中_匹配一个任意字符,注意,只匹配一个字符而不是多个。

--> 上面语句查询的是姓张,名字由两个字组成的员工。

SELECT * FROM emp WHERE ename LIKE '___'; /姓名由3个字组成的员工/

如果我们想查询姓张,名字几个字可以的员工时就要使用“%”了。

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

--> 其中%匹配0~N个任意字符,所以上面语句查询的是姓张的所有员工。

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

--> 千万不要认为上面语句是在查询姓名中间带有阿字的员工,因为%匹配0~N个字符,所以姓名以阿开头和结尾的员工也都会查询到。

SELECT * FROM emp WHERE ename LIKE '%';

--> 这个条件等同与不存在,但如果姓名为NULL的查询不出来!

二、排序

升序

SELECT * FROM WHERE emp ORDER BY sal ASC;

--> 按sal排序,升序!

--> 其中ASC是可以省略的

降序

SELECT * FROM WHERE emp ORDER BY comm DESC;

--> 按comm排序,降序!

--> 其中DESC不能省略

使用多列作为排序条件

SELECT * FROM WHERE emp ORDER BY sal ASC, comm DESC;

--> 使用sal升序排,如果sal相同时,使用comm的降序排

三、聚合函数

聚合函数用来做某列的纵向运算。

COUNT

SELECT COUNT(*) FROM emp;

--> 计算emp表中所有列都不为NULL的记录的行数

SELECT COUNT(comm) FROM emp;

--> 云计算emp表中comm列不为NULL的记录的行数

MAX

SELECT MAX(sal) FROM emp;

--> 查询最高工资

MIN

SELECT MIN(sal) FROM emp;

--> 查询最低工资

SUM

SELECT SUM(sal) FROM emp;

--> 查询工资合

AVG

SELECT AVG(sal) FROM emp;

--> 查询平均工资

四、分组查询

分组查询是把记录使用某一列进行分组,然后查询组信息。

例如:查看所有部门的记录数。

SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;

--> 使用deptno分组,查询部门编号和每个部门的记录数

SELECT job, MAX(SAL) FROM emp GROUP BY job;

--> 使用job分组,查询每种工作的最高工资

组条件

以部门分组,查询每组记录数。条件为记录数大于3

SELECT deptno, COUNT() FROM emp GROUP BY deptno HAVING COUNT() > 3;

五、limit子句(方言)

LIMIT用来限定查询结果的起始行,以及总行数。

例如:查询起始行为第5行,一共查询3行记录

SELECT * FROM emp LIMIT 4, 3;

--> 其中4表示从第5行开始,其中3表示一共查询3行。即第5、6、7行记录。

select * from emp limit 0, 5;

一页的记录数:10行

查询第3页

select * from emp limit 20, 10;

(当前页-1) * 每页记录数

(3-1) * 10

(17-1) * 8, 8

==============================

select

from

where

group by

having

order by

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作业1---四则运算

一.需求分析&#xff1a; 除了整数以外&#xff0c;还要支持真分数的四则运算&#xff0c;真分数的运算&#xff0c;例如&#xff1a;1/6 1/8 7/24 运算符为 , −, , 并且要求能处理用户的输入&#xff0c;并判断对错&#xff0c;打分统计正确率。 要求能处理用户输入的真分…

python有序数组中删除元素_python刷LeetCode:26. 删除排序数组中的重复项

题目描述&#xff1a;给定一个排序数组&#xff0c;你需要在原地删除重复出现的元素&#xff0c;使得每个元素只出现一次&#xff0c;返回移除后数组的新长度。不要使用额外的数组空间&#xff0c;你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组…

mysql数据库修改数据库名称_MySQL数据库之MySQL 修改数据库名称的一个新奇方法...

本文主要向大家介绍了MySQL数据库之MySQL 修改数据库名称的一个新奇方法 &#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习MySQL数据库有所帮助。MySQL在5.1引入了一个rename database操作&#xff0c;但在MySQL5.1.23后又不支持这个命令。可以说是一个实验性的…

Lesson 001 —— 数据

Lesson 001 —— 数据 数据&#xff08;data&#xff09;是事实或观察的结果&#xff0c;是对客观事物的逻辑归纳&#xff0c;是用于表示客观事物的未经加工的原始素材。数据是信息的表现形式和载体&#xff0c;可以使符号、文字、数字、语音、图像、视频等。 进制 进制也就是进…

工作记录四-etcd与flanneld

######################### etcd用来做flannld的数据中心&#xff0c;记录flannld各主机子网的配置## flannld使各容器实例处于同一子网内&#xff0c;可以相互访问####################### ### 一、etcd安装及使用## 1. 下载编译二进制包git clone https://github.com/coreos…

C#获取刚插入的数据的id

在开发程序中我们经常会遇到两个表或多个表关联同时插入数据的需求。 那么我们刚给主表插入一条数据&#xff0c;接着给副表插入数据时其中一个字段要存储与主表关联的id&#xff0c;那么我们该怎么获取刚插入的那条数据的id呢&#xff1f; insert infor values(,) ;SELECT Ide…

感谢您的提问_感谢您的反馈,我们正在改进的5种方法

感谢您的提问by freeCodeCamp通过freeCodeCamp 感谢您的反馈&#xff0c;我们正在改进的5种方法 (5 Ways We’re Improving Thanks to Your Feedback) This was originally published on our now-defunct blog on September 17, 2015.该文章最初于2015年9月17日发布在我们现已…

sql三个表join_「数据蒋堂」第 31 期:JOIN 简化 – 维度对齐

【数据蒋堂】第 31 期&#xff1a;JOIN 简化 – 维度对齐我们先把上一期中双子表对齐例子的 SQL 写出来&#xff1a;SELECT Orders.id, Orders.customer, A.x, B.y FROM Orders LEFT JOIN (SELECT id,SUM(price) x FROM OrderDetail GROUP BY id ) A ON Orders.idA.id LEFT J…

radius

radius协议使用的是UDP传输协议&#xff0c;UDP协议相对于TCP更快速&#xff0c;无连接的不可靠。radius协议的包格式&#xff1a;0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1-----------…

apt-get常用命令及工作原理

https://blog.csdn.net/mosquito_zm/article/details/63684608转载于:https://www.cnblogs.com/diyunpeng/p/9772866.html

day10_控制文件

---------------------验证互为镜像功能---------------------窗口1cd /oracle/app/oradata/ecomrm control03.ctl 窗口2SQL> startup force;ORACLE instance started.Total System Global Area 285212672 bytesFixed Size 1218992 bytesVariable Size …

堆叠自编码器中的微调解释_25种深刻漫画中的编码解释

堆叠自编码器中的微调解释by freeCodeCamp通过freeCodeCamp 25种深刻漫画中的编码解释 (Coding Explained in 25 Profound Comics) We asked our open source community to share the comics they found most profoundly described coding, via our news site. Here are their…

linux和mysql重点哪个_重要的MySQL 文档存储知识点扫盲

MySQL 文档存储 可以跳过底层数据结构创建、数据规范化和其它使用传统数据库时需要做的工作&#xff0c;直接存储数据。MySQL 可以提供 NoSQL JSON 文档存储Document Store 了&#xff0c;这样开发者保存数据前无需 规范化normalize 数据、创建数据库&#xff0c;也无需在开发之…

python端口扫描工具_Python实现的多线程端口扫描工具分享

# -*- coding: utf-8 -*-__author__ Phtih0nimport threading, socket, sys, cmd, os, Queue#扫描常用端口PortList [21, 22, 23, 25, 80, 135, 137, 139, 445, 1433, 1502, 3306, 3389, 8080, 9015]#得到一个队列def GetQueue(list):PortQueue Queue.Queue(65535)for p in …

Linux系统启动全过程

分为两部分&#xff0c;第一部分是硬件本身需要加载的信息&#xff0c;之后才是加载Linux相关信息&#xff0c;因为有装有双系统的机器嘛 1.计算机加电 2.BIOS开始运行&#xff0c;检测硬件&#xff1a;cpu、内存、硬盘等 3.BIOS读取CMOS存储器中的参数&#xff0c;选择启动设备…

day09_读写分离_Atlas小记

GRANT ALL PRIVILEGES ON *.* TO root% identified by mysql;FLUSH PRIVILEGES;主从库上全做--------------------------------------------------------------------yum install -y gcc*rpm -ivh Atlas-2.2.1.el5.x86_64.rpm 【rpm包直接安装】rpm -ql Atlas 【查看安装路径…

Free Code Camp现在有本地组

by freeCodeCamp通过freeCodeCamp Free Code Camp现在有本地组 (Free Code Camp now has Local Groups) Our open source community was born online. And our campers are adept at using the internet to communicate. Most of this communication is just short text messa…

二十四点游戏python_[求助]关于二十四点游戏python

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼24点纸牌游戏的开发24点是一种老少咸宜的游戏&#xff0c;它的具体玩法如下&#xff1a;给玩家4张牌&#xff0c;每张牌的面值在1&#xff5e;13之间&#xff0c;允许其中有数值相同的牌。采用加、减、乘、除四则运算&#xff0c;允…

python-3.6.2安装

1、下载python-3.6.2-amd64.exe安装包 官网下载地址&#xff1a;https://www.python.org/ 2、Python安装&#xff0c;双击傻瓜式安装&#xff08;用英文路径&#xff0c;不要有空格&#xff09;&#xff0c; 特别要注意勾上Add Python 3.6 to PATH&#xff08;勾选后&#xff0…

Siege压力工具

Siege官方&#xff1a;http://www.joedog.org/ Siege下载&#xff1a;http://www.joedog.org/pub/siege/siege-latest.tar.gz Siege解压并安装&#xff1a;# tar -zxvf siege-latest.tar.gz # cd siege-latest/ #./configure #make #make installSiege使用:# siege -h 查看相关…