重庆网站推广,网站开发免费视频播放器,行者seo无敌,网站开发实训总结致谢目录 一.SQL语句简介
1.1SQL语言
1.2SQL语句分类
1.3SQL分类
1.4SQL 语言规范
二.数据库基本操作
2.1查看数据库中的库信息
2.2查看数据库中的表信息
数据库内查看
数据库外查看
2.3显示数据库的结构#xff08;字段#xff09;
编辑
2.4 字段属性
2.5常见的数…目录 一.SQL语句简介
1.1SQL语言
1.2SQL语句分类
1.3SQL分类
1.4SQL 语言规范
二.数据库基本操作
2.1查看数据库中的库信息
2.2查看数据库中的表信息
数据库内查看
数据库外查看
2.3显示数据库的结构字段
编辑
2.4 字段属性
2.5常见的数据类型
2.6 char 和 varchar 的区别 三.数据库管理(增删改查
3.1数据库的创建
3.2表的创建
3.3插入数据 3.4查找数据库表中的数据
3.5修改表中的数据
3.6删除表中的数据 危险删除一定要加条件不然会删除整个表 3.7删除指定的表
3.8删除指定的库
四. 表结构的管理
4.1 修改表名
4.2 扩展表结构增加字段 4.3 修改字段名添加唯一键 change
编辑 4.4 删除字段 drop
4.5 克隆表
方式一like方法
方式二Show create table方法
区别
4.6临时表 4.7清除表的三种方式
delete清空
truncate清空
drop清空
区别
五.数据库用户管理
5.1. 登录用户的管理
5.2查看用户密码的信息
5.3 登录用户用户名的更改 重命名
5.4修改用户密码
编辑 5.5删除登录用户
5.6 修改其他用户密码
5.7 忘记root密码的解决方法
修改 /etc/my.cnf 配置文件免密登录mysql
重启数据库服务
免密登录之后修改数据库用户中的 root 密码
退出并登录测试新密码
编辑撤销添加的免密码认证设置重启数据库服务
编辑 六.数据库用户权限管理
6.1常见的用户权限
6.2查看用户已有权限的操作
6.3 授权操作
对存在的用户进行授权 对不存在的用户进行创建并授权 撤销用户权限
6.4用户远程登录
用户授权
使用Navicat图形化工具远程连接
七.总结
查看数据库、数据表和表结构的操作
创建库和表的操作及删除库和表的操作 数据表的增、删、改、查等操作
数据库表的清空表、临时表和克隆表操作
清空表
临时表
克隆表
数据库的用户授权相关操作
数据库用户管理
数据库授权 一.SQL语句简介 1.1SQL语言
Structured Query Language的缩写即结构化查询语言关系型数据库的标准语言用于维护管理数据库包括数据查询数据更新访问控制对象管理等功能
1.2SQL语句分类
DDL数据定义语言 用于创建数据库对象如库、表、索引等。 例如CREATEDROPALTER 等 DML:数据操纵语言 用于对表中的数据进行管理。 例如 SELECT、UPDATE、INSERT、DELETE 等。 DQL:数据查询语言 于从数据表中查找符合条件的数据记录。 例如 SELECT DCL:数据控制语言 用于设置或者更改数据库用户或角色权限 例如 GRANTREVOKE 1.3SQL分类 数据库database 表table行row 列column 索引index 视图view 存储过程procedure 存储函数function 触发器trigger 事件调度器event scheduler任务计划 用户user 权限privilege
1.4SQL 语言规范 在数据库系统中SQL 语句不区分大小写建议用大写 SQL语句可单行或多行书写默认以 ; 结尾 关键词不能跨多行或简写 用空格和TAB 缩进来提高语句的可读性 子句通常位于独立行便于编辑提高可读性
二.数据库基本操作
2.1查看数据库中的库信息
show databases 2.2查看数据库中的表信息
数据库内查看
use 数据库名
show tables 数据库外查看
show tables from 数据库名 库外查看要指定具体的数据库名 2.3显示数据库的结构字段
describe [数据库名]表名、可缩写成 desc [数据库名.]表名; 由于屏幕占比问题与字段数量问题会导致有些表结构的效果呈现并不好。默认查看为横向的查看 desc 表名\G; 2.4 字段属性 Field:字段名称 type:数据类型 Null :是否允许为空 Key :主键 Type:数据类型 Null :是否允许为空 key :主键 Default :默认值 Extra :扩展属性例如:标志符列标识了种子增量/步长1 2 id1 3 5 7 2.5常见的数据类型 类型说明int整型用于定义整数类型的数据fload单精度浮点4字节32位准确表示到小数点后六位double双精度浮点8字节64位char固定长度的字符类型用于定义字符类型数据。varchar可变长度的字符类型text文本image图片decimal(5,2)5个有效长度数字小数点后面有2位。指定长度数组
2.6 char 和 varchar 的区别
值CHAR(4)存储需求VARCHAR(4)存储需求 4个字节1个字节abab 4个字节ab 3个字节abcdabcd4个字节abcd5个字节abcdefghabcd4个字节abcd5个字节 char char的长度是不可变。char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度低版本会被截取高版本会报错。 varchar varchar长度是可变的默认会加一个隐藏的结束符因此结束符会多算一个字节。 对比 varchar比char节省磁盘空间。但varchar类型的数据读写速度比char慢因为char是连续的磁盘空间而varchar在多次增删改查中会产生一些磁盘空间碎片 三.数据库管理(增删改查
3.1数据库的创建
create database dashuju; 3.2表的创建
#格式CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]);create table class (id int not null,name char(15) not null,score decimal(4,2),passwd char(45) default,primary key (id));#解释
id 字段这是一个整数类型int字段标记为not null表示该字段不允许存储NULL值。同时它被指定为主键primary key这意味着每一行的id字段值必须是唯一的通常用于唯一标识表中的每一条记录。name 字段这是一个固定长度字符类型char(15)字段同样不允许存储NULL值。这意味着每个name字段的值必须是一个最多包含15个字符的字符串若实际输入的字符数少于15个剩余部分会被填充为空格以达到15个字符的长度。score 字段这是一个十进制类型decimal(4,2)字段用于存储带小数点的分数。(4,2)表示该字段可以存储最大共4位数字其中包含2位小数例如0.00到999.99之间的数值。passwd 字段这是一个固定长度字符类型char(45)字段用于存储密码信息默认值default被设置为空字符串。这意味着如果没有为passwd字段提供值它将自动填充一个空字符串。当这条SQL语句被执行后数据库中将创建一个名为class的表包含id、name、score和passwd这四个字段。 主键共同点字段的值都是唯一的不允许有重复值。 3.3插入数据
方式一指定字段插入数据
#为指定字段插入值INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值字段2的值...);
#注意字段的属性not null则必须为该字段插入值
insert into class (id,name,score,passwd) values(1,张三,90,PASSWORD(123456)); 大写的PASSWORD表明用密文表示 如果不加 PASSWORD直接按照字段顺序插入
为所有字段插入值
insert into 表名 values (所有字段的值);
#每个字段值用逗号相隔 这时密码由明文表示 3.4查找数据库表中的数据 SELECT * FROM 表名; #查询表中所有记录#按条件查找数据记录且只显示指定字段的值SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];#mysql的分页语句select * from 表名 limit 2; select * from 表名 limit 2,3;
#显示第2行后的前3行即显示第3~5行 显示class表中的所有信息 显示表中namelisi的信息 附带条件 显示表中id2的信息 附带条件 显示class表中第一行的信息 显示ky35表中第一行后的前两行即显示2和3行 3.5修改表中的数据
UPDATE 表名 SET 字段名1字段值1[,字段名2字段值2] [WHERE 条件表达式]; #如若不指定条件 那么修改更新的数据信息就是数据表中所有信息 #将数据表ky35中所有score字段都修改为90 #where代表条件判断 更新ky35数据表中的score段 id为2的用户信息的score字段修改为92 3.6删除表中的数据 DELETE FROM 表名 [WHERE 条件表达式]; #删除一定要加条件不然会删除整个表 危险删除一定要加条件不然会删除整个表 指定条件删除ky35表中id2的数据 不加条件就是删除整个表切勿删库 3.7删除指定的表
DROP TABLE 数据库名.表名;
或
USE 库名;
DROP TABLE 表名; 删除了大数据库中的class表 3.8删除指定的库
DROP DATABASE 数据库名; 删除了大数据库 四. 表结构的管理
4.1 修改表名 ALTER TABLE 旧表名 RENAME 新表名 将原先的表ky35改名为ky36 4.2 扩展表结构增加字段 ALTER TABLE 表名 ADD 字段名 数据类型; #修改数据表ky36内容 新增Phone的数据列 字段字节长度为11位 默认值为15252526801 alter table ky36 add Phone varchar(11) default 15252526801后还可以跟约束 例如not null为非空 4.3 修改字段名添加唯一键 change ALTER TABLE 表名 CHANGE 旧字段名 新字段名 [数据类型] [约束]; 修改phone为num并更换数据类型和添加约束 4.4 删除字段 drop ALTER TABLE 表名 DROP 字段名; 删除指定字段num 4.5 克隆表
方式一like方法
create table 新表名 like 旧表名;
#通过LIKE方法复制旧表的结构生成新表insert into 新表名 (select * from 旧表名);
#再将旧表数据导入新表 将ky36复制到ky37 这时我们可以查看到ky37和ky36的结构一样 将源表ky36的数据导入到ky37中 方式二Show create table方法 create table 新表名 (select * from 旧表名); 和方法一对比方法二并不能保持原有表的结构 区别 第一种 迁移表 表的结构、属性、约束、数据都有 第二种 备份数据 表的复制内容数据 如果想将数据迁移到其他地方使用Like备份方法 如果想只备份数据的内容可以使用第二种方法。 4.6临时表
临时建立的表用于保存一些临时数据不会长期存在下次重新进入数据库即不存在
如果在退出连接之前也可以可执行增删改查等操作比如使用DROP TABLE语句手动直接删除临时表。
CREATE TEMPORARY TABLE 表名(字段1 数据类型,字段2 数据类型[, ...] [, PRIMARY KEY (主键名)]); 临时表创建和正常表格一样 create temporary table class1 (id int(6) zerofill primary key auto_increment,name varchar(20) not null,cardid int(18) not null unique key,hobby varchar(30),haoma int(11));#解释
这条SQL语句用于创建一个临时表class1临时表只在当前会话期间存在会话结束后自动删除。临时表的具体结构如下id 字段整数类型int设置了宽度为6且自动填充零zerofill这意味着即使实际值小于6位数也会在其前面填充零以使总长度达到6位。同时该字段被定义为主键primary key和自动递增auto_increment这意味着每当插入新行时id字段的值会自动加1且每一行的id值在整个临时表中必须是唯一的。name 字段变长字符串类型varchar(20)不允许存储NULL值not null最多可存储20个字符长度的字符串。cardid 字段整数类型int宽度为18也不允许存储NULL值。该字段还被定义为唯一键unique key即在cardid列中的所有值必须独一无二不可重复。hobby 字段变长字符串类型varchar(30)可以存储最多30个字符长度的兴趣爱好描述允许存储NULL值。haoma 字段整数类型int宽度为11可以存储不超过11位的整数电话号码允许存储NULL值。执行这条SQL语句后将在当前数据库会话中创建一个临时表class1具备上述五个字段和相应的约束条件。 建好临时表class1却看不到 可以查询出临时表class1 插入数据 退出mysql后重新登陆 这时再查询时会发现临时表已经被释放了因为临时表是存在内存中的一旦推出就会被释放 4.7清除表的三种方式
delete清空 delete from 表名;
truncate清空 truncate table 表名;
drop清空
drop table 表名;
区别
delete 清空属于按照行清空一行一行进行效率低速度慢对于表数据较多的情况 truncate 相当于删除表数据保留表结构重新创建一个与原表结构相同的表
当数据表中有自增型约束字段时delete 清除表数据后在插入数据时自增字段的数值会接着被删除表数据的最后一个自增数计数。eg被删除表数据最后一行id自增为10再创建时该id从11开始。truncate 清空后自增型字段会从1开始计数。 当不再需要一张表的时候使用Drop想保留部分数据的时候使用Delete并且带上Where语句保留表而删除所有数据的时候用Truncate 五.数据库用户管理
5.1. 登录用户的管理
明文密码创建用户格式 CREATE USER 用户名来源地址 [IDENTIFIED BY [PASSWORD] 密码]; 来源地址可以指定为localhost本机也可以指定%代表任意地址或者指定为192.168.241.%代表192.168.241网段的主机都可以登录IDENTIFIED BY不能省略如果省略用户密码将为空不建议使用密码若使用明文密码直接输入密码即可键入到数据库中数据库会自动加密若使用加密密码需要先使用Select PASSWORD密码命令来获取加密密码再将获取到的加密密码添加到PASSWORD中 新建一个用户名为zk地址为本机密码为123的用户 加密密码创建用户 SELECT PASSWORD(密码); #先获取加密的密码CREATE USER zk1localhost IDENTIFIED BY PASSWORD 加密的密码; 查看用户信息创建后的用户保存在mysql数据库的user表里
use mysql;select user,authentication_string,Host from user; 5.2查看用户密码的信息
用户信息存放在 mysql 数据库下的 user 表MySQL 服务下存在一个系统自带的 mysql 数据库。 找到了我们创建的用户zk并且发现他的密码自动生成了密文 5.3 登录用户用户名的更改 重命名
rename user zklocahost to zk2localhost 5.4修改用户密码 set password password(123); 5.5删除登录用户
drop user zk2localhost; 5.6 修改其他用户密码
set password for zk1locahost password(123456);普通用户只有修改自身密码的权限 root用户是超级管理员它不仅可以修改自身密码还能修改其他用户的密码。 5.7 忘记root密码的解决方法 在数据库本机的root用户才可执行 修改 /etc/my.cnf 配置文件免密登录mysql 在服务端里面添加 使登录mysql不使用授权表添加到23行skip-grant-tables 重启数据库服务 免密登录之后修改数据库用户中的 root 密码 update mysql.user SET AUTHENTICATION_STRING PASSWORD(123) where userroot
#用于更新MySQL数据库系统表mysql.user中的用户root的密码。AUTHENTICATION_STRING是MySQL 5.7.0以后版本中用于存储密码的字段名 flush privileges; #刷新数据库配置退出并登录测试新密码
撤销添加的免密码认证设置重启数据库服务 加上#注释掉这一行 六.数据库用户权限管理
6.1常见的用户权限
权限 权限说明 权限级别CREATE 创建数据库、表或索引的权限 数据库、表或索引DROP 删除数据库或表的权限 数据库或表GRANT OPTION 赋予权限选项 数据库或表REFERENCES 引用权限 数据库或表ALTER 更改表的权限 数据表DELETE 删除表数据的权限 数据表INDEX 操作索引的权限 数据表INSERT 添加表数据的权限 数据表SELECT 查询表数据的权限 数据表UPDATE 更新表数据的权限 数据表CREATE VIEW 创建视图的权限 视图SHOW VIEW 查看视图的权限 视图ALTER ROUTINE 更改存储过程的权限 存储过程CREATE ROUTINE 创建存储过程的权限 存储过程EXECUTE 执行存储过程权限 存储过程FILE 服务器主机文件的访问权限 文件管理CREATE TEMPORARY TABLES 创建临时表的权限 服务器管理LOCK TABLES 锁表的权限 服务器管理CREATE USER 创建用户的权限 服务器管理RELOAD 执行 flush privileges, refresh, reload 等刷新命令的权限服务器管理PROCESS 查看进程的权限 服务器管理REPLICATION CLIENT 查看主从服务器状态的权限 服务器管理REPLICATION SLAVE 主从复制的权限 服务器管理SHOW DATABASES 查看数据库的权限 服务器管理SHUTDOWN 关闭数据库的权限 服务器管理SUPER 超级权限 服务器管理ALL [PRIVILEGES] 所有权限USAGE 没有任何权限
6.2查看用户已有权限的操作
show grants;
#查看当前用户自己的权限 root用户拥有所有权限以及给别人授权的权限 show grants for zk1locahost;#查看其他用户的权限 只拥有登陆权限默认还拥有更改自己密码 6.3 授权操作
[NO_AUTO_CREATE_USER] 即在grant语句中禁止创建空密码的账户使用grant语法创建用户必须带上 “identified by”关键字设置账户密码否则就被认为是非法的创建语句。 对存在的用户进行授权
GRANT 权限列表 ON 数据库名.表名 TO 用户名来源地址 [IDENTIFIED BY 密码]; 权限列表 用于列出授权使用的各种数据库操作以逗号进行分隔如select, insert,update。 使用all表示所有权限实际上部分权限仍无法使用只包括大部分权限可授权执行任何操作。数据库名.表名 用于指定授权操作的数据库和表的名称其中可以使用通配符*。 例如使用mysql.* 表示授权操作的对象为mysql数据库中的所有表。 用户名来源地址 用于指定用户名称和允许访问的客户机地址即谁能连接、能从哪里连接。 来源地址可以是域名、IP地址还可以使用“%”通配符表示某个区域或网段内的所有地址。IDENTIFIED BY 用于设置用户连接数据库时所使用的密码字符串。在新建用户时若省略IDENTIFIED BY部分则用户的密码将为空。 grant select,insert on yunjisuan.ky35 to zk1locahost;show grants for zk1locahost; 赋予了用户zk1 查询ky35表和插入表数据的权限 对不存在的用户进行创建并授权 GRANT ALL PRIVILEGES ON *.* TO 用户名来源地址 IDENTIFIED BY 密码; 创建了用户zk2并赋予了他所有权限 撤销用户权限 revoke 权限列表/ALL on 库名.表名 from 用户名来源地址; *.*代表任意库的任意表 6.4用户远程登录
用户授权 grant all privileges on *.* to zk2192.168.209.% identified by 123;使用Navicat图形化工具远程连接 七.总结
查看数据库、数据表和表结构的操作
查看数据库show databases查看数据表show tables查看表结构describe tablename或desc tablename
创建库和表的操作及删除库和表的操作
创建库create database databasename创建表create table tablename删除库drop database databasename删除表drop table tablename 数据表的增、删、改、查等操作
数据表增Insert into tablename数据表改update tablename set 指定内容数据表删delete from tablename数据表查select*、where、limit、\G数据表结构名称改alter table tablename rename 新名称数据表扩展结构增alter table tablename add 扩展名数据表字段内容改alter table tablename change 原结构字段名称 新结构字段名称数据表字段内容删alter table tablename drop 指定结构字段
数据库表的清空表、临时表和克隆表操作
清空表
delete from tablenametruncate table tablenamedrop from tablename
临时表
create temporary tabletablename
克隆表
Like方法create table 新表 like旧表-------insert into 新表 select *from旧表Show create table方法create table 新表(select * from 旧表)
数据库的用户授权相关操作
数据库用户管理
新建用户create user 用户名localhost(或者指定IP) identified by 密码重命名rename user 旧用户名localhost(或者指定IP) to 新用户名localhost(或者指定IP)删除用户drop user 用户名localhost(或者指定IP)修改当前密码set password password密码修改其他用户密码set password for 用户名localhost password(新密码);修改密码update mysql.user set authentication_string password(abc123) where userroot修改密码flush privileges------set password for rootlocalhostpassword(123123)
数据库授权
授权grant 权限列表 ON 数据库名.表名 to 用户名来源地址 identified by 密码查看权限show grants 用户名来源地址撤销权限revoke 权限列表 on 数据库名.表名 from 用户名来源地址