文章目录
一、数据库的基本操作
1.1、查看数据库结构
1.1.1、查看数据库信息
[root@localhost ~]# mysql -uroot -p
Enter password: '输入密码'
mysql> show databases; '必须以;结束,也可以先不输入直接按回车在下一行输入,输入的内容也可以是大写字母'
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbs |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql>
1.1.2、查看当前使用的库中包含的表
mysql> use mysql ##切换到这个库
Database changed
mysql> show tables; ##查看当前库中包含的表
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
........ ##以下省略 ..........
| users |
+---------------------------+
32 rows in set (0.00 sec)
1.1.3、显示数据库的结构(字段)
mysql> describe user; '数据库名或表名,也可以使用desc user;'
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N
1.2、SQL 语句概述
SQL语言
Structured Query Language的缩写,即结构化查询语言
关系型数据库的标准语言
用于维护管理数据库
包括数据查询、数据更新、访问控制、对象管理等功能
SQL分类
DDL:数据定义语言 create(表、库),drop,alter(表结构、属性、引擎)
DML:数据操纵语言 insert into、update、delete(数据)
DQL:数据查询语言 select
DCL:数据控制语言 grant (授权)、revoke(撤权)
1.2.1、DDL—创建数据库和表
DDL语句可用于创建数据库对象,如库、表、索引等
1.2.1.1、创建新的库
create database 数据库名
mysql> create database ab; ## 创建新的库
Query OK, 1 row affected (0.00 sec)
1.2.1.2、创建新的表
create table 表名
mysql> use ab;
mysql> create table abc (user_name CHAR(16) NOT NULL,user_passwd CHAR(48) DEFAULT '',PRIMARY KEY(user_name));
Query OK, 0 rows affected (0.00 sec)
mysql> describe abc;
+-------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name | char(16) | NO | PRI | NULL | |
| user_passwd | char(48) | YES | | | |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.02 sec
1.2.1.3、删除指定的数据表
DROP TABLE [数据库名] 表名
mysql> drop table auth.users;
Query OK, 0 rows affected (0.00 sec)
1.2.1.4、删除指定的数据库
DROP DATABASE 数据库名
mysql> drop database ab;
Query OK, 1 row affected (0.00 sec)
1.2.2、DML—管理表中的数据
DML语句用于对表中的数据进行管理
包括的操作
INSERT:插入新数据
UPDATE:更新原有数据
DELETE:删除不需要的数据
1.2.2.1、插入新数据记录
INSERT INTO 表名(字段1,字段2,…) VALUES(字段1的值,字段2 的值,…)
mysql> create database aa; ## 创建库aa
Query OK, 1 row affected (0.00 sec)
mysql> create table bb (user_name CHAR(16) NOT NULL,user_passwd CHAR(48) DEFAULT '',PRIMARY KEY(user_name)); ## 创建表 bb
Query OK, 0 rows affected (0.00 sec)
mysql> insert into bb(user_name,user_passwd)values('lisi',PASSWORD('123456'));
Query OK, 1 row affected, 1 warning (0.00 sec) ## 在表中插入记录,按指定插入
mysql> insert into bb values('wangwu',PASSWORD('123456'));
Query OK, 1 row affected, 1 warning (0.00 sec) ## 在表中插入记录,按顺序插入
mysql> insert into bb(user_name,user_passwd) values('zhaoliu','123456'); ## 不加 PASSWORD(),就是明文
Query OK, 1 row affected (0.00 sec)
1.2.2.2、修改、更新数据表中的数据记录
UPDATE 表名 SET 字段名1=值1[,字段名2=值2] WHERE 条件表达式
mysql> update aa.bb set user_passwd='' where user_name='lisi';
mysql> select * from aa.bb; ## 修改完后进行验证
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | |
| wangwu | *E710DC2512FCF6F18FE0D652B53290DCB11F3334 |
| zhaoliu | 123456 |
+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
1.2.2.3、在数据表中删除指定的数据记录
DELETE FROM 表名 WHERE 条件表达式
mysql> delete from aa.bb where user_name='lisi';
Query OK, 1 row affected (0.00 sec) ## 删除用户名为lisi的数据
mysql> select * from aa.bb; ## 查询一下bb表中lisi数据是否删除
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| wangwu | *E710DC2512FCF6F18FE0D652B53290DCB11F3334 |
| zhaoliu | 123456 |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
1.2.3、DQL—数据查询语句
DQL是数据查询语句,只有SELECT
用于从数据表中查找符合条件的数据记录
查询时可不指定条件
SELECT 字段名1,字段名2,…FROM 表名
mysql> select * from aa.bb; ## 查询 库kk中的表KK,所有内容
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| wangwu | *E710DC2512FCF6F18FE0D652B53290DCB11F3334 |
| zhaoliu | 123456 |
+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
当需要特定的的条件查找记录时,where条件子句则是必不可少的。如:查找 lisi 的记录,显示用户名和密码字段的信息,可做以下操作
mysql> select * from aa.bb where user_name='lisi';
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| lisi | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)
二、数据库用户授权
2.1、DCL—数据控制语句
2.1.1、设置用户权限
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [IDENTIFIED BY ‘密码’]
mysql> GRANT select ON auth.* TO 'jack'@'localhost' IDENTIFIED BY 'abc123'; '//创建jack用户名,并设置权限为仅选'
Query OK, 0 rows affected, 1 warning (0.00 sec)
2.1.2、查看用户权限
SHOW GRANTS for 用户名@来源地址;
mysql> SHOW GRANTS FOR 'jack'@'localhost'; '//查看用户权限'
+-----------------------------------------------+
| Grants for jack@localhost |
+-----------------------------------------------+
| GRANT USAGE ON *.* TO 'jack'@'localhost' |
| GRANT SELECT ON "auth".* TO 'jack'@'localhost' |
+-----------------------------------------------+
2 rows in set (0.00 sec)
2.1.3、撤销用户权限
REVOKE权限列表 ON 数据库名.表名 FROM 用户名@来源地址
mysql> REVOKE all ON auth.* from 'jack'@'localhost'; '//撤销权限'
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW GRANTS FOR 'jack'@'localhost'; '//再次查看权限,发现没有SELECT权限'
+-----------------------------------------+
| Grants for jack@localhost |
+-----------------------------------------+
| GRANT USAGE ON *.* TO 'jack'@'localhost' |
+-----------------------------------------+
1 row in set (0.00 sec)