使用MySQL数据库
查看数据库结构
查看当前服务器中的数据库
cpp
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
查看当前数据库有哪些表
cpp
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| users |
+----------------+
1 row in set (0.00 sec)
查看表结构
cpp
mysql> describe users;
+---------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------+------+-----+---------+-------+
| user_name | char(20) | NO | PRI | NULL | |
| user_password | char(50) | YES | | 123456 | |
+---------------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
SQL语言的主要组成部分
数据定义语言(DDL):DROP(删除)、CREATE(创建)、ALTER(修改)等语句。
数据操作语言(DML):INSERT(插入)、UPDATE(更新)、DELETE(删除)语句。
数据查询语言(DQL):SELECTE(选择),SHOW语句。
数据控制语言(DCL):GRANT(授权)、REVOKE(撤销授权)、COMMIT(提交)、ROLLBACK(回退)等语句。
创建及删除数据库和表
创建新库
cpp
mysql> create database auth;
创建新表
cpp
mysql> use auth;
mysql> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));
//DEFAULT '' 密码默认为空
删除一个数据表
cpp
mysql> DROP TABLE auth.users;
删除一个数据库
cpp
mysql>DROP DATABASE auth;
管理表中的数据记录
插入数据记录
cpp
mysql>use auth;
mysql>INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD ('123456'));
mysql>INSERT INTO users VALUES('lisi', PASSWORD('654321')); //password用来对密码进行加密
查询数据记录
cpp
mysql>select * from auth.users;
mysql>SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';
修改数据记录
cpp
mysql>UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name= 'lisi';
mysql>SELECT * FROM auth.users;
mysql>UPDATE mysql.user SET authentication_string=PASSWORD('123457') WHERE user='root'; //修改登录用户root的密码
mysql>FLUSH PRIVILEGES;
[root@www ~]# mysqladmin -u root -p'123457' password '123456'
删除数据记录
cpp
mysql>DELETE FROM auth.users WHERE user_name='lisi';
mysql>SELECT * FROM auth.users;
数据库表高级操作
克隆表
cpp
mysql>create table user01 like auth.users; //通过 LIKE 方法,复制 users 表生成 tmp 表,注意,此表为空
mysql>insert into user01 select * from auth.users; //通过 player 表生成 tmp 表内数据记录
删除表
cpp
mysql>delete from user01;
mysql>truncate table user01;
truncate和delete的区别:
truncate删除表中的内容,不删除表结构,释放空间;
delete删除表中的内容,不删除表结构,但不释放空间
delete可以在后续加上where进行针对行的删除
truncate和drop后面只能加上表名,直接删除表,无法where
临时表
cpp
mysql>CREATE TEMPORARY TABLE `mytmp` (
`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 mytmp(name,level) values('aa',10); //插入数据
Query OK, 1 row affected (0.01 sec)
mysql>select * from mytmp;
mysql>quit //退出当前连接
Bye
mysql>select * from mytmp; //重新连接 MySQL 之后查看临时表状态,会发现不存在
数据库用户授权
授予权限
cpp
mysql>GRANT select ON auth.* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';
查看权限
cpp
mysql> SHOW GRANTS FOR 'zhangsan'@'localhost';
验证权限
cpp
[root@localhost ~]# mysql -u zhangsan -p123456
mysql> select * from auth.users;
mysql> select * from mysql.user;
//zhangsan用户可以查看auth数据库的表,但不能查看mysql数据库的表。
撤销权限
cpp
mysql> revoke all on auth.* from zhangsan@'localhost';
[root@localhost ~]# mysql -u zhangsan -p123456
mysql> select * from mysql.user;
撤销权限后,已经无法查看auth中的表