Mysql一
来源:互联网 发布:线切割hl绘图编程软件 编辑:程序博客网 时间:2024/06/07 07:02
SQL:结构化查询语言(Structured Query Language)。
- SQL的作用:通过SQL来操作数据库。
- 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:对用户的创建,及授权
数据库管理系统(DBMS)
- 什么是DBMS:数据的仓库
- 方便查询
- 可存储的数据量大
- 保证数据的完整、一致
- 安全可靠
- 常见DBMS:Orcale、MySQL、SQL Server、DB2、Sybase
DBMS = 管理程序 + 多个数据库(DB)
应用程序与DBMS:应用程序使得DBMS来存储数据!
DDL
- 数据库
查看所有数据库:SHOW DATABASES
切换(选择要操作的)数据库:USE 数据库名
创建数据库:CREATE DATABASE databaseName
删除数据库:DROP DATABASE dbName- 数据类型:
- int:整型
- double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,(不包含小数点)
- decimal:浮点型,在表单钱方面使用该类型,因为不会出现精度缺失问题;
- char:固定长度字符串类型; char(255),数据的长度不足指定长度,补足到指定长度!
- varchar:可变长度字符串类型;
- text(clob):字符串类型;
- blob:字节类型;
- date:日期类型,格式为:yyyy-MM-dd;
- time:时间类型,格式为:hh:mm:ss
- timestamp:时间戳类型;
表的操作
CREATE TABLE 表名
列名 列类型,
列名 列类型,
…
列名 列类型
);查看当前数据库中所有表名称:SHOW TABLES; 查看表结构:DESC 表名; 删除表:DROP TABLE 表名; 修改表:前缀:ALTER TABLE 表名
- 修改列类型(如果被修改的列已存在数据,那么新的类型可能会影响到已存在数据)
- ALTER TABLE 表名 MODIFY 列名 列类型;
- 修改列名
- ALTER TABLE 表名 CHANGE 原列名 新列名 列类型;
- 删除列
- ALTER TABLE 表名 DROP 列名;
- 修改表名称
- ALTER TABLE 原表名 RENAME TO 新表名;
- 添加列
- alter table 表名
add (
列名 列类型,
列名 列类型,
…
列名 列类型
)
DML(数据操作语言,它是对表记录的操作(增、删、改))
- 插入数据
- INSERT INTO 表名(列名1,列名2, …) VALUES(列值1, 列值2, …);
在VALUES后给出列值,值的顺序和个数必须与前面指定的列对应;
没有给出要插入的列,那么表示插入所有列的 值的顺序,必须与表创建时给出的列的顺序相同。
修改数据
UPDATE 表名 SET 列名1=列值1, 列名2=列值2, …WHERE 条件(条件可选的):
运算符:=、!=、<>、>、<、>=、<=、BETWEEN…AND、IN(…)、IS NULL、NOT、OR、AND
注意:NULL之前应该是 IS 并不是=删除数据
DELETE FROM 表名 [WHERE 条件];
在数据库中所有的字符串类型,必须使用单引,不能使用双引!
日期类型也要使用单引!
DCL
创建用户:
CREATE USER 用户名@IP地址 IDENTIFIED BY ‘密码’;
用户只能在指定的IP地址上登录
CREATE USER 用户名@’%’ IDENTIFIED BY ‘密码’;
用户可以在任意IP地址上登录
给用户授权
GRANT 权限1, … , 权限n ON 数据库.* TO 用户名@IP地址例如 GRANT ALTER,DROP,INSER,SELECT ON dbName.* TO user1@localhost;
- GRANT ALL ON 数据库.* TO 用户名@IP地址;
给用户分派指定数据库上的所有权限撤销授权
REVOKE 权限1, … , 权限n ON 数据库.* FROM 用户名@IP地址;
例如 REVOKE CREATE,ALTER ON dbName.* FROM
user1@localhost;
查看权限
SHOW GRANTS FOR 用户名@IP地址
删除用户
DROP USER 用户名@IP地址
注意:一个项目创建一个用户!一个项目对应的数据库只有一个;这个用户只能对这个数据库有权限,其他数据库你就操作不了了!
DQL 数据查询语言( 查询不会修改数据库表记录!)
- 基本查询
- 字段(列)控制
查询所有列: SELECT * FROM 表名;
查询指定列: SELECT 列1 , 列2, … FROM 表名;- 去重复查询(重复仅记录一次)
SELECT DISTINCT 列1 , 列2, … 列N FROM 表名;- 列运算( 数量类型的列可以做加、减、乘、除运算)
SELECT sal*1.5 FROM emp
转换NULL值
有时需要把NULL转换成其它值,例如com+1000时,如果com列存在NULL值,那么NULL+1000还是NULL,而我们这时希望把NULL当前0来运算
SELECT IFNULL(comm, 0)+1000 AS 奖金 FROM emp;
其中AS可以省略- 条件控制
条件查询
SELECT语句也可以使用WHERE子句来控制记录。
SELECT empno,ename,sal,comm FROM emp WHERE sal > 10000 AND comm IS NOT NULL
模糊查询
当你想查询姓张,并且姓名一共两个字的员工时,这时就可以使用模糊查询
SELECT * FROM table1 WHERE ename LIKE ‘张_’
模糊查询需要使用运算符:LIKE,其中_匹配一个任意字符,注意,只匹配一个字符而不是多个.
// 姓名由3个字组成的员工*/。
SELECT * FROM emp WHERE ename LIKE ‘_‘;
其中%匹配0~N个任意字符
SELECT * FROM emp WHERE ename LIKE ‘%阿%’;
姓名以阿开头和结尾的员工也都会查询到
- 排序(ORDER BY)
- 升序
SELECT * FROM emp ORDER BY sal ASC;
按sal排序,升序. 其中ASC是可以省略的- 降序
SELECT * FROM emp ORDER BY comm DESC;
按comm排序,降序, 其中DESC不能省略- 使用多列作为排序条件
SELECT * FROM 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;
查询平均工资分组查询( GROUND BY)
分组查询是把记录使用某一列进行分组,然后查询组信息。
例如:查看所有部门的记录数。
SELECT deptno, COUNT(*) FROM emp GROUP BY deptno;
–> 使用deptno分组,查询部门编号和每个部门的记录数
组条件( HAVING表示筛选之后再次筛选)
以部门分组,查询每组记录数。条件为记录数大于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行记录。
- MySQL(一)
- mysql(一)
- MYSQL(一)
- MySQL(一)
- Mysql一
- mysql(一)
- mysql一
- MYSQL常用命令(一) 连接MYSQL:
- Mysql系列一:初识Mysql
- MySQL 学习<一> MySQL简介
- MySQL入門學習(一)
- MySQL入门学习(一)
- MySQL入门学习 一
- mysql操作(一)
- MySQL 学习笔记一
- MySQL 优化(一)
- MySQL入门学习(一)
- MySQL 同步(一)
- java打包下载
- 排列序列 (康托展开)
- VS2017+opencv2.49配置(高版本类似)||图挂了/(ㄒoㄒ)/~~
- Unsupported major.minor version 51.0解决办法
- 通过for循环每隔两秒按顺序打印出arr中的数字
- Mysql一
- VS2013编译错误:-D_SCL_SECURE_NO_WARNINGS解决方案
- 《MySQL与MariaDB学习指南》学习笔记2.0
- 深入学习NSUserDefaults/standardUserDefaults
- 获取系统中所有的音频输出设备信息
- layer的使用,open打开框框的关闭
- 输出水仙花数(广义水仙花)
- HDU4006 求集合第K大数(线段树+离散化)
- 关于base64编码的原理及实现