1. mysql基本操作
1.查看数据库信息
[root@server ~]# mysql -uroot -pabc123 #登录数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema | #定义访问数据库单元数据的方式。数据库名和表名,列的数据类型,访问权限等。
| auth |
| bbs |
| mysql | #核心数据库,负责存储数据库用户、权限、关键字等用户自己需要使用的控制和管理信息。
| performance_schema | #数据库的性能参数,存储引擎等。
| sys | #sys系统库下包含许多试图,它们以各种方式对performance_schema表进行聚合计算展示。
| tanwenlong |
+--------------------+
7 rows in set (0.00 sec)
2.查看当前数据库中有哪些表
mysql> use mysql; #use 数据库名;
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> show tables; #查看数据库中的表
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| func |
| general_log |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
23 rows in set (0.00 sec)
## 3.查看表的结构
mysql> use mysql;
mysql> describe user;
## 4.SQL语句概述
### 1、SQL语言
1、Structured Query Language的缩写,即结构化查询语言
2、关系型数据库的标准语言
3、用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能
### 2、SQL分类
1、DDL(Data Definition Language)数据定义语言:用来建立数据库、数据库对象和定义字段,如CREATE、ALTER、DROP
2、DML(Data Manipulation Language)数据操纵语言:用来插入、删除和修改数据库中的数据,如INSERT、UPDATE、DELETE
3、DQL(Data Query Language)数据查询语言:用来查询数据中的数据,如SELECT
4、DCL(Data Control Language)数据控制语言:用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、GRANT、REVOKE
## 5.DDL(Data Definition Language)数据定义语言
#############1.创建新的数据库和新的表#######################
mysql> create database twl; #CREATE DATABASE 数据库名
mysql> use twl;
mysql> create table users(name char(26) not null,passwd char(36) default'123456',primary key(name));
#############5.2删除一个数据表############################
mysql> drop table user;
#############5.3删除一个数据库############################
mysql> drop database twl;
## 6.DML(Data Manipulation Language)数据操纵语言
#############6.1创建数据库与数据表#########################
mysql> create database twl;
Query OK, 1 row affected (0.00 sec)
mysql> use twl;
Database changed
mysql> create table users(name char(26) not null,passwd char(36) default'123456',primary key(name));
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+---------------+
| Tables_in_twl |
+---------------+
| users |
+---------------+
1 row in set (0.00 sec)
mysql> describe users;
+--------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| name | char(26) | NO | PRI | NULL | |
| passwd | char(36) | YES | | 123456 | |
+--------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
##############6.2插入数据记录###########################
mysql> use twl;
mysql> insert into users values('zhangsan',default);
mysql> insert into users(name,passwd) values('lisi','123456'); ###INSERT INTO 表名(字段1,字段2…) VALUES(字段1的值,字段2的值…
#############6.3查询数据记录############################
mysql> select * from twl.users;
+----------+--------+
| name | passwd |
+----------+--------+
| lisi | 123456 |
| zhangsan | 123456 |
+----------+--------+
2 rows in set (0.00 sec)
mysql> select name,passwd from twl.users where name='zhangsan'; ###SELECT 字段名1,字段名2,… FROM 表名 WHERE 条件表达式
##########6.4修改数据记录############################
mysql> update twl.users set passwd=123123 where name='zhangsan'; ###UPDATE 表名 SET 字段名1=字段值1[字段名2=字段值2] WHERE 条件表达式
##########6.5修改数据库密码##########################
方法一:
mysql> update mysql.user set authentication_string=PASSWORD('123456') where user='root';
mysql> flush privileges;
方法二:
[root@server ~]# mysqladmin -u root -p'123456' password 'abc123'
方法三:
mysql> SET PASSWORD = PASSWORD('newpass'); //root用户
mysql> SET PASSWORD FOR 用户 = PASSWORD(‘newpass');
忘记密码:
vi /etc/my.cnf
[mysqld]
末尾添加
skip_name_resolve
skip_grant_tables
bind-address=0.0.0.0
systemctl restart mysqld
##########6.6删除数据库的记录##########################
mysql> delete from twl.users where name='zhangsan'; ###DELETE FROM 表名 WHERE 条件表达式
mysql> select * from twl.users;
2.数据表的高级操作
#########1.1清空表############
mysql> delete from twl.users; ###DELETE语句可以通过WHERE对要删除的记录进行选择。数据没了,结构还在。
mysql> truncate table twl.users; ###TRUNCATE TABLE将删除表中的所有记录。数据没了,结构还在。
########1.2创建临时表##########
##########临时建立的表,用于保存一些临时数据,不会长期存在###################
mysql> CREATE TEMPORARY TABLE `lt`(`id` int(10) NOT NULL AUTO_INCREMENT,`ame name` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`level` int(10) NOT NULL,PRIMARY KEY (id))ENGINE=InnoDB DEFAULT COLLATE=utf8; ###TEMPORARY:临时,AUTO_INCREMENT:自加一,CHARACTER SET utf8字符集设置utf8,COLLATE utf8_bin NOT NULL:编码设置二进制编码,DEFAULT COLLATE=utf8:默认字符集
mysql> INSERT INTO lt(name,level) VALUES('aa',10);
mysql> select * from lt; ###临时建立,退出删除,在show tables;看不到
#########1.3克隆表#############
#####LIKE方法:#####
从ttt完整复制结构生成test1表,再导入数据
mysql> create table test1 like ttt;
mysql> insert into test1 select * from ttt; #插入信息
####SHOW CREATE TABLE方法####
先查看bbb表完整结构,根据此结构创建名字不同结构相同的表test2,再导入数据
mysql> show create table bbb\G
mysql> create table test2("id" int(20) NOT NULL AUTO_INCREMENT, "name" varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, "level" int(20) NOT NULL, PRIMARY KEY ("id") ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
mysql>insert into test2 select * from bbb;
######1.4数据库用户授权##########
mysql> insert into users(name,passwd) VALUES('lisi',PASSWORD'123123');
mysql> GRANT select ON twl.users TO 'lisi'@'localhost' IDENTIFIED BY '123456'; ###语法:GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 IDENTIFIED BY ‘密码’
#####1.5查看用户权限############
mysql> SHOW GRANTS FOR 'lisi'@'localhost'; ###SHOW GRANTS FOR 用户名@来源地址
mysql> exit
mysql -ulisi -p 123456
#######1.6撤销用户的权限#######
mysql> REVOKE all ON twl.users FROM 'lisi'@'localhost'; ###REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址