MySQL学习——数据库、表基本操作、数据类型

什么是SQL?
  Structured Query Language,结构化查询语言。定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方称之为方言。
SQL的分类:
  DDL(Data Definition Language)定义(操作)数据库对象:数据库、表、列、关键字等
  DML(Manipulation):增删改(insert、delete、update)
  DQL(Query):查询记录(关键字:select、where)
  DCL(Control):定义数据库的访问权限、授权

MySQL语句一般不区分大小写,但是为了便于区分最好区分大小写。
MySQL基本操作:退出命令:exit;或quit;或\q;
MySQL语句规范:关键字和函数名大写  数据库名、表名、字段名小写  语句以分号结尾

注释方法:
  单行注释:“-- 注释内容”也就是两个减号,一个空格,之后是注释内容;或者用“#注释内容”的方式进行注释。
  多行注释:/*注释内容*/的方式进行注释。

操作数据库(CRUD)

Create:创建
  创建数据库:  CREATE DATABASE database_name(自己定的数据库名)
  创建数据库的保险做法;CREATE DATABASE IF NOT EXISTS database_name;(这个数据库不存在的情况下才能创建)
  创建一个数据库,指定字符集为gbk:CREATE DATABASE db_name CHARACTER SET 字符集名称;  或者CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET gbk(默认情况下字符集为utf8)
Retrieve:查询
  查看已有的数据库:SHOW DATABASES;
  查询某个数据库的字符集:SHOW CREATE DATABASE db_name;
Update:修改
  修改数据库的字符集:ALTER DATABASE db_name CHARACTER SET 字符集名称
Delete:删除
  删除数据库:DROP DATABASE database_name
  判断数据库存在的情况下再删除:DROP DATABASE IF EXSITS db_name;
使用数据库
  查询当前正在使用的数据库:SELECT DATABASE();
  使用(调用)某一个数据库:USE database_name

查看系统所支持的引擎:SHOW ENGINES

引擎
  默认引擎:InnoDB存储引擎
  其他引擎:MyISAM存储引擎 MEMORY存储引擎
  存储引擎的选择需要考虑每个引擎的功能和特点:
  如果要提供提交、回滚和崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是个很好的选择,如果数据表主要用来插入和查询记录,则MYISAM引擎能提供较高的处理效率,如果只是临时存放数据看,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的MEMORY引擎,MYSQL中使用该引擎作为临时表,存放查询的中间结果。如果只有insert和select操作,可以选择Archive引擎,该引擎支持高并发的插入操作,但是本身并不是事务安全的。非常适合存储归档数据,如记录日志信息 在这里插入图片描述

操作数据表

Create:创建
   CREATE TABLE tb_name(
   列名1   数据类型1,
   列名2  数据类型2,
   最后列名  最后的数据类型(不加逗号)
   );
   在这里插入图片描述
Retrieve:查询
  查询当前选中的数据库中的所有表:SHOW TABLES
  查询表结构:DESC tb_name;(describe)
  查看创建表的CREATE TABLE 语句:SHOW CREATE TABLE 表名
 在这里插入图片描述
Update:修改
   列名就是字段名
  修改表名:ALTER TABLE 旧表名 RENAME 新表名
  修改列的数据类型:ALTER TABLE 表名 MODIFY 列名 数据类型
  修改列名;ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型
  修改表的字符集:ALTER TABLE tb_name CHARACTER SET 字符集名
  添加列:ALTER TABLE 表名 ADD 新字段名(列名) 数据类型
  修改字段的排列位置:ALTER TABLE 表名 MODIFY 字段1 数据类型 FIRST | AFTER 字段2
Delete:删除
  删除列:ALTER TABLE 表名 DROP 字段名
  删除表:DROP TABLE 表名
      DROP TABLE IF EXISTS 表名

对表中的数据进行增删改(DML)

【1】添加数据
  给所有列插入数据:INSERT INTO 表名 VALUES(num1,num2,num3…)
       INSERT INTO 表名 VALUES(num1),(num2),(num3)(同一个字段的值)
  对指定的列添加数据:INSERT INTO 表名 (列1,列2, 列5,……列9) VALUES(num1,num2,……,numn)
  除了数字类型,其他的数据类型需要用引号。
【2】删除数据
  DELETE FROM 表名 WHERE 条件;(例如,DELETE FROM table1 WHERE 列1=15;)
  注意:如果不加条件,则删除表中的所有记录
  删除所有记录的快捷方法是,直接删除表,然后再创建一个与之前一模一样的表,如果采用删除所有数据的方法,效率比较低。这种先删除表再创建一个相同表的方法是:     TRUNCATE TABLE 表名;
【3】修改数据
  UPDATE 表名 SET 列1=值1,列2=值2,……列n=值n WHERE 条件
  注意:如果不加条件,则会将表中所有记录全部修改

查询表中的记录(DQL)

查看表记录:SELECT *FROM 表名(最简单的查询语句)
  查询的语法:
    SELECT      字段列表
    FROM       表名列表
    WHERE      条件列表
    GROUP BY     分组字段
    HAVING      分组之后的条件
    ORDER BY    排序
    LIMIT       分页限定 
基础查询:
  查询指定列的数据:SELECT 列1,列2……列n,FROM 表名;
  查询某一列不重复的所有值:SELECT DISTINCT 列名 FROM 表名;
  查询两列值之和:SELECT 列1,列2,列1+列2 FROM 表名
    注意:计算中,如果有一列的数字为NULL,则计算结果也是NULL,解决办法:IFNULL 函数。
【【条件查询】】:
 运算符:
  大于等于>=,小于等于<=, 等于=,不等于!=或者<>,AND(&&),OR(||),NOT(!),IN,BETWEEN ……AND
  在一个范围之内:字段 >=value1 AND 字段 <=value2 或者 字段 BETWEEN value1 AND value2
  如果范围是不连续的,则:字段 IN (值1,值2,……值n)
  注意:NULL值不能使用“=”和“!=”去判断,而应该使用IS或IS NOT去判断
   比如:SELECT *FROM table1 WHERE age IS NULL;
  【模糊查询】:
    用到的占位符:
     “_”:单个任意字符
     “%”:多个任意字符
  
    LIKE模糊查询实例:
     查找找到名字的姓氏为李的人:SELECT *FROM 表名 WHERE 字段 LIKE ‘李%’
     查找找到名字的第二个字为玉的人:SELECT *FROM 表名 WHERE name LIKE ‘玉%’
     查找姓名是三个字的人:SELECT *FROM 表名 WHERE name LIKE ’
_ _’
     查找姓名中包含某个字的人:SELECT *FROM 表名 WHERE name LIKE ‘%马%’

排序、分组、分页查询

【排序查询】:
   SELECT *FROM tb_name ORDER by 排序字段1 排序方式1(升序: math ASC\降序DESC),排序字段2 排序方式2   默认情况下是升序
   例如:SELECT *FROM 表名 ORDER by age ASC

如果排序查询语句中有两个或多字排序字段,首先按照第一排序方式排列,如果根据第一字段排序的结果有两个并列,则按照第二字段排序,也就是说只有当第一条件相同时,才会用第二排序
  【分组查询】:关键字:GROUP BY 分组字段
   分组之后查询的字段必须是分组字段或者聚合函数,如果是其他字段,没有任何意义。
  【分页查询】:

聚合函数

聚合函数是将一列数据作为整体,进行纵向的计算,主要包括以下函数:
   注意:聚合函数的计算,排除了非空值
   count:计算个数----:
    SELECT COUNT(列名) FROM 表名----(统计一列中不为空的个数)
    SELECT COUNT(IFNULL(列名,0)) FROM 表名----(如果某一列中存在NULL值,就将其更换为0,然后统计个数,可以避免NULL值的干扰)
    SELECT COUNT(*) FROM 表名----(只要某一行中有一个不是NULL,那么就可以算一条记录)
   max:计算最大值
    SELECT MAX(列名 ) FROM 表名
   min:计算最小值
    SELECT MIN(列名 ) FROM 表名
   sum:求和
    SELECT SUM(列名 ) FROM 表名
   avg:求平均
    SELECT AVG(列名 ) FROM 表名
   
  查看错误原因:SHOW WARNINGS

数据类型:

在这里插入图片描述

 注意,其中VARCHAR要在后面加括号指定最大长度。
 DOUBLE要在面的括号中指定(数据长度,小数点位数)

数值数据类型:整数TINYNIT\SAMLLINT\INT\BIGINT、浮点小数FLOAT\DOUBLE、定点小数DECIMAL
  在创建表时字段的数据类型括号中的数字代表该数据类型指定的显示宽度,指定能够显示的数值中数字的个数在这里插入图片描述
   日期\时间类型:YEAR\TIME\DATE\DATETIME\TIMESTRAMP
    YEAR:
       INSERT INTO table VALUES(2010),(‘2010’),(‘0’),(‘00’),(‘99’),(‘10’),(99),(0),(11)
        对应的是2010,2010,2000,2000,1999,2010,1999,0000,2011,
    TIME:
        INSERT INTO table VALUES(‘10:05:59’),(‘23:23’),(‘2 10:10’),(3 02),(‘10’)
        对应的是:10:05:05,23:23:00,58:10:00,74:00:00,00:00:10
    DATE:
       INSERT INTO table VALUES(‘YYYY-MM-DD’),(‘YYYYMMDD’),(‘YY-MM-DD’),(YY-MM-DD),(YY-MM-DD),(YYMMDD)
    DATETIME(同时包含日期和时间):
        INSERT INTO table VALUES(‘YYYY-MM-DD HH:MM:SS’),(‘YYYYMMDDHHMMSS’),(‘YYMMDDHHMMSS’),(YYMMDDYYMMSS)
向表中插入系统当前日期:INSERT INTO 表名 VALUES(CURRENT_DATE()),(NOW()); 
NOW()函数返回系统当前的日期和时间值。
修改日期的区(默认为东8区),这里以修改到东10区为例:set time_zone=’+10:00’;(可以大写也可以小写,但是下划线不能忘记)     在这里插入图片描述
   字符串类型:CHAR\VARCHAR\TEXT\SET\BINARY\BLOB等,主要分为文本字符串和二进制字符串
     1、CHAR和VARCHAR
      CHAR(M)为固定长度字符串,M表示列宽,范围是0-255,VARCHAR(M) 为长度可变字符串,M表示最大列长度,范围是0-65535

输入字符:INSERT INTO 表名 VALUES(’ string1 ‘,‘string2’),(‘string3’);
    显示表中数据:SELECT concat(’(’,字段名1,’)’),concat(’(’,字段名2,’)’) FROM 表名;(左图)||||或者SELECT *FROM 表名;(右图)
    从下图可知,CHAR类型的输入的空格删除了,儿VARCHAR 类型的没有删除。
    在这里插入图片描述   在这里插入图片描述
    2 TEXT类型
      TINYTEXT\ TEXT\ MEDIUMTEXT\ LONGTEXT
    3 ENUM类型
      字符串对象,按照索引顺序排列
    
在这里插入图片描述

注意,MySQL的变量或者表、数据库的名字不可以是关键字,MySQL中的关键字有个博主总结的比较全面
check the manual that corresponds to your MySQL server version for the right syntax错误
hello__word__

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值