searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

关系型数据库mysql的实操知识

2023-10-17 07:41:54
12
0

我下面所有的SQL语句是基于MySQL 5.6+运行。

MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:

     

  • 表头(header): 每一列的名称;
  • 列(col): 具有相同数据类型的数据的集合;
  • 行(row): 每一行用来描述某个人/物的具体信息;
  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • 键(key): 表中用来识别某个特定的人\物的方法, 键的值在当前列中具有唯一性。

登录MySQL

    mysql -h 127.0.0.1 -u <用户名> -p<密码>. # 默认用户名<root>,-p 是密码,⚠️参数后面不需要空格

    mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p

    mysql> exit # 退出 使用 “quit;” 或 “\q;” 一样的效果

    mysql> status; # 显示当前mysql的version的各种信息

    mysql> select version(); # 显示当前mysql的version信息

    mysql> show global variables like 'port'; # 查看MySQL端口号

创建数据库

   对于表的操作需要先进入库use 库名;

   -- 创建一个名为 samp_db 的数据库,数据库字符编码指定为 gbk

   create database samp_db character set gbk;  

   drop database samp_db;           # 删除 库名为 samp_db 的库

   show databases;                        # 显示数据库列表。

   se samp_db;                               # 选择创建的数据库

   samp_db show tables;                # 显示 samp_db 下面所有的表名字

   describe 表名;                             # 显示数据表的结构

   delete from 表名;                        # 清空表中记录

创建数据库表

  CREATE TABLE 语法 语句用于从表中选取数据。

  CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... );

  # 如果数据库中存在user_accounts表,就把它从数据库中drop掉

  DROP TABLE IF EXISTS `user_accounts`;

  CREATE TABLE `user_accounts` (

    `id` int(100) unsigned NOT NULL AUTO_INCREMENT primary key,

    `password` varchar(32) NOT NULL DEFAULT '' COMMENT '用户密码',

   `reset_password` tinyint(32) NOT NULL DEFAULT 0 COMMENT '用户类型:0-不需要重置密码;1-需要重置密码',

   `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机',

  `create_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),

  `update_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),

  -- 创建唯一索引,不允许重复

   UNIQUE INDEX idx_user_mobile(`mobile`)

 )

   ENGINE=InnoDB DEFAULT CHARSET=utf8

   COMMENT='用户表信息';

数据类型的属性解释

  • NULL:数据列可包含NULL值;
  • NOT NULL:数据列不允许包含NULL值;
  • DEFAULT:默认值;
  • PRIMARY KEY:主键;
  • AUTO_INCREMENT:自动递增,适用于整数类型;
  • UNSIGNED:是指数值类型只能为正数;
  • CHARACTER SET name:指定一个字符集;
  • COMMENT:对表或者字段说明;

删除数据库表

   DROP/TRUNCATE TABLE 语法 语句用于删除数据库中的现有表。

  DROP TABLE 表名称; -- 用于删除数据库中的现有表。

  TRUNCATE TABLE 表名称; -- 用于删除表内的数据,但不删除表本身。

  -- 删除现有表 Shippers:

  DROP TABLE Shippers;

  -- 删除现有表 Shippers 表内的数据,不删除表:

  TRUNCATE TABLE Shippers;

增删改查

   SELECT

   SELECT 语法 语句用于从表中选取数据。

   SELECT 列名称1, 列名称2, ... FROM 表名称;

   SELECT * FROM 表名称;

   -- 从 Customers 表中选择 CustomerName 和 City 列:

   SELECT CustomerName, City FROM Customers;

   -- 从 Customers 表中选择所有列:

  SELECT * FROM Customers;

  -- 表 station 取个别名叫 s,表 station 中不包含 字段 id=13 或者 14 的,并且 id 不等于 4 的 查询出来,只显示 id

  SELECT s.id from station s WHERE id in (13,14) and id not in (4);

  -- 从表 users 选取 id=3 的数据,并只拉一条数据(据说能优化性能)

  SELECT * FROM users where id=3 limit 1

   -- 结果集中会自动去重复数据

   SELECT DISTINCT Company FROM Orders   

   -- 表 Persons 字段 Id_P 等于 Orders 字段 Id_P 的值,
   -- 结果集显示 Persons表的 LastName、FirstName字段,Orders表的OrderNo字段
   SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p, Orders o WHERE p.Id_P = o.Id_P

   -- gbk 和 utf8 中英文混合排序最简单的办法 
   -- ci是 case insensitive, 即 “大小写不敏感”
   SELECT tag, COUNT(tag) from news GROUP BY tag order by convert(tag using gbk) collate gbk_chinese_ci;
   SELECT tag, COUNT(tag) from news GROUP BY tag order by convert(tag using utf8) collate utf8_unicode_ci;

UPDATE

   Update 语法 语句用于修改表中的数据。

   UPDATE 表名称 SET 列名称1 =1, 列名称2 =2, ... WHERE 条件;

   -- update语句设置字段值为另一个结果取出来的字段
   UPDATE user set name = (SELECT name from user1 WHERE user1 .id = 1 )
   WHERE id = (SELECT id from user2 WHERE user2 .name='小苏');
  -- 更新表 orders 中 id=1 的那一行数据更新它的 title 字段
   UPDATE `orders` set title='这里是标题' WHERE id=1;

INSERT

    INSERT 语法 用于向表格中插入新的行。

   INSERT INTO 表名称 (列名称1, 列名称2, 列名称3, ...) VALUES (1,2,3, ...);

  INSERT INTO 表名称 VALUES (值1, 值2, 值3, ...);

DELETE

  DELETE 语法 语句用于删除表中的现有记录。

  DELETE FROM 表名称 WHERE 条件;

  -- 在不删除table_name表的情况下删除所有的行,清空表。
  DELETE FROM table_name
  -- 或者
  DELETE * FROM table_name
  -- 删除 Person 表字段 LastName = 'JSLite' 
  DELETE FROM Person WHERE LastName = 'JSLite' 
  -- 删除 表meeting id 为2和3的两条数据
  DELETE from meeting where id in (2,3);

WHERE

  WHERE 语法 用于仅提取满足指定条件的记录

  SELECT 列名称, 列名称, ... FROM 表名称 WHERE 条件1;

 

 

0条评论
0 / 1000
张****鑫
2文章数
0粉丝数
张****鑫
2 文章 | 0 粉丝
张****鑫
2文章数
0粉丝数
张****鑫
2 文章 | 0 粉丝
原创

关系型数据库mysql的实操知识

2023-10-17 07:41:54
12
0

我下面所有的SQL语句是基于MySQL 5.6+运行。

MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:

     

  • 表头(header): 每一列的名称;
  • 列(col): 具有相同数据类型的数据的集合;
  • 行(row): 每一行用来描述某个人/物的具体信息;
  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • 键(key): 表中用来识别某个特定的人\物的方法, 键的值在当前列中具有唯一性。

登录MySQL

    mysql -h 127.0.0.1 -u <用户名> -p<密码>. # 默认用户名<root>,-p 是密码,⚠️参数后面不需要空格

    mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p

    mysql> exit # 退出 使用 “quit;” 或 “\q;” 一样的效果

    mysql> status; # 显示当前mysql的version的各种信息

    mysql> select version(); # 显示当前mysql的version信息

    mysql> show global variables like 'port'; # 查看MySQL端口号

创建数据库

   对于表的操作需要先进入库use 库名;

   -- 创建一个名为 samp_db 的数据库,数据库字符编码指定为 gbk

   create database samp_db character set gbk;  

   drop database samp_db;           # 删除 库名为 samp_db 的库

   show databases;                        # 显示数据库列表。

   se samp_db;                               # 选择创建的数据库

   samp_db show tables;                # 显示 samp_db 下面所有的表名字

   describe 表名;                             # 显示数据表的结构

   delete from 表名;                        # 清空表中记录

创建数据库表

  CREATE TABLE 语法 语句用于从表中选取数据。

  CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... );

  # 如果数据库中存在user_accounts表,就把它从数据库中drop掉

  DROP TABLE IF EXISTS `user_accounts`;

  CREATE TABLE `user_accounts` (

    `id` int(100) unsigned NOT NULL AUTO_INCREMENT primary key,

    `password` varchar(32) NOT NULL DEFAULT '' COMMENT '用户密码',

   `reset_password` tinyint(32) NOT NULL DEFAULT 0 COMMENT '用户类型:0-不需要重置密码;1-需要重置密码',

   `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机',

  `create_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),

  `update_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),

  -- 创建唯一索引,不允许重复

   UNIQUE INDEX idx_user_mobile(`mobile`)

 )

   ENGINE=InnoDB DEFAULT CHARSET=utf8

   COMMENT='用户表信息';

数据类型的属性解释

  • NULL:数据列可包含NULL值;
  • NOT NULL:数据列不允许包含NULL值;
  • DEFAULT:默认值;
  • PRIMARY KEY:主键;
  • AUTO_INCREMENT:自动递增,适用于整数类型;
  • UNSIGNED:是指数值类型只能为正数;
  • CHARACTER SET name:指定一个字符集;
  • COMMENT:对表或者字段说明;

删除数据库表

   DROP/TRUNCATE TABLE 语法 语句用于删除数据库中的现有表。

  DROP TABLE 表名称; -- 用于删除数据库中的现有表。

  TRUNCATE TABLE 表名称; -- 用于删除表内的数据,但不删除表本身。

  -- 删除现有表 Shippers:

  DROP TABLE Shippers;

  -- 删除现有表 Shippers 表内的数据,不删除表:

  TRUNCATE TABLE Shippers;

增删改查

   SELECT

   SELECT 语法 语句用于从表中选取数据。

   SELECT 列名称1, 列名称2, ... FROM 表名称;

   SELECT * FROM 表名称;

   -- 从 Customers 表中选择 CustomerName 和 City 列:

   SELECT CustomerName, City FROM Customers;

   -- 从 Customers 表中选择所有列:

  SELECT * FROM Customers;

  -- 表 station 取个别名叫 s,表 station 中不包含 字段 id=13 或者 14 的,并且 id 不等于 4 的 查询出来,只显示 id

  SELECT s.id from station s WHERE id in (13,14) and id not in (4);

  -- 从表 users 选取 id=3 的数据,并只拉一条数据(据说能优化性能)

  SELECT * FROM users where id=3 limit 1

   -- 结果集中会自动去重复数据

   SELECT DISTINCT Company FROM Orders   

   -- 表 Persons 字段 Id_P 等于 Orders 字段 Id_P 的值,
   -- 结果集显示 Persons表的 LastName、FirstName字段,Orders表的OrderNo字段
   SELECT p.LastName, p.FirstName, o.OrderNo FROM Persons p, Orders o WHERE p.Id_P = o.Id_P

   -- gbk 和 utf8 中英文混合排序最简单的办法 
   -- ci是 case insensitive, 即 “大小写不敏感”
   SELECT tag, COUNT(tag) from news GROUP BY tag order by convert(tag using gbk) collate gbk_chinese_ci;
   SELECT tag, COUNT(tag) from news GROUP BY tag order by convert(tag using utf8) collate utf8_unicode_ci;

UPDATE

   Update 语法 语句用于修改表中的数据。

   UPDATE 表名称 SET 列名称1 =1, 列名称2 =2, ... WHERE 条件;

   -- update语句设置字段值为另一个结果取出来的字段
   UPDATE user set name = (SELECT name from user1 WHERE user1 .id = 1 )
   WHERE id = (SELECT id from user2 WHERE user2 .name='小苏');
  -- 更新表 orders 中 id=1 的那一行数据更新它的 title 字段
   UPDATE `orders` set title='这里是标题' WHERE id=1;

INSERT

    INSERT 语法 用于向表格中插入新的行。

   INSERT INTO 表名称 (列名称1, 列名称2, 列名称3, ...) VALUES (1,2,3, ...);

  INSERT INTO 表名称 VALUES (值1, 值2, 值3, ...);

DELETE

  DELETE 语法 语句用于删除表中的现有记录。

  DELETE FROM 表名称 WHERE 条件;

  -- 在不删除table_name表的情况下删除所有的行,清空表。
  DELETE FROM table_name
  -- 或者
  DELETE * FROM table_name
  -- 删除 Person 表字段 LastName = 'JSLite' 
  DELETE FROM Person WHERE LastName = 'JSLite' 
  -- 删除 表meeting id 为2和3的两条数据
  DELETE from meeting where id in (2,3);

WHERE

  WHERE 语法 用于仅提取满足指定条件的记录

  SELECT 列名称, 列名称, ... FROM 表名称 WHERE 条件1;

 

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0