文章目录
一、查看数据库结构
1.1查看数据库信息
1.2查看数据库中的表信息
1.3显示数据表的结构(字段)
二、SQL语句概述
2.1SQL语言简介
●Structured Query Language的缩写,即结构化查询语言
●关系型数据库的标准语言
●用于维护管理数据库
包括数据查询、数据更新、访问控制、对象管理等功能
2.2SQL分类
●DDL:数据定义语言
●DML:数据操纵语言
●DQL:数据查询语言
●DCL:数据控制语言
2.3创建数据库和表
●DDL语句可用于创建数据库对象,如库、表、索引等
●使用DDL语句新建库、表示例
mysql> create database school; ##新建库school
mysql> use school;
Database changed
mysql> create table info (id int(3) not null primary key auto_increment,name varchar(10) not null,score decimal(5,2),address varchar(50) default ‘未知’); ##创建info表,括号内为字段定义
格式:
create table 表名(字段01名称 字段01类型 字段01约束,字段02名称 字段02类型 字段02约束,…)存储引擎,字符集
字段名称、类型、约束解释:
字段01名称:属性名称,自定义
字段01类型:int(4) 整型 代表0000-9999
double 浮点型
decimal(5,2)有效数字是5位,小数点后面保留2位 100.00;099.50
float 单精度浮点 4字节
char 字符
char (10)固定长度字符串,字符串要用单引号引起来
varchar(50)可变长度字符串
字段01约束:
非空约束:内容不允许为空 not null
主键约束:非空且唯一 标识 primary key(主键)
默认约束:假如没有填数据,默认预先设定的值填写 default ‘未知’
自增特性:id 1 2 3 4 auto_increment(自动增长)
存储引擎:myisam innodb
字符集:UTF-8
2.4删除数据库和表
●使用DDL语句删除库、表
删除指定的数据表
mysql> drop table bbs.info; ##bbs.info相当于绝对路径
Query OK, 0 rows affected (0.00 sec)
删除指定的数据库
mysql> drop database bbs;
Query OK, 0 rows affected (0.00 sec)
三、管理数据表中的数据
DML语句用于对表中的数据进行管理
包括的操作
insert:插入新数据
update:更新原有数据
delete:删除不需要的数据
注意:对数据的操作用DELETE,对库和表用drop
3.1向数据表中插入新的数据内容
完整格式:insert into info (字段1,字段2) values (字段1的值,字段2的值)
mysql> insert into info (id,name,score,address) values (1,‘zhangsan’,88,‘nanjing’);
mysql> insert into info values (2,‘lisi’,77,‘shanghai’); ##如果不加字段,默认是所有字段,每个字段都要写
mysql> insert into info (name,score,address) values (‘zhaosi’,78,‘suzhou’),(‘zhao’,78,default); ##不写id是因为id设置了自动增长
mysql> select * from info;
±—±---------±------±---------+
| id | name | score | address |
±—±---------±------±---------+
| 1 | zhangsan | 88.00 | nanjing |
| 2 | lisi | 77.00 | shanghai |
| 3 | zhaosi | 78.00 | suzhou |
| 4 | zhaosi | 78.00 | suzhou |
| 5 | zhao | 78.00 | 未知 |
±—±---------±------±---------+
mysql> select * from info where score > 80; ##score大于80的显示出来
mysql> create table tmp as select * from info where score > 80;
##将source大于80的显示内容导入到新创建的表tmp中
3.2修改、更新数据表中的数据记录
格式:update 表名 set 字段名1=值1,字段名2=值2 where 条件表达式
例如:
mysql> update info set score=99,address=‘new’ where name=‘lisi’;
忘记root的mysql登录密码时,更改密码步骤:
1.vim /etc/my.cnf 后重启mysqld
[mysqld]
…省略内容
server-id=1
skip-grant-tables ##加入参数:跳过权限表的加载
2.登录mysql,这时无需输入密码,直接回车进入数据库,查看user库
mysql> select * from mysql.user;
3.通过直接修改数据库中user表的方式实现修改root用户的登录密码
mysql> update mysql.user set authentication_string=password(‘123456’) where user=‘root’;
4.把跳过权限表的加载的删掉,重启mysqld
3.3在数据库中删除指定的数据记录
格式:delete from 表名 where 条件表达式(不带where代表删除表中所有记录)
mysql> delete from info where score >=90;
mysql> delete from info;
3.4数据库高级操作
●清空表
delete from info;
truncate table info;
truncate清空表,表还在;drop是删除表中所有记录。
truncate和delete是两者的新值初始id不同。
●临时表
临时建立的表,用于保存一些临时数据,不会长期存在
mysql> create temporary table temp_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;
innodb 支持事务;写在括号外面的是对整张表的设定。
show tables;看不到临时表
●克隆表
like方法:从info表完整复制结构生成test表,再导入数据
mysql> create table test like info;
mysql> insert into test select * from info;
新建一个tmp表,读取test表中的所有内容放入tmp表
mysql> create table tmp as select * from test;
3.5数据库用户授权
●DCL语句设置用户权限(用户不存在时,则新建用户)
#设置登录密码为abc123的lisi用户,可以从任意终端登录,对所有库和所有表有全部权限
mysql> grant all on . to ‘lisi’@’%’ identified by ‘abc123’;
#设置登录密码为abc123的tom用户,可以从本地终端登录,对mysql库中的user表有select权限
mysql> grant select on mysql.user to ‘tom’@‘localhost’ identified by ‘abc123’;
●查看用户的权限
mysql> show grants; ##查看当前用户的权限
mysql> show grants for tom@localhost; ##查看从本地登录的tom用户的权限
mysql> select user from mysql.user; ##查看当前系统中的用户
●撤销用户的权限
mysql> revoke select on mysql.user from ‘tom’@‘localhost’;
grant:当用户已存在时,直接提权。
当用户不存在时,先创建用户,再提权。
revoke:只撤销权限,不删除用户