十分钟看懂mysql数据库入门语言!

关系数据库
基于关系模型的数据库系统
关系模型数据结构使用简单易懂的二维数据表
关系模型可用简单的“实体-关系”表示
实体 关系 属性 三要素

实体:也称实例,对应现实世界中可区别于其他对象的“事件”或“事物”
属性:实体所具有的某一特性,一个实体可以有多个属性
联系:实体集之间的对应关系称为联系,也成为关系

非关系数据库
也成为nosql
存储数据不以关系模型为依据,不需要固定格式
非关系模型数据库优点:
  数据库可以高并发读写
  对海量数据高效存储访问
  对数据库具有高扩展性与高可用性

——————————————————————————————
mysql介绍
一款深受欢迎的开源关系数据库
Oracle旗下的产品
遵守GPL协议,可以免费使用与修改
特点:
  性能卓越、服务稳定
  开源、无版权限制、成本低
  多线程、多用户
  基于CS(客户端 服务器)架构
 安全可靠

——————————————————
mysql远程连接
创建了一个bbs数据库
CREATE DATABASE bbs;
远程授权(all读写都可以,select只读)
GRANT all ON bbs.* TO 'bbsadm'@'%' IDENTIFIED BY 'admin123';
本地授权
GRANT all ON bbs.* TO 'bbsadm'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
然后使用软件登录就行
——————————————————
mysql数据库管理
SQL语言
Structured Query Language缩写,即结构化查询语言
关系型数据库标准语言
用于维护管理数据库
  包括数据查询、数据更新、访问控制、对象管理功能
SQL分类
DDL:数据定义语言
DML:数据操纵语言
DQL:数据查询语言
DCL:数据控制语言

创建数据库
create database 数据库名
mysql> create database auth1;
Query OK, 1 row affected (0.00 sec)
创建数据表
create table 表明 (字段定义......)
进入数据库auth1
use auth1
创建users1表第一个字段(属性)username16字符不能为空,第二字段(属性)user_passwd48字符不能为空,指定user_name开头删除username开头就是删掉一整行
mysql> create table users1 (user_name char(16) not null,user_passwd char(48) default'',primary key (user_name));

查看数据库信息
使用root账户进入mysql数据库
mysql -uroot -p
大部分sql需要以;结尾
mysql> show databases;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| aimin              |
| auth               |
| mysql              |
| performance_schema |
| sys                |
| xiaoqi             |
+--------------------+
7 rows in set (0.00 sec)

查看数据库表信息
数据库
use mysql;
查看表
show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                              |
| engine_cost               |
| event                         |
| func                            |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
--------------------------

显示数据表节构
describe 【数据库名.】表名(可以使用desc代替)
mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |

————————————————————
DML语句用于对表中数据进行管理
包括的操作
 INSERT:插入新数据
 UPDATE:更新原有数据
 DELETE:删除不需要的数据
向数据表中插入新的数据记录
INSERT INTO 表明(字段1,字段2,....)
  VALUES(字段1的值,字段2的值,....)
进入auth库
use auth
插入到users表中后面的属性对应
mysql> insert into users(user_name,user_passwd)
         插入属性的具体描述;
    -> values('zhangsan',password('123456'));
Query OK, 1 row affected, 1 warning (0.01 sec)

修改、更新数据表中数据记录
UPDATE 表名 SET 字段名1(属性)=值1【字段名2=值2】 WHERE 条件表达式
修改lisi账户里面字段user_password为空值
mysql> update auth.users set user_passwd=password('') where user_name='lisi';
通过直接修改数据库方式实现修改数据库管理员密码
mysql> update mysql.user set authentication_string=password('1234567') where user='root'

表中删除指定数据记录
DELETE FROM 表名 WHERE 条件表达式
mysql> delete from auth.users where user_name='lisi';
*不带where条件语句删除所有记录(高危命令)
delete from auth.users;

————————————————————————
管理表中数据
DQL是数据查询语句,只有SELECT
用于从数据表中查询符合条件的记录
查询时可不指定条件
SELECT 字段名1(属性1),字段名2.....FROM 表名
查看auth库中users表中所有内容
mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| zhangsan  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 

查询时指定条件
SELECT 字段名1(属性1),字段名2... FROM 表名 WHERE 条件表达式(where)
查找auth库中users表中zhangsan两个属性的信息
mysql> select user_name,user_passwd from auth.users where user_name='zhangsan';
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| zhangsan  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------

————————————————————————
用户授权
DCL语句色湖之用户权限(用户不存在时,则新建用户)
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址
      【 IDENTIFIED BY '密码' 】
设置权限列表给来自localhost的用户xiaoqi权限
mysql> grant select on auth.* to 'xiaoqi'@'localhost' identified
设置密码
    -> by '123456';
mysql> show grants for xiaoqi@localhost;
+--------------------------------------------------+
| Grants for xiaoqi@localhost                      |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO 'xiaoqi'@'localhost'       |
| GRANT SELECT ON "auth".* TO 'xiaoqi'@'localhost' |
+--------------------------------------------------+

撤销用户权限
mysql> revoke all on auth.* from 'xiaoqi'@'localhost';

————————————————————————
数据表高级操作

清空表
清空一个数据表就是删除这个表内的所有数据。前面的小节已经学习过DELETE
FROM语句,可以删除表内的数据,除此之外还可以使用TRUNCATE TABLE语句实现清
空表内记录。DELETE FROM语句可以使用WHERE子句对删除的结果集进行过滤选择,
这样更方便、更灵活。TRUNCATE TABLE语句是删除表中所有记录数据,没法定制,灵活
性上稍差。清空表的具体操作如下所示。
use auth;    ###进入auth数据库中
create table ky (user_name CHAR(16) NOT NULL,user_passwd CHAR(48) DEFAULT '',level CHAR(16) NOT NULL,PRIMARY KEY (user_name)); 
###创建ky表
insert into ky values('list',password('123456'),10);     
insert into ky values('list2',password('123456'),45);
insert into ky values('list3',password('123456'),56);
insert into ky values('list4',password('123456'),55);
insert into ky values('list5',password('123456'),88);
#####上面几个是往ky表中写入数据
show tables;   查看当前用户
create table tm like ky;                     通过like方式,复制ky表生成tm表
insert into tm select * from ky;         通过ky表生成tmp表内数据记录
delete from tm;                                  清空tm表中的信息

insert into tm select * from ky;       通过ky表生成tmp表内数据记录
truncate table tm;                            清空tm表中的信息  
select * from tm;                              查看tm表中所有的信息,这边显示没有
select count(*) from tm;                  

2.临时表
MySQL的临时表,顾名思义,就是临时建立的表,并不会长期存在,主要用于保存一些临时数据。临时表有个特性,
就是只在当前连接可见,当前连接下可执行增删改查等操作,当连接被关闭后,临时表就会被MysQL删除,相关的资源也会被释放。
下面创建临时表mytmp,然后插入数据,之后断开当前连接,最后重新连到MySQL查看临时是否还存在,具体操作如下
use auth;    ###进入auth数据库中
CREATE TEMPORARY TABLE `mytm23` (`id` int(10) NOT NULL AUTO_INCREMENT,`NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `level` int(10) NOT NULL,PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into mytm(NAME,level) values('aa',10);
#####创建mytm23临时表  
nsert into mytm23(NAME,level) values('aa',10); ##往mytm23临时表写入信息
select * from mytm23;   ##查看mytm23临时表的信息
退出数据库,再次进入,这个临时表的信息就没有了

3.克隆表
在MySQL的开发和维护过程中,会有原样拷贝某个数据表的需求。怎么样才能够快速、
完整的拷贝数据表呢?先来看一下CREATE TABLE new_tablename AS SELECT这个语
句,具体实现的 SQL语句如下所示。
第一种方式   like方式复制表结构,不复制数据
create table tm like ky;                    ## 通过like方式,复制ky表生成tm表
show create table tm\G                   ##查看tm表的结构
insert into tm select * from ky;         ##通过ky表生成tmp表内数据记录

方法二:通过创建表的方式克隆表
首先,使用SHOW CREATE TABLE命令来获取源表的表结构、索引等信息。
其次,复制源表结构并修改表名为目标名字,然后执行创建新表的语句。通过这步操作,
就可以获得一个和源表结构一样的克隆表了。
最后,执行INSERTINTO...SELECT语句,从源表复制数据到新表内。
create table `test` (
`id` int(10) not null auto_increment,
`name` varchar(32) character set utf8 collate utf8_bin not null,
`level` int(10) not null,
primary key (id)
) engine=Innodb default charset=utf8;
###改名后创建新表
insert into test select * from mytmp;   导入原表数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值