Py学习  »  DATABASE

MySQL数据库管理语句用法(增、删、改、查、授权……)

知无涯学无尽 • 3 年前 • 272 次点击  

创建数据库、表

语法格式

创建数据库:create database 数据库名
创建数据表:create table 表名 (字段含义......
  • 1
  • 2
  • 1
  • 2

示例

mysql> use bbs;
Database changed
mysql> create table users (user_name char(16) not null,user_password char(48) default ‘’,primary key (user_name));
Query OK, 0 rows affected (0.01 sec)
mysql> create table ltp (user_name char(16) not null,user_password char(48) default ‘’,primary key (user_name));
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
±--------------+
| Tables_in_bbs |
±--------------+
| ltp |
| users |
±--------------+
2 rows in set (0.00 sec)

查看数据表结构信息

mysql> describe users;
±--------------±---------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±--------------±---------±-----±----±--------±------+
| user_name | char(16) | NO | PRI | NULL | |
| user_password | char(48) | YES | | | |
±--------------±---------±-----±----±--------±------+
2 rows in set (0.02 sec)

mysql> desc ltp;
±--------------±---------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±--------------±---------±-----±----±--------±------+
| user_name | char(16) | NO | PRI | NULL | |
| user_password | char(48) | YES | | | |
±--------------±---------±-----±----±--------±------+
2 rows in set (0.00 sec)

删除数据表

drop database 数据库名;
  • 1
  • 1

示例

mysql> drop table bbs.users; ##删除bbs库中的users表
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
±--------------+
| Tables_in_bbs |
±--------------+
| ltp |
±--------------+
1 row in set (0.00 sec)

删除数据库

语法格式

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

示例

mysql> show databases;//查看数据库列表
±-------------------+
| Database |
±-------------------+
| information_schema |
| bbs |
| myadm |
| mysql |
| performance_schema |
| sys |
±-------------------+
6 rows in set (0.00 sec)
mysql> drop database myadm; //删除myadm数据库
Query OK, 297 rows affected (0.04 sec)
mysql> show databases; //再次查看列表,确认删除
±-------------------+
| Database |
±-------------------+
| information_schema |
| bbs |
| mysql |
| performance_schema |
| sys |
±-------------------+
5 rows in set (0.00 sec)

插入数据到表中

语法格式

insert into 表名(字段1,字段2,.....) values(字段1的值,字段2的值,.....)
  • 1
  • 1

示例

mysql> insert into ltp(user_name,user_password) values(‘lisi’,password(‘123456’));
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into ltp values(‘zhangshan’,password(‘123456’));
Query OK, 1 row affected, 1 warning (0.01 sec)

查看表数据

语法格式

 select 字段名1,字段名2......from 表名 where 条件表达式
  • 1
  • 1

示例

mysql> select * from ltp; //可以查看到上例中插入的数据
±----------±------------------------------------------+
| user_name | user_password |
±----------±------------------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| zhangshan | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
±----------±------------------------------------------+
2 rows in set (0.00 sec)

更新,改动表中数据

语法格式

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

示例

mysql> insert into ltp value(‘lisi’,‘123456’);
Query OK, 1 row affected (0.00 sec)
mysql> select * from ltp;
±----------±------------------------------------------+
| user_name | user_password |
±----------±------------------------------------------+
| lisi | 123456 |
| zhangshan | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
±----------±------------------------------------------+
2 rows in set (0.00 sec)
mysql> update ltp set user_password=246800 where user_name=‘lisi’; ##将lisi密码改为2468800
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from ltp; ##查看,更改成功
±----------±------------------------------------------+
| user_name | user_password |
±----------±------------------------------------------+
| lisi | 246800 |
| zhangshan | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
±----------±------------------------------------------+
2 rows in set (0.00 sec)

删除表中数据

语法格式

  delete from 表名 where 条件表达式
  • 1
  • 1

示例

mysql> select * from ltp; //查看ltp表数据
±----------±------------------------------------------+
| user_name | user_password |
±----------±------------------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| zhangshan | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
±----------±------------------------------------------+
mysql> delete from ltp where user_name=‘lisi’; //删除用户lisi的数据
Query OK, 1 row affected (0.00 sec)
mysql> select * from ltp; //查看删除成功
±----------±------------------------------------------+
| user_name | user_password |
±----------±------------------------------------------+
| zhangshan | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
±----------±------------------------------------------+
1 row in set (0.00 sec)

克隆表

克隆表描述

在MySQL的开发和维护过程中,会有原样拷贝某个数据表的需求。怎么样才能够快速、
完整的拷贝数据表呢?先来看一下CREATE TABLE new_tablename AS SELECT这个语句

示例

mysql> show create table bbs.ltp; //查看数据表结构信息,与describe相似,标记部分内容可以直接复制,更改表名,达到可以表的作用
……省略部分
| ltp | CREATE TABLE “ltp” (
“user_name” char(16) NOT NULL,
“user_password” char(48) DEFAULT ‘’,
PRIMARY KEY (“user_name”)
) ENGINE=InnoDB DEFAULT CHARSET
=utf8 |
……省略部分
1 row in set (0.00 sec)
mysql> CREATE TABLE “ltpbak” ( //创建克隆表,只有源表属性,没有数据
-> “user_name” char(16) NOT NULL,
-> “user_password” char(48) DEFAULT ‘’,
-> PRIMARY KEY (“user_name”)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into ltpbak select * from ltp; //导入数据,完成克隆
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from ltpbak;
±----------±------------------------------------------+
| user_name | user_password |
±----------±------------------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| zhangshan | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
±----------±------------------------------------------+
2 rows in set (0.00 sec)

创建临时表

临时表概述

MySQL的临时表,顾名思义,就是临时建立的表,并不会长期存在,主要用于保存一
些临时数据。临时表有个特性,就是只在当前连接可见,当前连接下可执行增删改查等操作,
当连接被关闭后,临时表就会被MySQL删除,相关的资源也会被释放。

示例

mysql> CREATE temporary TABLE “ltp123” ( ##同样可以克隆一个临时表,使用temporary,方法与克隆表相似,create语法中加上temporary。
-> “user_name” char(16) NOT NULL,
-> “user_password” char(48) DEFAULT ‘’,
-> PRIMARY KEY (“user_name”)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> insert into ltp123 values(1,2) ;
Query OK, 1 row affected (0.01 sec)
mysql> select * from ltp123;
±----------±--------------+
| user_name | user_password |
±----------±--------------+
| 1 | 2 |
±----------±--------------+
1 row in set (0.00 sec)
mysql> \q
Bye

[root@localhost ~]# mysql -u root -p //重新登录
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> select * from ltp123; ##重新登入后之前创建的临时表消失
ERROR 1046 (3D000): No database selected
创建自定义临时表
mysql> create temporary table ltptem(students char(16) not null,class char(16) not null,primary key (students)); ##创建自定义的临时表
mysql> insert into ltptem values(‘li’,‘2’);
Query OK, 1 row affected (0.00 sec)
mysql> select * from ltptem;
±---------±------+
| students | class |
±---------±------+
| li | 2 |
±---------±------+
1 row in set (0.00 sec)

用户授权管理

用户授权

语法格式

 grant 权限列表 on 数据库名.表名 to 用户名@来源地址 [identified by '密码']
  • 1
  • 1

示例

mysql> grant select on bbs.* to ‘ltp_admin’@‘localhost’ identified by ‘123456’;
Query OK, 0 rows affected, 1 warning (0.00 sec) ##授予本地登入的ltp_admin管理账号查询bbs数据库的权限,身份验证码为“123456”
mysql> \q 退出
Bye
[root@localhost ~]# mysql -u ltp_admin -p ##用ltp_admin管理账号登入
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> show grants; ##查看授权,可以看到有select查看权限
±---------------------------------------------------+
| Grants for ltp_admin@localhost |
±---------------------------------------------------+
| GRANT USAGE ON . TO ‘ltp_admin’@‘localhost’ |
| GRANT SELECT ON “bbs”.* TO ‘ltp_admin’@‘localhost’ |
±---------------------------------------------------+
2 rows in set (0.00 sec)

删除授权

语法格式

   revoke 权限列表 on 数据库名.表名 from 用户名@来源地址
  • 1
  • 1

示例

mysql> revoke all on bbs.* from ‘ltp_admin’@‘localhost’; ##删除本地访问的ltp_admin用户所有关于bbs数据库的授权
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for ‘ltp_admin’@‘localhost’; ## 查看ltp_admin的授权情况,发现已无授权
±----------------------------------------------+
| Grants for ltp_admin@localhost |
±----------------------------------------------+
| GRANT USAGE ON . TO ‘ltp_admin’@‘localhost’ |
±----------------------------------------------+
1 row in set (0.01 sec)
mysql> \q
Bye
[root@localhost ~]# mysql -u ltp_admin -p ## 进入ltp_admin账户测试
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> use bbs ## 发现使用bbs数据库的权限也没有了
ERROR 1044 (42000): Access denied for user ‘ltp_admin’@‘localhost’ to database ‘bbs’

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/73380
 
272 次点击