0
点赞
收藏
分享

微信扫一扫

Mysql数据库操作

纽二 2023-02-23 阅读 44

一、SQL 语句概述

SQL 语言是(Structured Query Language 的缩写,即结构化查询语言),是关系型数据库 的标准语言,用于维护管理数据库,如数据查询、数据更新、访问控制、对象管理等功能。

SQL 分类:

  • DDL:数据定义语言,用于增删改数据库的对象,如库、表、索引等
  • DML:数据操纵语言,用于对表中的数据进行增删改
  • DQL:数据查询语言,用于数据查询
  • DCL:数据控制语言

语言

中文名称

作用

主要命令

DDL

数据定义语言

增删改–>库、表、索引

createdrop

DML

数据操纵语言

增删改–>数据

insertupdatedelete

DQL

数据查询语言


查询数据

select

DCL

数据控制语言



二、MySQL 数据库表的管理操作

注:大部分命令不区分大小写

1、查看数据库结构

查看数据库列表信息

格式:show databases;

示例:

[root@mysql-master ~]# netstat -utpln |grep mysql

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 13123/mysqld

[root@mysql-master ~]# mysql -u root -p

Enter password:123123

mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)

查看数据库中的数据表信息

格式:

use 数据库名;

show tables;

示例:

mysql> use mysql;

Database changed

mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
......

显示数据表的结构(字段)

格式:

describe [数据库.]表名;

示例:

mysql> describe mysql.user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
.....

mysql> use mysql;

Database changed

mysql> describe user;

+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |


2、DDL 语句操作

数据定义语言,用于增删改数据库的对象,如库、表、索引等

create 创建新库、创建新表

格式:

create database 数据库名;

create table 表名 (定义字段);

示例:

mysql> create database auth;     //新建一个名为auth的数据库
Query OK, 1 row affected (0.01 sec)

mysql> use auth; //使用auth这个数据库

Database changed

mysql> create table users (user_name char(20) not null,user_passwd char(30) default '',primary key(user_name)); //在auth库中,创建名为users的表,表内俩个字段为(user_name 最多20个字节 不能为空,user_passwd 最多为30个字节 默认为空,索引关键字 user_name)

Query OK, 0 rows affected (0.05 sec)

drop 删除库、删除表

格式:

drop table [数据库名.]表名;

drop database 数据库名;

注意:删除时先删表,再删库

示例:

mysql> drop table auth.users;      //删除auth库中的users表
Query OK, 0 rows affected (0.00 sec)

mysql> drop database auth; //删除auth数据库
Query OK, 0 rows affected (0.00 sec)

3、DML 语句操作

数据操纵语言,用于对表中的数据进行增删改

insert 插入新数据

格式:

insert into 表名(字段 1,字段 2,……) values(‘字段 1 的值’,’字段 2 的值’……);

示例:

mysql> use auth;

Database changed

mysql> desc users;

+-------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name | char(20) | NO | PRI | NULL | |
| user_passwd | char(30) | YES | | | |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into users(user_name,user_passwd) values ('zhangsan',password('123123')); //在users表的(字段user_name,字段user_passwd)中添加('zhangsan',调用函数password(‘123123’));

Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> insert into users values ('lisi',password('123456')); //字段内容可省略

Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from users;

+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC |
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
2 rows in set (0.00 sec)

update 更改原有数据

格式:

update 表名 set 字段名 1=值 1 [,字段 2=值 2] where 条件表达式;

示例:

mysql> update auth.users set user_passwd=password('') where user_name='lisi';      //清空lisi的密码

Query OK, 0 rows affected (0.52 sec)

Rows matched: 1 Changed: 0 Warnings: 0

mysql> select * from users;

+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| lisi | |
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+

2 rows in set (0.00 sec)

mysql> update mysql.user set password=password('123123') where user='root'; //修改mysql登录root用户密码为123123

Query OK, 0 rows affected (0.00 sec)
Rows matched: 4 Changed: 0 Warnings: 0

mysql> flush privileges; //刷新权限

Query OK, 0 rows affected (0.00 sec)

delete 删除不需要的数据

格式:

delete from 表名 where 条件表达式;

示例:

mysql> delete from auth.users where user_name='lisi';      //在auth库中的users表中,删除用户名为lisi的记录

Query OK, 1 row affected (0.01 sec)

mysql> select * from users;

+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
1 row in set (0.00 sec)

mysql> delete from mysql.user where user=''; //在mysql库中的user表中,删除空的用户名的记录

Query OK, 2 rows affected (0.00 sec)

4、DQL 语句操作

数据查询语言,用于数据查询

select 查询语句

格式: select 字段名 1,字段名 2,……from 表名;

select 字段名 1,字段名 2,……from 表名 where 条件表达式;

示例:

mysql> select * from auth.users;

+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
1 row in set (0.00 sec)

mysql> select user_name from auth.users;

+-----------+
| user_name |
+-----------+
| zhangsan |
+-----------+
1 row in set (0.00 sec)

mysql> select * from auth.users where user_name='zhangsan';

+-----------+--------------------------------+
| user_name | user_passwd |
+-----------+--------------------------------+
| zhangsan | *E56A114692FE0DE073F9A1DD68A00 |
+-----------+--------------------------------+
1 row in set (0.00 sec)

三、案例:建立公司 IT 运营部工资数据表

​需求描述:为公司建立员工工资数据库 imployee_salary,在 imployee_salary 数据库中,建立IT_salary数据表,以保存 IT 运营部员工的工资信息,如下表所示:

岗位类别

姓名

年龄

员工ID

学历

年限

薪资

网络工程师

孙空武

27

011

本科

3

4800

Windows工程师

蓝凌

19

012

中专

2

3500

Linux工程师

姜纹

32

013

本科

8

15000

Java软件工程师

关园

38

014

大专

10

16000

硬件驱动工程师

罗中昆

29

015

大专

9

16500

建立数据库imployee_salary

mysql> show databases;

+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)

mysql> create database imployee_salary;

Query OK, 1 row affected (0.00 sec)

mysql> use imployee_salary;

Database changed

建立数据表

mysql> create table IT_salary (岗位类别 char(20) not null,姓名 char(20) not null,年龄 int,员工ID int not null,学历 char(6),年限 int,薪资 int not null, primary key (员工ID));  

#int 数字类型、char 字符串类型、not null 不能为空、char()指定最多字节个数、primary key()指定索引字段

Query OK, 0 rows affected (0.13 sec)

mysql> desc IT_salary;

+--------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+-------+
| 岗位类别 | char(20) | NO | | NULL | |
| 姓名 | char(20) | NO | | NULL | |
| 年龄 | int(11) | YES | | NULL | |
| 员工ID | int(11) | NO | PRI | NULL | |
| 学历 | char(6) | YES | | NULL | |
| 年限 | int(11) | YES | | NULL | |
| 薪资 | int(11) | NO | | NULL | |
+--------------+----------+------+-----+---------+-------+
7 rows in set (0.00 sec)

将 IT 运营部的员工工资信息插入到

mysql> insert into IT_salary (岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values ('网络工程师','孙空武',27,011,'本科',3,4800);

Query OK, 1 row affected (0.01 sec)

mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('Windows 工程师','蓝 凌 ',19,012,'中专',2,3500);

Query OK, 1 row affected (0.00 sec)

mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('Linux 工程师','姜纹 ',32,013,'本科',8,15000);

Query OK, 1 row affected (0.00 sec)

mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('Java 软件工程师','关园', 38,014,'大专',10,16000);

Query OK, 1 row affected (0.00 sec)

mysql> insert into IT_salary(岗位类别,姓名,年龄,员工ID,学历,年限,薪资) values('硬件驱动工程师','罗 中 昆',29,015,'大专',9,16500);

Query OK, 1 row affected (0.01 sec)
注意:创建表时,字段不加 ‘’ 号,插入数据 values值时,字符串加 ‘’ ,数字不加 ‘’号

查看核对信息

mysql> select * from IT_salary;                                                                       

+-----------------------+------------+--------+----------+--------+--------+--------+
| 岗位类别 | 姓名 | 年龄 | 员工ID | 学历 | 年限 | 薪资 |
+-----------------------+------------+--------+----------+--------+--------+--------+
| 网络工程师 | 孙空武 | 27 | 11 | 本科 | 3 | 4800 |
| Windows 工程师 | 蓝 凌 | 19 | 12 | 中专 | 2 | 3500 |
| Linux 工程师 | 姜纹 | 32 | 13 | 本科 | 8 | 15000 |
| Java 软件工程师 | 关 园 | 38 | 14 | 大专 | 10 | 16000 |
| 硬件驱动工程师 | 罗 中昆 | 29 | 15 | 大专 | 9 | 16500 |
+-----------------------+------------+--------+----------+--------+--------+--------+

5 rows in set (0.00 sec)

四、用户权限设置

1、设置用户权限(用户不存在时,则新建用户)

mysql> grant all on *.* to 'root'@'192.168.1.%' identified by '123456';

all: 所有权限
*.*:所有库所有表

Query OK, 0 rows affected (0.00 sec)

mysql> grant select on imployee_salary.* to 'linuxyao'@'localhost' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

[root@mysql-master ~]# mysql -ulinuxyao -p123456

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.5.20-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> delete from imployee_salary.IT_salary where 姓名='关园';

ERROR 1142 (42000): DELETE command denied to user 'linuxyao'@'localhost' for table 'IT_salary'

mysql> select * from imployee_salary.IT_salary;

+-----------------------+------------+--------+----------+--------+--------+--------+
| 岗位类别 | 姓名 | 年龄 | 员工ID | 学历 | 年限 | 薪资 |
+-----------------------+------------+--------+----------+--------+--------+--------+
| 网络工程师 | 孙空武 | 27 | 11 | 本科 | 3 | 4800 |
| Windows 工程师 | 蓝 凌 | 19 | 12 | 中专 | 2 | 3500 |
| Linux 工程师 | 姜纹 | 32 | 13 | 本科 | 8 | 15000 |
| Java 软件工程师 | 关 园 | 38 | 14 | 大专 | 10 | 16000 |
| 硬件驱动工程师 | 罗 中昆 | 29 | 15 | 大专 | 9 | 16500 |
+-----------------------+------------+--------+----------+--------+--------+--------+
5 rows in set (0.00 sec)

2、查看用户权限

mysql> show grants;

mysql> show grants for 'linuxyao'@'localhost';

mysql> show grants for 'linuxyao'@'192.168.0.85';


3、撤销用户权限

mysql> revoke select on imployee_salary.* from 'linuxyao'@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;


远程登录

mysql> grant all on *.* to 'linuxyao'@'%' identified by '123123';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)


Mysql数据库操作_字段

Mysql数据库操作_mysql_02

若宿主机连接报错,查看权限设置是否正确,可尝试如下命令:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'amber'@'%' IDENTIFIED BY '123123' WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;



举报

相关推荐

0 条评论