/*多行注释*/

-- 单行注释

-- 创建用户: 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;

mysql base_MySQLbase相关推荐

  1. mysql 快捷查询数据库各表占用空间,mysql查看索引占用空间,mysql查看数据占用空间

    先贴一张图! 第一步,"很重要" 在mysql中,有一个创建之初自带的库information_schema,这个库中包含着数据库相关信息,查询数据占用空间就是使用该库,所以首先进 ...

  2. mysql并发更新数据,多用户并发修改数据解决方案。

    mysql并发更新数据,多用户并发修改数据解决方案. 在系统中,有一些如余额.资产.积分的数据,是要保证数据一致性的.如,一个人使用两个设备同时进行消费操作,如何保证数据一致性的问题. 我们一起来思考 ...

  3. mysql查询字段大小写结果相同,mysql大小写查询不敏感,mysql5.7查询不区分大小写解决方案。

    下面有两条sql,主键查询,在mysql中查询到的结果相同. SELECT* FROM USER WHEREid = 'EM58hdK4nXC';SELECT* FROM USER WHEREid = ...

  4. 数据库中自定义排序规则,Mysql中自定义字段排序规则,Oracle中自定义字段排序规则,decode函数的用法,field函数的用法

    数据库中自定义排序 场景:有一张banner表,表中有一个status字段,有0, 1, 2三个状态位,我想要 1,0,2的自定义排序(这里是重点),然后再进行之上对sequence字段进行二次排序( ...

  5. mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string

    mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...

  6. docker一步安装mysql,docker的魅力就在于此

    正常来说,使用docker安装东西的步骤是serach它有没有,然后pull它 这里其实只要一步(如果你没有安装过.没有端口占用等问题的话!!) $ docker run -d -p 3306:330 ...

  7. 设置腾讯云linux服务器中 MySQL 允许远程访问

    申请了一台linux腾讯云服务器,想要把数据库搭建在上面,本地的Windows直接可以访问 以下就是具体的操作流程,首先你需要安装好一个mysql,安装方法–>mysql安装(Linux) 接着 ...

  8. Linux安装mysql,一步到位!

    今天在腾讯云上面买了一个服务器,想要把自己的项目部署一下,就要安装mysql,以下是我的安装步骤,在网上有很多人把install敲错了,还有的少-get,种种错误试完之后,我决定发一篇 sudo ap ...

  9. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

最新文章

  1. TypeError: ord() expected string of length 1, but int found
  2. 全面剖析linux【bind】服务お理论篇
  3. APUE读书笔记-16网络通信-08非阻塞和异步IO
  4. js 通过jquery插件获取url参数 其中的一个小问题,或许不算Bug。
  5. r语言 将表格导出为csv_r语言 将表格导出为csv_2. R语言基础语法
  6. Redis进阶实践之十八 使用管道模式提高Redis查询的速度
  7. Atitit mybatis 简化开发与提升开发效率法 目录 1.1. 使用注解模式代替xml模式 1 1.2. 使用通用mapper代替专用mapper 1 1.3. 使用js等脚本语言来输出sq
  8. 如何解压bz2后缀的压缩文件
  9. 辅音字母组合功能音中的浊化现象
  10. 对Excel选择性粘贴中的跳过空单元选项容易造成的两种误解
  11. 有没有无痛无害的人体成像方法?OCT(光学相干断层扫描)了解一下
  12. java——获取网页源代码
  13. Python编写中国象棋棋盘(可视化页面)
  14. 第五次作业+度盘下载器
  15. 清明节出游图鉴:热门目的地的网络舆论与口碑分析
  16. python检测微信好友被删被拉黑_如何用Python,查看是否被微信好友删除
  17. word表格中 英文排版
  18. weblogic 忘记密码重置密码
  19. Java 社区平台 Sym 2.6.0 发布,增加帖子列表渲染方式
  20. 屏蔽百度无孔不入的垃圾广告

热门文章

  1. error: ora-01034:oracle not available ora-27101:shared memory realm does not exist
  2. Maven-pon.xml模板(ssm自用)持续更新
  3. Mysql 用Not In 的问题:子查询的结果中有Null则查不出来
  4. docker-compose安装镜像
  5. K8s与Docker
  6. 【6.18校内test】T1多项式输出
  7. 基本操作1-本地仓库连接远程仓库
  8. 使用Beetle简单构建聊天室程序
  9. 實驗項目wordcount
  10. Android应用程序文件缓存getCacheDir()和getExternalCacheDir()