网站开发的重难点,通信建设资质管理信息系统网站,哈尔滨建设集团,WordPress老文章提示一.MySQL数据库基本操作知识#xff1a;
1.SQL语句#xff1a;
关系型数据库#xff0c;都是使用SQL语句来管理数据库中的数据。
SQL#xff0c;即结构化查询语言(Structured Query Language) 。
SQL语句用于维护管理数据库#xff0c;包括数据查询、数据更新、访问控…一.MySQL数据库基本操作知识
1.SQL语句
关系型数据库都是使用SQL语句来管理数据库中的数据。
SQL即结构化查询语言(Structured Query Language) 。
SQL语句用于维护管理数据库包括数据查询、数据更新、访问控制、对象管理等功能。
2.SQL分类
数据库database
表table行row 列column
索引index
视图view
存储过程procedure
存储函数function
触发器trigger
事件调度器event scheduler任务计划
用户user
权限privilege
2.SQL语言规范 在数据库系统中SQL 语句不区分大小写建议用大写 SQL语句可单行或多行书写默认以 ; 结尾 关键词不能跨多行或简写 用空格和TAB 缩进来提高语句的可读性 子句通常位于独立行便于编辑提高可读性
3.数据库对象和命名
数据库的组件(对象)
数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等
命名规则
必须以字母开头后续可以包括字母,数字和三个特殊字符# _ $
不要使用MySQL的保留字,如tabble select show databases
4.SQL语句分类
SQL语句用于维护管理数据库包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语句分类
语句代表的意思DDL数据定义语言用于创建数据库对象如库、表、索引等DML数据操纵语言用于对表中的数据进行管理DQL数据查询语言用于从数据表中查找符合条件的数据记录DCL数据控制语言用于设置或者更改数据库用户或角色权限
5.数据类型 5.1 常用数据类型
类型说明int 整型用于定义整数类型的数据fload 单精度浮点4字节32位准确表示到小数点后六位double 双精度浮点8字节64位char 固定长度的字符类型用于定义字符类型数据。varchar可变长度的字符类型text 文本image图片decimal(5,2)5个有效长度数字小数点后面有2位。指定长度数组
char
char的长度是不可变。char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度低版本会被截取高版本会报错。
varchar
varchar长度是可变的默认会加一个隐藏的结束符因此结束符会多算一个字节。
5.2数据类型参考
选择正确的数据类型对于获得高性能至关重要三大原则 更小的通常更好尽量使用可正确存储数据的最小数据类型 简单就好简单数据类型的操作通常需要更少的CPU周期 尽量避免NULL包含为NULL的列对MySQL更难优化 二.管理MySQL数据库
1.查看数据库结构
1.1 查看当前服务器中的数据库 show databases; #大小写不区分分号“;”表示结束1.2 查看数据库中包含的表
方法一在库中查看表
use mysql; #use 数据库名
show tables; #查看表法二 在库外查看表
show tables from mysql; #show tables from 数据库名
1.3 查看表的结构字段
use 数据库名;
describe [数据库名.]表名;
可缩写成desc 表名;
2.创建、删除数据库和表
2.1创建新的数据库create database #建立数据库
create database 数据库名;#建立数据库并指定字符集utf8mb4
create database 数据库名 charsetutf8mb4;
后文有详细操作及其演示
2.2删除指定的数据库(drop database) drop database 数据库名;
查看
2.3创建新的表 create table
use 数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值NULL一个表只能有一个主键。例如
use zhuzi;
create table students (id smallint unsigned primary key auto_increment, name varchar(10), age tinyint unsigned,gender enum(M,F) default M );#unsigned取消负数
primary key主键
auto_increment 自增长
enum(M,F)多选
default M默认值为 M
decimal(3,2)小数点后两位
2.4 删除指定的数据表(drop table) 方法一库内删除
use 数据库名
drop table 数据表名;方法二库外删除
#如不用USE进入库中则需加上数据库名
drop table 数据库名.数据表名;
3.管理表中的数据记录:
3.1向数据表中插入新的数据记录insert into insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);例如
insert into students(id,name,age,passwd) values(2,lisi,20,112233 );
insert into students(id,name,age,passwd) values(2,jiami,22,PASSWORD(123456));
#PASSWORD(112233)查询数据记录时密码字串以加密形式显示若不使用PASSWORD()查询时以明文显示
select * from students;提前新建数据表注意长度设置
use mysql;
create table students (id smallint unsigned primary key auto_increment, name varchar(10),age tinyint unsigned, passwd varchar(48));
3.2 查询数据表内数据记录select: select 字段名1,字段名2[,...] from 表名 [where 条件表达式];基本操作
1. #查询全部数据
select * from 数据表名;
例如
select * from students;2. #查询指定数据
例如
select id,name from students where id2;
3.3 修改、更新数据表中的数据记录update update 表名 set 字段名1字段值1[,字段名2字段值2] [where 条件表达式];例如
update students set age19 where id4;
update students set age20,passwd111111 where id2; #同时修改age和passwd
3.4 在数据表中删除指定的数据记录delete from delete from 表名 [where 条件表达式];例如
delete from students where id2;注意id并不会顶上去 4.修改表名和表结构alter table
4.1修改表名rename alter table 旧表名 rename 新表名;例如
alter table students rename xuesheng;
4.2 扩展表结构增加字段add alter table 表名 add 字段;例如
alter table xuesheng add address varchar(50) default wait get;
#default wait get表示此字段设置默认值 wait get可与 NOT NULL 配合使用 4.3 修改字段列名添加唯一键change alter table 表名 change 旧列名 新列名 数据类型 [unique key];例如
alter table xuesheng change name user_name char(30) unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。
验证
insert into xuesheng values(6,lili,23,234567,NANKING);
失败因为设置了唯一键lili不能重复改成lulu即可
insert into xuesheng values(6,lulu,23,234567,NANKING); 4.4删除字段drop alter table 表名 drop 字段名;例如
#删除表中passwd字段
alter table xuesheng drop passwd; 4.5复制表结构 create table 新表名 like 旧表名;
#通过LIKE方法复制旧表的结构生成新表insert into 新表名 (select * from 旧表名);
#再将旧表数据导入新表 方式二复制表 create table 新表名 (select * from 旧表名); 区别
第一种 like 的 迁移表 表的结构、属性、约束、数据都有
第二种 备份数据 表的复制内容数据
4.6临时表的创建 CREATE TEMPORARY TABLE 表名(字段1 数据类型,字段2 数据类型[, ...] [, PRIMARY KEY (主键名)]); 创建方式与创建表完全一致最大的区别是临时表只在当前的数据库连接生效当数据库连接断开或重新连接终端时该临时表均失效无法查看但可以查询到。 4.7 清除表的两种方式比较
方式一delete清空 delete from 表名; 方式二truncate清空 truncate table 表名; 两者区别
1delete 清空属于按照行清空一行一行进行效率低速度慢对于表数据较多的情况 truncate 相当于删除表数据保留表结构重新创建一个与原表结构相同的表
2当数据表中有自增型约束字段时delete 清除表数据后在插入数据时自增字段的数值会接着被删除表数据的最后一个自增数计数。eg被删除表数据最后一行id自增为10再创建时该id从11开始。truncate 清空后自增型字段会从1开始计数。
三种删除方式的区别
drop
属于DDL不可回滚无法恢复)不可带where表内容和结构删除删除速度快
truncate
属于DDL不可回滚不可带where表内容删除删除速度快
delete
属于DML可回滚(可恢复)可带where表结构在表内容要看where执行的情况删除速度慢需要逐行删除
总结 不再需要一张表的时候用drop 想删除部分数据行时候用delete并且带上where子句保留表而删除所有数据的时候用 truncate 速度drop truncate delete 安全性delete 最好 5. mysql 中常见的约束
主键约束primary key PK
主键具有唯一性不可重复性不可为空的特点。一般用于删除查询时条件语句的条件。主键在一张表中只能有一个
自增长约束auto_increment
该约束针对于整数类型的字段当插入该字段数据为空时系统会根据上一个数自动加1
非空约束not null
该约束到字段后该字段中的数据插入不能为空
唯一性约束unique
该约束添加后该字段的数据每行均为唯一的不可重复。唯一性约束可以在一张表中有多个
默认值约束default
默认值约束为该字段设置初始值如果没有为该字段插入数据就为初始值
零填充约束zerofill
零填充针对整数型的字段例如int默认为11位除了填写的数字以外其他用零填充
外键约束foreign keyFK
外键约束至少将两张表进行关联。我们将这两张表分为主表和从表主表的主键作为从表的外键。增加数据时先进行主表操作如果增加的数据外键值在主表中没有就要先在主表中添加。
若进行删除操作就要先进行从表操作只要将从表有关主表主键值全部清除后才能清除该主表的主键值
二. 数据库用户管理
1. 登录用户的管理
1.1 登录用户的创建
明文密码创建用户格式
CREATE USER 用户名来源地址 [IDENTIFIED BY [PASSWORD] 密码];#解释
用户名指定将创建的用户名.
来源地址指定新创建的用户可在哪些主机上登录可使用IP地址、网段、主机名的形式本地用户可用localhost允许任意主机登录可用通配符%
密码若使用明文密码直接输入密码插入到数据库时由Mysql自动加密
若使用加密密码需要先使用SELECT PASSWORD(密码)获取密文再在语句中添PASSWORD 密文
若省略“IDENTIFIED BY部分则用户的密码将为空(不建议使用) 加密密码创建用户 SELECT PASSWORD(密码); #先获取加密的密码CREATE USER lxc2localhost IDENTIFIED BY PASSWORD 加密的密码; 1.2 查看用户密码的信息 用户信息存放在 mysql 数据库下的 user 表MySQL 服务下存在一个系统自带的 mysql 数据库。 1.3 查看用户信息创建后的用户保存在mysql数据库的user表里
use mysql;select user,authentication_string,Host from user; 1.3 登录用户用户名的更改
重命名指定
rename user lxclocahost to lxc1localhost 1.4 修改用户密码 set password password(123456); 1.5 删除登录用户 1.6 修改其他用户密码
set password for gglocalhost password(123456);普通用户只有修改自身密码的权限
root用户是超级管理员它不仅可以修改自身密码还能修改其他用户的密码。 ‘ 1.7 忘记root密码的解决方法
该操作必须是在数据库本机且为root用户才可进行
修改 /etc/my.cnf 配置文件免密登录mysql 重启数据库服务无密码登录之后修改数据库用户中的 root 密码 update mysql.user SET AUTHENTICATION_STRING PASSWORD(123) where userroot
#用于更新MySQL数据库系统表mysql.user中的用户root的密码。AUTHENTICATION_STRING是MySQL 5.7.0以后版本中用于存储密码的字段名 用新密码登录 重新加载 2. 管理登录用户的权限
2.2 查看用户已有权限的操作
show grants;
#查看当前用户自己的权限 show grants for gglocalhost;#查看其他用户的权限 2.3 授权操作
[NO_AUTO_CREATE_USER] 即在grant语句中禁止创建空密码的账户使用grant语法创建用户必须带上 “identified by”关键字设置账户密码否则就被认为是非法的创建语句。
2.3.1 对存在的用户进行授权
GRANT 权限列表 ON 数据库名.表名 TO 用户名来源地址 [IDENTIFIED BY 密码];
权限列表 用于列出授权使用的各种数据库操作以逗号进行分隔如select, insert,update。 使用all表示所有权限实际上部分权限仍无法使用只包括大部分权限可授权执行任何操作。
数据库名.表名 用于指定授权操作的数据库和表的名称其中可以使用通配符*。 例如使用mysql.* 表示授权操作的对象为mysql数据库中的所有表。 用户名来源地址 用于指定用户名称和允许访问的客户机地址即谁能连接、能从哪里连接。 来源地址可以是域名、IP地址还可以使用“%”通配符表示某个区域或网段内的所有地址。
IDENTIFIED BY 用于设置用户连接数据库时所使用的密码字符串。在新建用户时若省略IDENTIFIED BY部分则用户的密码将为空。
grant select,insert on study.class to lxclocalhost;show grants for lxclocalhost;
2.3.2 对不存在的用户进行创建并授权 GRANT ALL PRIVILEGES ON *.* TO 用户名来源地址 IDENTIFIED BY 密码;
2.4 撤销用户权限 revoke 权限列表/ALL on 库名.表名 from 用户名来源地址;
2.5 用户的远程登录
用户授权 grant all privileges on *.* to cnm192.168.91.% identified by 123;三.总结
创建及删除数据库和表 create database 库名; create table 表名(字段1 数据类型 [属性], 字段2 .....); DROP TABLE [数据库名.]表名; DROP DATABASE 数据库名; insert into 表名 values (所有字段的值); 表数据的增删改查 insert into 表名 (指定字段名称) values(字段的值); delete from 表名 [where ...]; update 表名 set 字段值[, 字段2....] [where ...]; select 字段1[,字段2....] from 表名 [where ...]; select * from 表名;