Mysql数据库的基本操作(增,删,改,查)和高级操作!————个人整理,感谢观看!

一,基本操作;

查看:

#大部分sql操作命令必须以 ;结束

1.查看数据库信息;

show databases;

2.查看数据库中的表信息;

use + 数据库名;
show tables;

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

describe user; #也可使用desc user;

二,SQL概述

SQL语言

  • 结构化查询语言
  • 关系型数据库的标准语言
  • 用于维护管理数据库
    包括数据查询,数据更新,访问控制,对象管理等功能;
    SQL分类
    DDL:数据定义语言
    DML:数据操纵语言
    DQL:数据查询语言
    DCL:数据控制语言

三,操作

(增)

1.创建数据库和表

  • DDL语句用于创建数据库对象,如库,表,索引等;

  • 使用DDL语句新建库,表

    创建数据库: create database 数据库名称;
    创建数据表: create table 表名 (字段名义…)

  • 创建数据库;
    create database vov;

  • 创建数据表;

use vov;
 
create table vovs (name CHAR(16) NOT NULL,password CHAR(48) DEFAULT'', PRIMARY KEY (name));  
注释:在vov库下常见vovs表,name字符不超过16不能为空,密码不超过48字符,默认'空'

2.管理表中的数据

  • DML语句用于对表中的数据进行管理
  • 包括操作
    insert: 插入新数据;
    update:更新原有数据;
    delete:删除不需要的数据;
  • 向数据表中插入新的数据记录;

格式:insert into 表名(字段1,字段2,…) values (字段1的值,字段2的值,…)

例:在vov库下的vovs表中,插入新的表xiaoming,xioahong和密码;
use  vov;
insert into vovs (name,password) values ('xiaoming',password('123123'));
use  vov;
insert into vovs values('xiaohong',password('123456'));

注释:password(‘密码’) 是属于密文密码,不加password的话是明文密码;
在这里插入图片描述

(改)

修改,更新数据表中的数据记录;

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


例:将vov.vovs  下的xiaohong表的密码更改明文为789789
update  vov.vovs  set password=('789789') where name='xiaohong';

在这里插入图片描述

(查)

  • DQL是数据查询语句中,只有select
  • 用于从数据表中查找符合条件的数据记录;
  • 查询时可不指定条件;(数据表过多时,大量的数据一下查看,很危险的)
  • 查询是指定条件;(一般最好用这个,指定查找)

格式:
1.查询不指定条件:select 字段名1,字段名2,…from 表名;

select * from vov.vovs; #查询vov.vovs下的所有!;*代表所有查找条件,字段…;
在这里插入图片描述
2.查询指定条件: select 字段名1,字段名2… from 表明 where 条件表达式;

select name,passwod from vov.vovs where name=‘xiaoming’;
在这里插入图片描述

(删)(高危操作!!)

DDL语句中:drop table

  • 删除指定的数据表:drop table 库名.表名;
drop table  vov.vovs;

mysql> use vov;
Database changed

mysql> show tables;
Empty set (0.00 sec)

  • 删除指定的数据库:drop database 库名;
drop database vov;

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hgg                |
| myadm              |
| mysql              |
| performance_schema |
| sys                |
| vov                |
+--------------------+
7 rows in set (0.00 sec)

mysql> drop database vov;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hgg                |
| myadm              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

#######################################################

  • 在数据表中删除指定的数据记录;
    格式:delete from 表名 where 条件表达式

delete from vov.vovs where name=‘xiaohong’;

  • 不带where条件的语句表示删除表中所有的记录;(高危!慎用!不带where的)

delete from vov.vovs;


mysql> select * from vov.vovs 
    -> ;
+----------+-------------------------------------------+
| name     | passwod                                   |
+----------+-------------------------------------------+
| xiaohong | 789789                                    |
| xiaoming | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
+----------+-------------------------------------------+
2 rows in set (0.00 sec)

mysql> delete from vov.vovs where name='xiaoming';
Query OK, 1 row affected (0.00 sec)

mysql> select * from vov.vovs;
+----------+---------+
| name     | passwod |
+----------+---------+
| xiaohong | 789789  |
+----------+---------+
1 row in set (0.00 sec)

mysql> delete from vov.vovs;
Query OK, 1 row affected (0.01 sec)

mysql> select * from vov.vovs;
Empty set (0.00 sec)

数据库用户授权;

  • 查看用户的权限;
    格式:show grants for 用户名@来源地址;
    show grants for ‘wow’@’%’; #%可以是ip地址,%是所有ip????

  • 设置用户授权(用户不存在时,则新建用户)

grant  select  on vov.*  to  'wow'@'localhost' identified by '123123';
flush privileges;

mysql> show grants  for 'wow'@'localhost';  #查看权限
+----------------------------------------------+
| Grants for wow@localhost                     |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'wow'@'localhost'      |
| GRANT SELECT ON "vov".* TO 'wow'@'localhost' |
+----------------------------------------------+
2 rows in set (0.00 sec)

exit                  #退出当前管理用户
bye

mysql -u wow -p       # 用wow用户登录,验证下权限;
Enter password: 

mysql> drop table vov.vovs;
ERROR 1142 (42000): DROP command denied to user 'wow'@'localhost' for table 'vovs'


  • 撤销用户的权限;
    revoke 权限列表 on 数据库名.表名 from 用户名@来源地址;
revoke all on vov.*  from 'wow'@'localhost';      #撤销所有权限 on vov数据库和所有表  from  'wow'@'主机登录';

mysql> show grants for 'wow'@'localhost';
+-----------------------------------------+
| Grants for wow@localhost                |
+-----------------------------------------+
| GRANT USAGE ON *.* TO 'wow'@'localhost' |
+-----------------------------------------+
1 row in set (0.00 sec)

四,数据库高级操作

  • 清空表
  • 克隆表
  • 临时表

1.清空表(高危!)

清空一个数据表就是删除这个表内的所有数据。
1.之前讲过的(删)里delete from 不指定条件,可以删除表内的所有记录;
2.truncate table 语句是删除表中的所有记录数据;灵活性差!!
3.一般使用灵活的 delete form where 条件表达!!!!!!
use vov;

create table yoy (name CHAR(16) NOT NULL,password CHAR(48) DEFAULT'',level CHAR(16) NOT NULL,PRIMARY KEY (name));
#在vov库下创建一个yoy表;

增加些记录到表内;

insert into yoy values ('xiaozhang',password('123123'),10);
insert into yoy values ('xiaozhang1',password('123123'),15);
insert into yoy values ('xiaozhang2',password('123123'),8);
insert into yoy values ('xiaozhang3',password('123123'),6);


mysql> select * from vov.yoy;
+------------+-------------------------------------------+-------+
| name       | password                                  | level |
+------------+-------------------------------------------+-------+
| xiaozhang  | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | 10    |
| xiaozhang1 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | 15    |
| xiaozhang2 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | 8     |
| xiaozhang3 | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 | 6     |
+------------+-------------------------------------------+-------+

mysql> truncate table vov.yoy;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from vov.yoy;
Empty set (0.00 sec)



2.克隆表

在mysql的开发和维护过程中,会有原样拷贝某个数据表的需求。如何快速的拷贝数据表?create table 新表 as select * from 要克隆的表数据;(但是表的索引,默认值等无法复制过来。)
as是连接语句的操作符,更多的是被用来设置别名;


复制表数据记录

mysql> create table lol as select * from yoy;

Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0


mysql> select count(*)from lol;
+----------+
| count(*) |
+----------+
|        4 |
+----------+
1 row in set (0.01 sec)

克隆了四个数据记录!!

用软件图形化显示出来,方便大家能够理解;可以看到将原表数据记录都复制过来了;

在这里插入图片描述

  • like方法
    完整复制表结构,like方法可以将源表完全一样的复制生成一个新表,包括表的备注,索引,主键,存储引擎等,但不会复制表内的数据记录;
create table uou like yoy;

Query OK, 0 rows affected (0.01 sec)

mysql> show create table uou\G;
*************************** 1. row ***************************
       Table: uou
Create Table: CREATE TABLE "uou" (
  "name" char(16) NOT NULL,
  "password" char(48) DEFAULT '',
  "level" char(16) NOT NULL,
  PRIMARY KEY ("name")
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

用软件图形化显示出来,方便大家能够理解;只复制表结构,不复制数据;

在这里插入图片描述

3.临时表

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

create temporary table `who` (`id`int(10) NOT NULL AUTO_INCREMENT,`NAME`varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`level` int(10) NOT NULL,PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql> insert into who (name,level) values('aa',10);
Query OK, 1 row affected (0.00 sec)

mysql> select * from who;
+----+------+-------+
| id | NAME | level |
+----+------+-------+
|  1 | aa   |    10 |
+----+------+-------+
1 row in set (0.01 sec)

退出当前连接数据库用户!

mysql> use vov;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from who;
ERROR 1146 (42S02): Table 'vov.who' doesn't exist

猜你喜欢

转载自blog.csdn.net/weixin_47320286/article/details/108494842