MySQLbase
/*多行注释*/
-- 单行注释
-- 创建用户: CREATE USER '用户名'[@'主机名'] IDENTIFIED BY '密码'
-- 主机名可以为空,省略主机名表示默认权限为%, 所有主机都可以链接
CREATE USER 'jredu'@'localhost' IDENTIFIED BY 'jredu';
-- GRANT 给用户分配权限
-- GRANT 权限名 ON 数据库名.表名 TO 用户@'主机名'
-- ALL 表示所有权限 *.*表示所有数据库的所有表
GRANT SELECT ON mydb.`user` TO 'jredu'@'localhost';
GRANT ALL ON *.* TO 'jredu'@'localhost';
-- REVOKE FROM 删除用户权限
REVOKE ALL ON *.* FROM 'jredu'@'localhost';
-- 创建数据库
-- CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARACTER SET 'UTF8']
CREATE DATABASE IF NOT EXISTS test CHARACTER SET "UTF8";
-- 删除数据库 DROP DATABASE [IF EXISTS] 数据库名
DROP DATABASE IF EXISTS test;
-- 查询本机中所有数据库
SHOW DATABASES;
-- 使用哪个数据库, 表示从此处开始的所有查询,将默认针对这个数据库
use mydb;
-- 查询本数据库中所有表
SHOW TABLES;
/*
mySQL中常见的数据类型
1、字符型
① char: 储存固定个数的字符串!如果长度不够指定的长度,则自动用空格补齐。 存储范围0~255个字符。
② varchar: 储存可变长度的字符串。 最常用的。
③ Text: 储存可变长度的字符串。 用于发布大量文章。
④ enum("男","女"): 枚举类型。 字段中只能存储罗列出的数据。
2、 整形
① TINYINT 有符号 -2^7 ~ 2^7-1 无符号位 0~2^8-1
② SMALLINT 有符号 -2^15 ~ 2^15-1 无符号位 0~2^16-1
③ MEDIUMINT 有符号 -2^23 ~ 2^23-1 无符号位 0~2^24-1
④ INT 有符号 -2^31 ~ 2^31-1 无符号位 0~2^32-1
⑤ BIGINT 有符号 -2^63 ~ 2^63-1 无符号位 0~2^64-1
3、 浮点型
① FLOAT 单精度浮点数,可以精确到小数点后7-8位数字
② DOUBLE 双精度浮点数,可以精确到小数点后15-16位数字
*/
/* ① 创建表
CREATE TABLE IF NOT EXISTS 表名(
列定义语句1,
列定义语句2,
…………
);
② 列定义语句
列名 数据类型 [列定义关键字1、列定义关键字2、……]
id INT UNSIGNED auto_increment PRIMARY KEY
③ 列定义关键字
UNSIGNED -- 无符号。 只能整形才有无符号设置
auto_increment -- 自动增长列。 自动增长的列必须是主键!!!
PRIMARY KEY -- 主键。 可以简写为KEY
NOT NULL -- 非空。
DEFAULT '值' -- 设置默认值
UNIQUE -- 唯一的。 这一列中的所有值,不允许有重复的。
④ 主键
>>> 主键表示一个表中最重要的列,通常用于给ID、编号等特殊列设置为主键
>>> 主键默认不能重复,也就是说设置主键就默认设置唯一性约束(UNIQUE)。
>>> 主键默认不能为空,也就是说设置主键就默认设置非空约束(NOT NULL)。
>>> 只有主键才能设置自动增长。
也就是说,自增必须是主键,主键不一定自增
>>> 主键有两种设置方式:
a.直接在列定义语句最后,加上PRIMARY KEY或KEY
eg:id INT UNSIGNED PRIMARY KEY
b.在所有列定义完成后,使用RIMARY KEY(字段)设置主键
eg:PRIMARY KEY(id)
*/
USE mydb;
CREATE TABLE IF NOT EXISTS tb1(
id INT UNSIGNED auto_increment UNIQUE,
`name` VARCHAR(255) NOT NULL,
age INT ,
height DOUBLE(3,2),
sex ENUM("男","女") DEFAULT "男",
PRIMARY KEY(id)
);
-- 显示当前数据库中的所有表
SHOW TABLES;
-- 显示表结构
SHOW COLUMNS FROM tb1;
-- 显示当前表的建表语句
SHOW CREATE TABLE tb1;
-- 删除表
DROP TABLE IF EXISTS TB1;
-- 修改表名
ALTER TABLE TB1 RENAME TO TB2;
/*
1、SQL语句的组成
数据控制语句DCL:GRANT添加权限 REVOKR 删除权限
数据定义语句DDL: CREAT创建 DROP删除
数据操作语句DML:INSERT插入 UPDATE修改 DELETE删除
数据查询语句DQL: SELECT查询
*/
USE my;
CREATE TABLE IF NOT EXISTS tb(
id INT UNSIGNED PRIMARY KEY auto_increment,
`name` VARCHAR(255),
age INT DEFAULT 0,
sex ENUM("男","女") DEFAULT "男"
);
SHOW TABLES;
SHOW COLUMN FROM tb;
-- 向表中插入一条数据
INSERT INTO tb(`name`,age,sex) VALUES("张三",14,"男");
-- 可以只插入个别字段,其他字段必须不是NOT NULL
INSERT INTO tb(`name`) VALUES("张三");
-- INTO可以省略,表名后面的字段也可以省略。
-- 但是省略后必须将所有字段一一填入,自增的主键可以填入null
INSERT tb VALUES(NULL,"张三",14,"男");
-- 同时插入多条数据。
-- 由于前一个id手动设为8,则后续自增将从9开始
INSERT TB VALUES(8,"张三",14,"男"),(NULL,"张三",14,"男");
-- [UPDATE更新语句]
-- UPDATE 表名 SET 字段名=新值 WHERE id=8;
UPDATE tb SET `name`="李四"; -- 将表中所有数据的name都改为李四
UPDATE tb SET `name`="王五",age=19 WHERE id=8; -- 只修改id为8的数据 可以,分隔多个值
/*WHERE查询条件判断
1、运算符 > < = != <> <= >=
eg:SELECT * FROM tb WHERE id<>8;
2、逻辑符 NOT AND OR
eg:SELECT * FROM tb WHERE id=8 OR id=3;
3、ISNULL(字段)检测某个字段是否为空
eg:SELECT * FROM tb WHERE NOT ISNULL(age);
]
4、BETWEEN……AND……介于两者之间
eg:SELECT * FROM tb WHERE id BETWEEN 2 AND 10---age>2 AND age<10;
5、IN 查询某字段在某些值之间
eg:SELECT * FORM tb where id in (1,2,3,4,5,6);
6、LIKE:相似匹配
①相似匹配是,用%表示任何个字符。
eg:SELECT * FROM tb WHERE `name` LIKE "%张%";
②相似匹配是,用_表示一个字符。
eg:SELECT * FROM tb WHERE `name` LIKE "_李%";
[了解]
7、EXISTS(子查询语句)
如果子查询语句返回的数组>=1条,则EXISTS返回true,否则EXISTS返回false
eg:SELECT * FROM tb WHERE EXISTS(SELECT * FROM tb WHERE id=1);
上述式子,如果id有1,则相当于WHERE TRUE;否则相当于WHERE FALSE;
8、ANY(子查询语句)子查询返回一组数据,要求满足其中任意一个即可生效;
ALL(子查询语句)子查询返回一组数据,要求满足其中所有数据即可生效;
*/
SELECT * FROM tb WHERE `name` =ANY(SELECT `name` FROM tb WHERE id>3);
-- 【DELETE 删除语句】
-- 如果省略where条件,将删除表中所有数据
DELETE FROM tb WHERE id = 3;
/* 清空表
delete清空后,在新增数据,自增的主键将从原来的值继续增长;
TRUNCATE清空后,在新增数据,自增的主键将从0开始增长
*/
DELETE FROM tb;
TRUNCATE TABLE tb;
-- 【select 查询语句】
-- SELECT 列名[, ...] FROM 表明 [WHERE 查询条件] [ORDER BY 列名 ASC/DESC];
-- ① SELECT * 表示查询所有字段
-- ② ORDER BY 表示对查出的数据进行排序,排序语句必须在where语句之后!
-- ASC 表示升序 DESC 表示降序
SELECT * FROM tb WHERE id>0 ORDER BY age DESC;
-- 【列表达式】
-- 根据已有的列所查询出来的结果,使用case结构虚拟出来的列,称为列表达式
-- AS 关键字:用于给列名起别名,当然AS关键字可以省略。中英文都可
SELECT `name` "姓名",age AS "年龄",(
CASE
WHEN age>=18 THEN "成年人"
WHEN age<18 THEN "未成年"
ELSE "判断异常"
END
)"是否成年" FROM tb
-- 对查询的结构去重
SELECT DISTINCT age FROM tb;
-- SUM() 对某一列进行求和
SELECT SUM(age) AS "年龄和" FROM tb;
-- AVG() 对某列求平均值
SELECT AVG(age) AS "平均值" FROM tb;
-- COUNT() 求数据的总个数
SELECT COUNT(age) AS "几个人" FROM tb;
-- MAX() 求某列的最大值
SELECT MAX(age) AS "最大值" FROM tb;
-- MIN() 求某列的最小值
SELECT MIN(age) AS "最小值" FROM tb;
MySQLbase的更多相关文章
- sqlmap用户手册
http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sqlmap这么一个url的时候,它会: 1.判断可注入的参数2.判断可以用那种SQL注入 ...
- mybatis 注解快速上手
一.mybatis 简单注解 关键注解词 : @Insert : 插入sql , 和xml insert sql语法完全一样 @Select : 查询sql, 和xml select sql语法完全一 ...
- 初试docker以及搭建mysql on docker
前一阵阅读了google的borg论文,在最后的related works和总结中发现了kubernetes.从论文中了解的kubernetes这个东西很有意思,按照论文所说,它的实现有希望解决an ...
- EF多数据库预热
使用EF第一次加载程序会很慢,因为EF第一次会生成实体类和数据库的对应关系并做缓存,怎么解决这个问题呢?站在巨人的肩膀上将会省力很多,博客园的dudu已经给出了个解决方案(EF版本6.0以上) htt ...
- 【转】sqlmap用户手册
http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sqlmap这么一个url的时候,它会: 1.判断可注入的参数2.判断可以用那种SQL注入 ...
- Python的路径引用
1.以HOME目录为准,进行跳转 sys.path.append(os.path.dirname(__file__) + os.sep + '../') from config import swor ...
- Python之matplotlib学习(四)
例子12:ipython使用--pylab参数,默认加入matplotlib模块 [root@typhoeus79 guosong]# ipython --pylab WARNING: IPython ...
- Python mysqldb模块
#!/usr/bin/env python2.7 #-*- coding:utf8 -*- import os import sys import logging import MySQLdb fro ...
- (7) MySQL数据库备份详解
对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据可能也已经被删除了, 我们不能使 ...
随机推荐
- PHP浮点型(float)转换为整形(int)/round()保留小数点后几位
round(x,y); x:需要转换的变量 y:保留几位小数 <?php echo round(3.112312321) //输出3 echo round(3.112312321,3) //输出 ...
- MySQL or MariaDB 错误解决方法之报错代码1045
phpMyAdmin登录报错:mysqli_real_connect(): (28000/1045): Access denied for user 'root'@'localhost' (using ...
- 最常用前端框架BootStrap——栅格系统
前 言 Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义类,还有强大的mix ...
- PE文件格式详解,第三讲,可选头文件格式,以及节表
PE文件格式详解,第三讲,可选头文件格式,以及节表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶可选头结构以及作 ...
- Python面试题之生成器/迭代器
1.为什么要有生成器? 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个 ...
- Java面向对象 其他对象
Java面向对象 其他对象 知识概要: (1)可变参数 (2)静态导入 (3)System (4)Runtime (5)Date Calendar (6)Math 本 ...
- 替代PhotoShop:GIMP图形编辑器的使用
GIMP最早是linux环境下用于图形编辑的一款开源软件,目前的功能很已经很丰富,如果使用得当,在很多的图形编辑操作上完全可以替代收费的Photoshop(PS).目前GIMP已经发展成了多平台的开源 ...
- DevOps之域名
唠叨话 关于德语噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. 域名系统DNS(Domain Name System) 关于域名,知识与技能的层次(知道.理解.运用) ...
- vb6.0快速操作注册表函数大全(仅字符串KEY值部分)
Option Explicit '声明要加载的函数 Private Declare Function RegCreateKey Lib "advapi32.dll" Alias & ...
- Angular4 后台管理系统搭建(10) - 做一个通用的可跨域上传文件的组件
写的很慢,不知不觉这是第十篇了.但是我其他事情太多,只能抽空写下.现在angular4或angular2流行的上传方式是ng2-file-upload.它的功能很强大.但是我没有配置成可以跨域上传的. ...