Mysql数据库的基础语句

「爱情、让人受尽委屈。」 2024-04-05 07:27 136阅读 0赞

目录

一、访问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添加的字段

#

#

发表评论

表情:
评论列表 (有 0 条评论,136人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL基础语句

    0 写在前面 如今数据库可视化工具已经很强大了,往往只需要点开软件点击鼠标就可以完成很多操作。例如:Navicat Premium (收费,功能齐全。收费不过可以破解)、