• Mysql数据库的基础语句


    目录

    一、访问Mysql数据库

    二、查看数据库结构

    1、查看当前MySQL服务器的所有数据库

    2、查看当前数据库中包含的表

    3、查看表的结构

    3.1、查看表的基本结构

    3.2、获取数据表的结构、索引等信息

    4、SQL语言分类

    5、创建及删除库和表

    5.1、创建新的库

    5.2、常用的数据类型

    5.3、创建新的表

    5.4、删除一个数据表

    5.5、删除一个库

    6、插入数据记录

    7、查询数据记录

    8、修改数据记录

    9、删除数据记录

    10、克隆数据表

    三、忘记root密码,操作方法


    一、访问Mysql数据库

    1. 方法一:可直接登录,不需要交互,但是密码明文,不安全
    2. [root@zwb ~]# mysql -u root -p123123 或者 mysql -uroot -p123123
    3. ................
    4. mysql> quit或者exit ### 退出
    5. Bye
    6. 方法二:交互形式完成登录,密码不可见
    7. [root@zwb ~]# mysql -u root -p
    8. Enter password: ## 输入密码
    9. ................
    10. mysql> quit或者exit

    注:每一条MYSQL操作语句以分号“;”表示结束,输入时可以不区分大小写,但习惯上MYSQL语句中的关键字使用大写。

    二、查看数据库结构

    1、查看当前MySQL服务器的所有数据库

    show databases; 语句:查看当前MySQL服务器中的数据库。初始化的mysql服务器有四个默认数据库。

    1. mysql> show databases;
    2. +--------------------+
    3. | Database |
    4. +--------------------+
    5. | information_schema |
    6. | mysql |
    7. | performance_schema |
    8. | sys |
    9. +--------------------+
    10. 4 rows in set (0.00 sec)

    2、查看当前数据库中包含的表

    ①use 数据库名;    先确定查询的数据库

    ②show tables; 查看当前数据库中包含的表。

    1. mysql> use mysql; #### 选定数据库
    2. Reading table information for completion of table and column names
    3. You can turn off this feature to get a quicker startup with -A
    4. Database changed
    5. mysql> show tables; #### 查看数据库中包含的表
    6. +---------------------------+
    7. | Tables_in_mysql |
    8. +---------------------------+
    9. | columns_priv |
    10. | db |
    11. | engine_cost |
    12. | event |
    13. | func |
    14. | general_log |
    15. | gtid_executed |
    16. | help_category |
    17. | help_keyword |
    18. | help_relation |
    19. | help_topic |
    20. | innodb_index_stats |
    21. | innodb_table_stats |
    22. | ndb_binlog_index |
    23. | plugin |
    24. | proc |
    25. | procs_priv |
    26. | proxies_priv |
    27. | server_cost |
    28. | servers |
    29. | slave_master_info |
    30. | slave_relay_log_info |
    31. | slave_worker_info |
    32. | slow_log |
    33. | tables_priv |
    34. | time_zone |
    35. | time_zone_leap_second |
    36. | time_zone_name |
    37. | time_zone_transition |
    38. | time_zone_transition_type |
    39. | user |
    40. +---------------------------+
    41. 31 rows in set (0.00 sec)

    编译安装的mysql数据库的数据文件都存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。

    3、查看表的结构

    3.1、查看表的基本结构

    describe语句:用于显示表的结构,即组成表的各字段(列)的信息。

    ①先使用(use 数据库名;)再使用(describe 表名;)来进行查看表的结构

    ②直接使用(describe 数据库.表名 )来进行查询表结构

    1. 方法一:
    2. mysql> use mysql;
    3. Reading table information for completion of table and column names
    4. You can turn off this feature to get a quicker startup with -A
    5. mysql> describe user;
    6. +------------------------+-----------------------------------+------+-----+-----------------------+-------+
    7. | Field | Type | Null | Key | Default | Extra |
    8. +------------------------+-----------------------------------+------+-----+-----------------------+-------+
    9. | Host | char(60) | NO | PRI | | |
    10. | User | char(32) | NO | PRI | | |
    11. | Select_priv | enum('N','Y') | NO | | N | |
    12. | Insert_priv | enum('N','Y') | NO | | N | |
    13. | Update_priv | enum('N','Y') | NO | | N | |
    14. 方法二:
    15. mysql> describe mysql.user;
    16. +------------------------+-----------------------------------+------+-----+-----------------------+-------+
    17. | Field | Type | Null | Key | Default | Extra |
    18. +------------------------+-----------------------------------+------+-----+-----------------------+-------+
    19. | Host | char(60) | NO | PRI | | |
    20. | User | char(32) | NO | PRI | | |
    21. | Select_priv | enum('N','Y') | NO | | N | |
    22. | Insert_priv | enum('N','Y') | NO | | N | |
    23. | Update_priv | enum('N','Y') | NO | | N | |
    24. | Delete_priv | enum('N','Y') | NO | | N | |
    25. | Create_priv | enum('N','Y') | NO | | N | |

    3.2、获取数据表的结构、索引等信息

    show create table 表名; 语句:获取数据表的结构、索引等详细信息

    1. mysql> show create table member;
    2. +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    3. | Table | Create Table |
    4. +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    5. | member | CREATE TABLE "member" (
    6. "id" int(10) DEFAULT NULL,
    7. "name" varchar(10) DEFAULT NULL,
    8. "cardid" varchar(18) DEFAULT NULL,
    9. "phone" varchar(11) DEFAULT NULL,
    10. "address" varchar(50) DEFAULT NULL,
    11. "remark" text
    12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    13. +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    14. 1 row in set (0.00 sec)

    4、SQL语言分类

    DDL:数据定义语言,用于创建数据库对象,如库、表、索引等。如:create、alter、drop

    DML:数据操纵语言,用于对表中的数据进行管理。如:insert、update、delete

    DQL:数据查询语言,用于从数据表中查找符合条件的数据记录。如:select

    DCL:数据控制语言,用于设置或者更改数据库用户或角色权限。如:commit、rollback、grant

    5、创建及删除库和表

    5.1、创建新的库

    create database 库名;语句:用于创建一个新的库

    1. mysql> create database AAA; ### 创建数据库AAA
    2. mysql> use AAA ### 使用AAA数据库
    3. Database changed
    4. mysql> SHOW tables; ### 查看数据库内的表
    5. Empty set (0.00 sec) ### 新创建的库为空的。无表

    5.2、常用的数据类型

    1、int : 整型(定义整数类型的数据 )

    2、float :单精度浮点4字节32位 准确表示到小数点后六位

    3、double:双精度浮点8字节64位 双精度支持存储的数字小数位更多

    4、char:固定长度的字符类型(定义字符类型数据 )

    例如:char(4) 0001,char(10)如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错

    截取2和截断2区别:

    原数据:.688 .691

    截取:    .69  .69    进行四舍五入

    截断:    .68  .69    不进行四舍五入

    5、varchar:可变长度的字符类型 varchar(设置上限)

    6、text:文本

    7、image:图片

    8、decimal(5,2):表示5个有效长度数字,小数点后面有2位

    5.3、创建新的表

    create table 表名;语句:用于在当前的数据库创建新的表。

    语法格式:create table 表名(字段1 名称 类型,字段2 名称 类型,······,primary key(主键名))

    需求:创建一张表,名为tongxunlu。包含:序号、姓名、手机号及设置主键

    1. mysql> use AAA; ## 使用数据库AAA
    2. Database changed
    3. mysql> create table tongxunlu(序号 int(3) primary key,姓名 varchar(20),手机号 int(15));
    4. 注释:
    5. create table tongxunlu ### 创建表
    6. 序号 int(3) primary key ### 字段1为“序号”,类型为“int”,长度为“3”,设置为主键
    7. (primary key)
    8. 姓名 varchar(20) ### 字段2为姓名 类型为“varchar”,长度为“20”
    9. .....................
    10. mysql> describe tongxunlu;
    11. +-----------+-------------+------+-----+---------+-------+
    12. | Field | Type | Null | Key | Default | Extra |
    13. +-----------+-------------+------+-----+---------+-------+
    14. | 序号 | int(3) | NO | PRI | NULL | |
    15. | 姓名 | varchar(20) | YES | | NULL | |
    16. | 手机号 | int(15) | YES | | NULL | |
    17. +-----------+-------------+------+-----+---------+-------+
    18. 3 rows in set (0.00 sec)

    5.4、删除一个数据表

    drop 表名;语句:用于删除数据库中的表,需要指定“数据库名.表名”作为参数;若只指定表名最为参数,则先用通过use切换到目标数据库。

    1. mysql> show tables; ## 查看表
    2. +---------------+
    3. | Tables_in_AAA |
    4. +---------------+
    5. | lili |
    6. | tongxunlu |
    7. +---------------+
    8. 2 rows in set (0.00 sec)
    9. mysql> drop table AAA.lili; ## 删除表,指定数据库.表名作为参数
    10. Query OK, 0 rows affected (0.00 sec)
    11. mysql> show tables; ## 检验结果
    12. +---------------+
    13. | Tables_in_AAA |
    14. +---------------+
    15. | tongxunlu |
    16. +---------------+
    17. 1 row in set (0.00 sec)

    5.5、删除一个库

    drop database 数据库名;语句:用于删除指定的数据库。

    1. mysql> show databases; ### 查看数据库
    2. +--------------------+
    3. | Database |
    4. +--------------------+
    5. | information_schema |
    6. | AAA |
    7. | bbb |
    8. | mysql |
    9. | performance_schema |
    10. | sys |
    11. +--------------------+
    12. 6 rows in set (0.00 sec)
    13. mysql> drop database bbb; ### 删除数据库bbb
    14. Query OK, 0 rows affected (0.00 sec)
    15. mysql> show databases; ### 查看数据库
    16. +--------------------+
    17. | Database |
    18. +--------------------+
    19. | information_schema |
    20. | AAA |
    21. | mysql |
    22. | performance_schema |
    23. | sys |
    24. +--------------------+
    25. 5 rows in set (0.00 sec)

    6、插入数据记录

    语法格式:

    INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);

    1. mysql> use AAA; ## 切换到数据库AAA
    2. Database changed
    3. mysql> SHOW tables; ## 查看库中的表
    4. +---------------+
    5. | Tables_in_AAA |
    6. +---------------+
    7. | tongxunlu |
    8. +---------------+
    9. 1 row in set (0.00 sec)
    10. mysql> desc tongxunlu; ## 查看表的结构
    11. +-----------+-------------+------+-----+---------+-------+
    12. | Field | Type | Null | Key | Default | Extra |
    13. +-----------+-------------+------+-----+---------+-------+
    14. | 序号 | int(3) | NO | PRI | NULL | |
    15. | 姓名 | varchar(20) | YES | | NULL | |
    16. | 手机号 | int(15) | YES | | NULL | |
    17. +-----------+-------------+------+-----+---------+-------+
    18. 3 rows in set (0.00 sec)
    19. mysql> insert into tongxunlu values(1,'张一','188888888'); ## 向表中插入内容
    20. Query OK, 1 row affected (0.00 sec)
    21. mysql> insert into tongxunlu values(2,'张二','1888888888');
    22. Query OK, 1 row affected (0.01 sec)
    23. mysql> select * from tongxunlu; ## 查看表中的内容
    24. +--------+--------+------------+
    25. | 序号 | 姓名 | 手机号 |
    26. +--------+--------+------------+
    27. | 1 | 张一 | 188888888 |
    28. | 2 | 张二 | 1888888888 |
    29. +--------+--------+------------+
    30. 2 rows in set (0.00 sec)

    7、查询数据记录

    语法格式:

    SELECT 字段名1,字段名2[,...] FROM 表名[WHERE 条件表达式];

    1. mysql> select * from tongxunlu;
    2. +--------+--------+------------+
    3. | 序号 | 姓名 | 手机号 |
    4. +--------+--------+------------+
    5. | 1 | 张一 | 188888888 |
    6. | 2 | 张二 | 1888888888 |
    7. +--------+--------+------------+
    8. 2 rows in set (0.00 sec)

    8、修改数据记录

    update语句:用于修改、更新表中的数据记录。

    语法格式:update 表名 set 字段名1=字段值1[,字段名2=字段值2] where 条件表达式

    1. mysql> show databases; ## 查看MySQL服务器上所以数据库
    2. +--------------------+
    3. | Database |
    4. +--------------------+
    5. | information_schema |
    6. | AAA |
    7. | class |
    8. | mysql |
    9. | performance_schema |
    10. | sys |
    11. +--------------------+
    12. 6 rows in set (0.00 sec)
    13. mysql> use AAA; ## 切换到数据库AAA
    14. Reading table information for completion of table and column names
    15. You can turn off this feature to get a quicker startup with -A
    16. Database changed
    17. mysql> SHOW TABLES; ## 查看数据库AAA内的所有表
    18. +---------------+
    19. | Tables_in_AAA |
    20. +---------------+
    21. | tongxunlu |
    22. +---------------+
    23. 1 row in set (0.00 sec)
    24. mysql> select * from tongxunlu; ## 查询tongxunlu这张表的内容
    25. +--------+--------+------------+
    26. | 序号 | 姓名 | 手机号 |
    27. +--------+--------+------------+
    28. | 1 | 张一 | 188888888 |
    29. | 2 | 张二 | 1888888888 |
    30. +--------+--------+------------+
    31. 2 rows in set (0.00 sec)
    32. mysql> update tongxunlu set 姓名='张三' where 序号=1; ##把序号为1的那行姓名修改为张三(字
    33. 段名不需要加单引号,字段值需要加)
    34. Query OK, 1 row affected (0.00 sec)
    35. Rows matched: 1 Changed: 1 Warnings: 0
    36. mysql> select * from tongxunlu; ## 查看,验证操作
    37. +--------+--------+------------+
    38. | 序号 | 姓名 | 手机号 |
    39. +--------+--------+------------+
    40. | 1 | 张三 | 188888888 |
    41. | 2 | 张二 | 1888888888 |
    42. +--------+--------+------------+
    43. 2 rows in set (0.00 sec)

    9、删除数据记录

    delete 语句:用于删除表中指定的数据记录(也就是行),

    语法格式:

    DELETE FROM 表名 [WHERE 条件表达式];

    1. mysql> select * from member;
    2. +------+---------+---------+--------+----------+----------------+
    3. | id | name | cardid | phone | address | remark |
    4. +------+---------+---------+--------+----------+----------------+
    5. | 1 | zhangsi | 111 | 1111 | hf | this is vip |
    6. | 4 | lisi | 1234 | 444444 | nanjing | this is normal |
    7. | 2 | wangwu | 12345 | 222222 | benjing | this is normal |
    8. | 5 | zhaoliu | 123456 | 555555 | nanjing | this is vip |
    9. | 3 | qianqi | 1234567 | 333333 | shanghai | this is vip |
    10. | 6 | liuyi | 123456 | 666666 | nanjing | this is vip |
    11. | 7 | laoba | 1234567 | 888888 | shanghai | this is vip |
    12. +------+---------+---------+--------+----------+----------------+
    13. 7 rows in set (0.00 sec)
    14. mysql> delete from class.member where id=1;
    15. Query OK, 1 row affected (0.00 sec)
    16. mysql> select * from member;
    17. +------+---------+---------+--------+----------+----------------+
    18. | id | name | cardid | phone | address | remark |
    19. +------+---------+---------+--------+----------+----------------+
    20. | 4 | lisi | 1234 | 444444 | nanjing | this is normal |
    21. | 2 | wangwu | 12345 | 222222 | benjing | this is normal |
    22. | 5 | zhaoliu | 123456 | 555555 | nanjing | this is vip |
    23. | 3 | qianqi | 1234567 | 333333 | shanghai | this is vip |
    24. | 6 | liuyi | 123456 | 666666 | nanjing | this is vip |
    25. | 7 | laoba | 1234567 | 888888 | shanghai | this is vip |
    26. +------+---------+---------+--------+----------+----------------+
    27. 6 rows in set (0.00 sec)

    10、克隆数据表

    ①克隆,只复制格式,

    create table AAA1 like AAA;    #复制格式,通过LIKE方法,复制yyy表结构生成yyy2表

    ②克隆表,将数据表的数据记录生成到新的表中

    CREATE TABLE test02 (SELECT * from test);  #复制test 表数据到test02中

    三、忘记root密码,操作方法

    1、忘记root密码

    修改/etc/my.cnf 配置文件,免密登陆mysql

    在[mysqld]内
    添加:skip-grant-tables    #添加,使登录mysql不使用授权表

    1. [root@zwb_mysql ~]# cat /etc/my.cnf
    2. [client]
    3. port = 3306
    4. default-character-set=utf8
    5. socket = /usr/local/mysql/mysql.sock
    6. [mysql]
    7. port = 3306
    8. default-character-set=utf8
    9. socket = /usr/local/mysql/mysql.sock
    10. [mysqld]
    11. user = mysql
    12. basedir = /usr/local/mysql
    13. datadir = /usr/local/mysql/data
    14. port = 3306
    15. character_set_server=utf8
    16. pid-file = /usr/local/mysql/mysqld.pid
    17. socket = /usr/local/mysql/mysql.sock
    18. server-id = 1
    19. skip-grant-tables # 添加此字段,免密码登录
    20. ....................................
    21. [root@zwb_mysql ~]# systemctl restart mysqld ## 重启mysql
    22. [root@zwb_mysql ~]# mysql ## 免密登录
    23. Welcome to the MySQL monitor. Commands end with ; or \g.
    24. ....................................
    25. mysql>
    26. #然后使用SQL语句修改密码
    27. mysql> show databases; ## 查询有几个库
    28. +--------------------+
    29. | Database |
    30. +--------------------+
    31. | information_schema |
    32. | mysql |
    33. | performance_schema |
    34. | sys |
    35. +--------------------+
    36. 4 rows in set (0.00 sec)
    37. mysql> use mysql ## 使用mysql库
    38. Database changed
    39. mysql> show tables; ## 查询mysql中有几张表
    40. +---------------------------+
    41. | Tables_in_mysql |
    42. +---------------------------+
    43. | columns_priv |
    44. | db |
    45. .............................................
    46. | user | ## 用户信息(账户、密码)存储的表
    47. +---------------------------+
    48. 31 rows in set (0.00 sec)
    49. ## 修改root密码
    50. mysql> update mysql.user set authentication_string = PASSWORD('123123') where user='root'## 修改 mysql库user表中的authentication_string字段为 123123《使用PASSWORD()
    51. 表示加密 ,where定位用户名》
    52. mysql> flush privileges ##刷新user 表
    53. mysql> quit ## 退出 也可使用exit
    54. Bye
    55. 验证:
    56. [root@zwb_mysql ~]# mysql -uroot -p123123
    57. .................
    58. mysql> 登录成功,删除/etc/my.cnf添加的字段


     

  • 相关阅读:
    336_C++_ImageBuffer类管理ImagesCache类,ImagesCache负责在进程地址空间中映射给定大小区域,处理较大数据的缓存和缓冲
    [附源码]SSM计算机毕业设计血库管理系统JAVA
    [羊城杯 2020]GMC
    19.Qt 组合框的实现和应用
    ctfshow 文件上传 151-161
    天地无用 - 修改朋友圈的定位: 高德地图 + 爱思助手
    精通Java并发:ReentrantLock原理、应用与优秀实践
    【机器学习】神经网络入门
    nginx搭建域名访问环境(反向代理配置)(练习用)
    内存取证系列5
  • 原文地址:https://blog.csdn.net/m0_62948770/article/details/126825452