中国建设银行上海分行信息网站,网站推广的网站作用,莱芜高新区,福州的网站建设目录
概念
数据完整性
主键
数据类型
精确数字
近似数字
字符串
二进制字符串
日期和时间
MySQL常用语句示例
SQL结构化查询语言
显示所有数据库
显示所有表
查看指定表的结构
查询指定表的所有列
创建一个数据库
创建表和列
插入数据记录
查询数据记录
修…目录
概念
数据完整性
主键
数据类型
精确数字
近似数字
字符串
二进制字符串
日期和时间
MySQL常用语句示例
SQL结构化查询语言
显示所有数据库
显示所有表
查看指定表的结构
查询指定表的所有列
创建一个数据库
创建表和列
插入数据记录
查询数据记录
修改表中数据
在mysql内修改root用户登录mysql的密码
在终端修改mysql的root用户登录密码
克隆
删除
delete
truncate
临时表
授权
授权用户
授权远程用户
查看指定账户的授权
撤销指定账户授权
Windows通过Navicat连接MySQL服务器 概念
数据完整性
数据的正确性
数据完整性 每一行必须是唯一的实体每个实体必须唯一域完整性 检查每一列是否有效引用完整性 确保所有表中数据的一致性不允许引用不存在的值用户定义的完整性 指定特定的业务规则
主键
用于唯一标识表中的行数据由一个或多个字段组成具有唯一性不允许取空值NULL一个表只能有一个主键
数据类型
精确数字 近似数字 字符串 二进制字符串 日期和时间 MySQL常用语句示例
结构化查询语言Structured Query Language简称SQL是一种特殊目的的编程语言是一种数据库查询和程序设计语言用于存取数据以及查询、更新和管理关系数据库系统。
SQL结构化查询语言
DDL数据定义语言 createdrop针对数据库对象alterDML数据操纵语言 insertupdatedelete针对表中的记录DQL数据查询语言 selectshowdescribeDCL数据控制语言 grantrevokecommit事务rollback回滚 首先登录数据库以便进行下一步实验
[rootlocalhost ~]# mysql -uroot -p
Enter password: 输入密码
显示所有数据库
在登录进数据库后可以使用show databases;来列出所有数据库
mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| sys |
--------------------
4 rows in set (0.00 sec)
information_schema数据库本身所需的信息库、表信息mysql程序运行时所需要的数据主要是用户认证的信息
显示所有表
需要在数据库内输入show tables才能生效
进入mysql数据库
mysql use mysql # 不用加分号结尾
mysql show tables;
查看指定表的结构
查看user表的结构
mysql describe user;
----------------------------------------------------------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
----------------------------------------------------------------------------------------------------
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum(N,Y) | NO | | N |
查询指定表的所有列
这里使用select语句查询user表的所有列\G表示以垂直方式显示代替默认的水平方式水平方式输出会看起来很杂乱
mysql select * from user\G;
创建一个数据库
create 类型 名称
mysql create database auth;
Query OK, 1 row affected (0.00 sec)
mysql use auth; # 更改当前操作的数据库为auth
Database changed创建表和列
使用create语句创建名为users表并添加两列数据
DEFAULT 该列默认为空这里表示密码默认为空
创建完后可以使用show tables;查看该表
mysql create table users (user_name char(16) not null, user_passwd char(48) default , primary key(user_name));
Query OK, 0 rows affected (0.00 sec)
mysql show tables;
----------------
| Tables_in_auth |
----------------
| users |
----------------插入数据记录
在users表的指定列中插入信息
insert语法insert into 表名 (列名1, 列名2) values (值1, 值2);
mysqluse auth;
mysqlinsert into users(user_name, user_passwd) values (tom, 123456)
mysqlinsert into users(user_name, user_passwd) values (jerry, 654321);
查询数据记录
查询users表中所有列以及添加where过滤指定列的所有信息
mysql select * from auth.users;
------------------------
| user_name | user_passwd |
------------------------
| jerry | 654321 |
| tom | 123456 |
------------------------mysql select user_name, user_passwd from auth.users where user_nametom;
------------------------
| user_name | user_passwd |
------------------------
| tom | 123456 |
------------------------修改表中数据
修改auth数据库中users表中的user_name为tom的行中的user_passwd列的值为000并且使用加密算法加密该值
然后使用select语句查询可以看到user_passwd列的值被加密了
mysql update auth.users set user_passwdpassword(000) where user_nametom;
mysql select * from auth.users;
------------------------------------------------------
| user_name | user_passwd |
------------------------------------------------------
| jerry | 654321 |
| tom | *B66FEB4CF5216D971C066EB920EC03B27A5A3F40 |
------------------------------------------------------在mysql内修改root用户登录mysql的密码
更新mysql库下user表中的authentication_string列调用password对密码进行加密where条件为root用户
使用flush privileges;命令重新加载授权表使当前对授权的更改生效而无需重新启动MySQL服务。
mysql update mysql.user set authentication_stringpassword(123456) where userroot;
mysql flush privileges;
[rootlocalhost ~]# mysql -uroot -p
Enter password: 输入刚才设置的密码
mysql
成功登录
在终端修改mysql的root用户登录密码
[rootlocalhost ~]# mysqladmin -uroot -p123456 password pwd123
[rootlocalhost data]# mysql -uroot -p
Enter password: 输入密码
mysql 克隆
利用users表克隆一个名为user01的表但是克隆后的新表是没有内容的
mysql create table user01 like auth.users;mysql show tables;
----------------
| Tables_in_auth |
----------------
| user01 |
| users |
----------------
将users表的内容全部插入到user01新表中
mysql insert into user01 select * from auth.users;mysql select * from user01;
------------------------
| user_name | user_passwd |
------------------------
| tom | 123456 |
------------------------ 删除
delete
使用delete from 表名 where 列名来删除指定行
如果不在结尾加where是删除指定的表。可以自由搭配
mysql delete from auth.users where user_namejerry;mysql select * from auth.users;
------------------------------------------------------
| user_name | user_passwd |
------------------------------------------------------
| tom | *B66FEB4CF5216D971C066EB920EC03B27A5A3F40 |
------------------------------------------------------truncate
mysql truncate table user01;mysql select * from user01;
Empty set (0.00 sec)
truncate table 表名; 功能truncate table用于快速且高效地删除表中的所有数据但保留表的结构即表定义。 操作它是一个DDL数据定义语言命令不是一个事务并且不能通过回滚来恢复删除的数据。速度由于不记录删除的每一行数据而是直接释放数据页因此truncate table操作通常比delete from更快。delete from 表名; 功能delete from用于从表中删除指定的行数据。 操作它是一个DML数据操作语言命令它可以作为一个事务来执行并且可以通过事务回滚来撤销删除操作。记录delete from操作会将每一行删除操作的记录写入事务日志并且在执行时会触发触发器如果有的话。延续id的区别 如果使用delete清除一个表后添加新内容的id会延续之前的id。而使用truncate清除一个表后添加新内容的id会还原从1开始。 临时表
临时表用于临时存放一些数据如果退出mysql管理系统再进来就找不到在临时表中存储的数据了
mysql create temporary table test(id int(10) not null auto_increment, name char(116) character set utf8 collate utf8_bin not null primary key (id));
mysql insert into test (name) values (tom);
mysql select * from test;
----------
| id | name |
----------
| 1 | tom |
----------退出后再进入。找不到test临时表
mysql quit[rootlocalhost data]# mysql -uroot -p
Enter password: 输入密码mysql select * from test;
ERROR 1046 (3D000): No database selected 授权
授权是一组权限的集合比如授权select命令给某个用户这里select就是一个角色只是这个角色的名称叫select
权限是单个的但是授权这个操作是将一组权限的集合分配给用户
比如使用 grant select on 库名.表名 to 用户名localhost; 是授予指定用户可以在指定数据库中的指定表中执行select的权限
授权用户
指定tom用户在本机只能使用select语句查询访问auth库中的所有表
mysql grant select on auth.* to tomlocalhost identified by 123456;
这里的localhost表示授权本机
根据需求和实际情况也可以写成IP地址或网段网段的格式在主机部分要写成%192.168.10.%或允许所有主机root%
此时查询mysql库中的user表可以看到刚刚授权的tom用户的授权信息被生成出来了此时退出mysql
mysql select * from mysql.user\G;
*************************** 4. row ***************************Host: localhost # 允许该用户在什么地方登录User: tom # 账号名# 省略部分信息plugin: mysql_native_password # 当你对该用户设置密码时利用该插件对密码进行加密authentication_string: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 # 加密过的密码password_expired: Npassword_last_changed: 2024-07-23 22:02:46password_lifetime: NULLaccount_locked: Nmysql exit在终端使用tom账户也可以登录了
再使用select语句查询授权过的auth库内的表可以查询
如果查询别的库的信息就不行了
[rootlocalhost ~]# mysql -utom -p123456
mysql
mysql select * from auth.users;
------------------------------------------------------
| user_name | user_passwd |
------------------------------------------------------
| tom | *B66FEB4CF5216D971C066EB920EC03B27A5A3F40 |
------------------------------------------------------
1 row in set (0.00 sec)mysql select * from mysql.user;
ERROR 1142 (42000): SELECT command denied to user tomlocalhost for table user
授权远程用户
指定授权任何主机%都可以使用root用户登录mysql并且拥有所有库的所有表的访问权限
这里的123456密码是远程主机登录的密码而不是本地主机登录的密码
mysql grant all on *.* to root% identified by 123456;
mysql flush privileges;
在102主机安装MySQL客户端
[rootlocalhost ~]# yum -y install mysql
[rootlocalhost ~]# mysql -uroot -p123456 -h 192.168.10.101 -P 3306
MySQL [(none)]
查看指定账户的授权
使用show命令查看指定账户的权限
mysql show grants for tomlocalhost;
-----------------------------------------------
| Grants for tomlocalhost |
-----------------------------------------------
| GRANT USAGE ON *.* TO tomlocalhost |
| GRANT SELECT ON auth.* TO tomlocalhost |
-----------------------------------------------
撤销指定账户授权
首先确保是有mysql管理权的用户登录mysql比如root
如果完成了上方的操作要执行这里的命令记得exit退出换成root用户登录进mysql
这里使用revoke语句从tomlocalhost用户上撤销在auth数据库下所有表的所有权限
revoke的语法 revoke 权限 on 库名.表名 from 用户名地址;
这里的权限就是你授权的权限比如select、insert、update、delete等
[rootlocalhost ~]# mysql -uroot -p
Enter password: 输入密码
mysql revoke all on auth.* from tomlocalhost; Windows通过Navicat连接MySQL服务器
前提是授权时将地址设为指定IP或%
在计算机管理开启MySQL服务 软件内左上角连接 ——》MySQL 主机IP填为MySQL服务器的IP密码填为在MySQL服务器设置的 然后可以在左边列表看到连接的MySQL服务器