文章目录
查看数据库结构
查看数据库信息:
show databases;
重要的数据都放在mysql当中;注意结尾必须以;结尾
查看数据库中的表信息
USE 数据库名 ##进入数据库;结尾要加“;”
show tables; 查看数据库中的表的信息
查看有几个用户:
select user from user;
显示数据表的结构(字段)
- Field:属性名称
type:属性类型
Null:属性是否为空
Key:主键
Default:默认规则
Extra:扩展属性
describe [数据库名.] 表名
SQL语句概述
SQL语言:
●Structured Query Language的缩写,即结构化查询语言
●关系型数据库的标准语言
●用于维护管理数据库
- 包括数据查询,数据更新,访问控制,对象管理等功能
SQL分类
- DDL:数据定义语言
- DML:数据操纵语言
- DQL:数据查询语言
- DCL:数据控制语言
创建数据库和表
●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:插入新数据
- UPDATE:更新原有数据
- DELETE:删除不需要的数据,删除数据的操作用delete
向数据表中插入新的数据记录
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的规则设置的是自增长
筛选
将超过80分以上的人筛选出来
mysql> select * from cai where score > 80; ##where做条件判断
将分数大于80的数据生成一个新的表,表的名字为score
mysql> create table score as select * from cai where score > 80;
as:将后面的显示的内容导入到新表中
修改,更新数据表中的数据记录
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;
不带where条件的语句表示删除表中的所有记录
mysql> delete from score; ##删除score表中的数据;但是表还在
●DQL是数据查询语句,只有select
●用于从数据表中查找符合条件的数据记录
●查询时可不指条件
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';
再次查看时发现jerry用户的权限没有了
免密登录数据库配置方法
添加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)