查看数据库信息:
show databases;
重要的数据都放在mysql当中;注意结尾必须以;结尾
查看数据库中的表信息
USE 数据库名 ##进入数据库;结尾要加“;”
show tables; 查看数据库中的表的信息
查看有几个用户:
select user from user;
describe [数据库名.] 表名
SQL语言:
●Structured Query Language的缩写,即结构化查询语言
●关系型数据库的标准语言
●用于维护管理数据库
SQL分类
●DDL语句可用于创建数据库对象,如库,表,索引等
●使用DDL语句新建库,表
create database 数据库名 create database(固定格式)
create table 表名 (字段定义…)
创建一个名为cai的表
mysql> create table cai (id int(3) not null primary key auto_increment,name varchar(10) not null,score decimal(5,2),address varchar(50) default '未知');
使用DDL语句删除库
删除某个表一定要加绝对路径(哪个库下面的哪个表)
mysql> drop table score;
Drop database 数据库名
mysql> drop database tian; ##删除数据库名为tian的
●DML语句用于对表中的数据进行管理
●包括的操作
向数据表中插入新的数据记录
insert INTO 表名(字段1,字段2......) ##固定格式,中间用逗号隔开
values(字段1的值,字段2的值....) ##values对应的就是值
必须遵循顺序一致;字段1的名称对应字段1的值;数量相同;有多少个字段名称就需要对应多少个字段值;
mysql> insert into cai (id,name,score,address) values (2,'lisi',90.5,'hangzhou');
insert into 是固定格式;后面跟表名cai id的字段名对应后面的2;name对应lisi(字符集是需要加‘’的)
直接写字段值的方法
这种方法如果不加字段名;默认的就是所有字段;要一一对应,按照顺序写全
mysql> insert into cai values (3,'wangwu',70,'suzhou');
mysql> insert into cai (name,score,address) values ('zhaoliu',60,'wuxi'),('tiaqi',80,'default');
多行中间需要用“,”做分割;不设id是因为id的规则设置的是自增长
mysql> select * from cai where score > 80; ##where做条件判断
mysql> create table score as select * from cai where score > 80;
Update 表名 set 字段名1=值1[,字段名2=值2] where 条件表达式
将名字为tiaqi的地址改为guangzhou
mysql> update cai set address='guangzhou' where name='tiaqi';
cai:表名 address:要修改的内容 where:判断条件 当name=tiaqi
Delete from 表名 where 条件表达式
将score表中的分数大于88.50的删除
mysql> delete from score where score = 88.50;
mysql> delete from score; ##删除score表中的数据;但是表还在
●用于从数据表中查找符合条件的数据记录
●查询时可不指条件
Select 字段名1,字段名2 from表名
Select * from 表名
清空表
mysql> truncate table score;
临时表
●临时建立的表,用于保存一些临时数据,不会长期存在,当断开连接后,表就不存在了;
●这边的约束是在结尾定义的,前面要加“,”
这张表默认的字符集设定是utf8;写在括号外面是对整张表的一个设定
mysql> create temporary table cai_info (id int(4) not null auto_increment,name varchar(10) not null,hobby varchar(10) not null,primary key(id))engine=innodb default charset=utf8;
这时候用命令查看表的结构;发现表的结构设置完成
这时给name和hobby字段设置数据
mysql> insert into cai_info (name,hobby) values ('tom','youyong');
查看表数据时,是有内容的
但是查看表的数量时,会显示没有这个表
当退出表后,再次连接后发现,表的内容消失了,也没有这个表
克隆表
LIKE方法:
第一步:复制表结构:
将cai表的结构复制到new表当中
mysql> create table new like cai;
第二步是将数据导入到新表中
将cai表中的数据导入到new表中
mysql> insert into new select * from cai;
●DCL语句设置用户权限(用户不存在时,则新建用户)
●Grant
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [ IDENTIFIED BY ‘密码’]
设置jerry用户从localhost主机,使用密码123456去登录
mysql> grant all on *.* to 'jerry'@'localhost' identified by '123456';
show grants for 用户名@来源地址
查看jerry用户的权限
mysql> show grants for 'jerry'@'localhost';
Revoke 权限列表 on 数据库名.表名 from 用户名@来源地址
删除jerry用户的权限
mysql> revoke all on *.* from 'jerry'@'localhost';
添加tom用户使用123456密码从主机为localhost登录数据库
mysql> grant all privileges on . to ‘tom’@‘localhost’ identified by ‘123456’;
假如这时忘记密码,想免密登录的方法:
1.修改/etc/my.cnf的配置文件,在[mysqld]底行加入
skip-grant-tables ##跳过表的加载
这时用tom身份去登陆,不需要输入密码,直接回车就可以了,root用户去登录也是不需要密码的
这边修改root用户登录的密码为123456
Authentication_string:保存密码字段
mysql> update mysql.user set authentication_string=password('123456') where user='root';
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> flush privileges; ##刷新数据库
Query OK, 0 rows affected (0.00 sec)