加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL基础操作

发布时间:2020-12-11 23:58:05 所属栏目:MySql教程 来源:网络整理
导读:h2 style="text-align: center;"数据库级别 1.显示数据库 show databases; 2.创建数据库 database 数据库名; 3.使用数据库,进入数据库 数据库名; 4.用户管理 创建用户: @ identified ; 删除用户: @ ; 修改用户: 可以进入MySQL的user表中进行更改 ; 也可

<h2 style="text-align: center;">数据库级别

1.显示数据库

show databases;

2.创建数据库

database 数据库名;

3.使用数据库,进入数据库

数据库名;

4.用户管理

创建用户:

@ identified ;

删除用户:

@;

修改用户:

可以进入MySQL的user表中进行更改

;

也可以

rename @ @;

修改密码:

password @ Password();

5.用户授权

查看用户权限:

show grants @ ;

授予用户权限:

权限 数据库.表 @;

撤销用户权限:

权限 数据库.表 @;

权限类型:

MySQL .6之前引用特权是未使用的。. 允许使用触发器相关,前提是你必须拥有这个表的CREATE、 ROUTINE ROUTINE 文件读写权限允许你文件在服务器主机上使用LOAD DATA INFILE TABLESPACE 允许创建表空间,前提是你需要CREATE、 tablespaces 以及属于log 允许使用ALTER , , ,RENAME , hosts,flushlogs,flush,flushstatus,flushtables,flushthreads,refresh, CLIENT 是否有权限去请求复制相关主数据库产生的事件的,允许显示的使用SHOW MASTER STATUS,SHOW SLAVE STATUS, SHOW 所有权限: ,可以简写为ALL

?对于授权语句中,可以使用通配符,如:

用户名.. 用户只能在改IP段下才能访问(通配符 用户可以再任意IP下访问(默认IP地址为数据库名.<span style="color: #808080;"><span style="color: #000000;"> 数据库中的所有
<span style="color: #808080;">
.<span style="color: #808080;">*
所有数据库

1.显示当前使用的数据库中所有表:

show tables;

2.创建表

InnoDB CHARSETutf8;

在创建表的同时还可以规定:

设置每列的默认值
defalut
<span style="color: #800000; font-weight: bold;">1
<span style="color: #000000;">

设置列的自增
auto_increment
自增必须设置到索引列中
自增可以设置起始值和步长
<span style="color: #0000ff;">set id auto_increment_increment<span style="color: #808080;">=<span style="color: #800000; font-weight: bold;">2;<span style="color: #008080;">--<span style="color: #008080;">起始值
<span style="color: #0000ff;">set id auto_increment_offset<span style="color: #808080;">=<span style="color: #800000; font-weight: bold;">2;<span style="color: #008080;">--<span style="color: #008080;">步长
<span style="color: #000000;">
主键
<span style="color: #0000ff;">primary <span style="color: #0000ff;">key<span style="color: #000000;">外键将表的一列与另一张表的一列相关联,使这一列的内容只能是相关联的那一列的内容

constraint 外键名 foreign key (本表的某列) references color(其他表的某列);举例
create table student(
                sid int not null auto_increment primary key,course_id int not null defalut 1,constraint fk_sc foreign key (course_id) references course(cid)
            );

?3.删除表

表名;

4.清空表

表名 表名

5.修改表

添加列: 表名 表名 表名 modify 列名 类型; 添加主键:
<span style="color: #0000ff;">alter
<span style="color: #0000ff;">table
表名 <span style="color: #0000ff;">add
<span style="color: #0000ff;">primary
<span style="color: #0000ff;">key
<span style="color: #000000;">(列名);

删除主键:
<span style="color: #0000ff;">alter <span style="color: #0000ff;">table 表名 <span style="color: #0000ff;">drop <span style="color: #0000ff;">primary <span style="color: #0000ff;">key<span style="color: #000000;">;
<span style="color: #0000ff;">alter <span style="color: #0000ff;">table 表名 modify 列名 类型,<span style="color: #0000ff;">drop <span style="color: #0000ff;">primary <span style="color: #0000ff;">key<span style="color: #000000;">;

添加外键:<span style="color: #0000ff;">alter <span style="color: #0000ff;">table 本表 <span style="color: #0000ff;">add <span style="color: #0000ff;">constraint 外键名称 <span style="color: #0000ff;">foreign <span style="color: #0000ff;">key 本表外键列 <span style="color: #0000ff;">references<span style="color: #000000;"> 引用外键表列;
删除外键:<span style="color: #0000ff;">alter <span style="color: #0000ff;">table 表名 <span style="color: #0000ff;">drop <span style="color: #0000ff;">foreign <span style="color: #0000ff;">key<span style="color: #000000;"> 外键名称
<span style="color: #0000ff;">alter <span style="color: #0000ff;">table<span style="color: #000000;"> 表名modify 字段名default 默认值

修改默认值:<span style="color: #0000ff;">alter <span style="color: #0000ff;">table<span style="color: #000000;"> 表名modify 字段名default 默认值;
删除默认值:<span style="color: #0000ff;">ALTER <span style="color: #0000ff;">TABLE 表名 <span style="color: #0000ff;">ALTER <span style="color: #0000ff;">COLUMN 列名 <span style="color: #0000ff;">DROP <span style="color: #0000ff;">DEFAULT;

6.基本数据类型

.175494351E .402823466E .2250738585072014E .7976931348623157E ? ? ,,autumnwinterabcda,b,c

7.索引

索引可以加速查询,使用B+Tree实现其索引结构。

普通索引:

添加索引
<span style="color: #0000ff;">create
<span style="color: #0000ff;">index
索引名 <span style="color: #0000ff;">on
<span style="color: #000000;"> 表名(列名);

删除索引
<span style="color: #0000ff;">drop 索引名 <span style="color: #0000ff;">on<span style="color: #000000;"> 表名;

查看索引
show <span style="color: #0000ff;">index <span style="color: #0000ff;">from 表名;

唯一索引:

添加唯一索引
<span style="color: #0000ff;">create
<span style="color: #0000ff;">unique
<span style="color: #0000ff;">index
索引名 <span style="color: #0000ff;">on
<span style="color: #000000;"> 表名(列名);

删除唯一索引
<span style="color: #0000ff;">drop <span style="color: #0000ff;">unique <span style="color: #0000ff;">index 索引名 <span style="color: #0000ff;">on 表名;

主键索引:

auto_increment 添加主键
<span style="color: #0000ff;">alter
<span style="color: #0000ff;">table
表名 <span style="color: #0000ff;">add
<span style="color: #0000ff;">primary
<span style="color: #0000ff;">key
<span style="color: #000000;">(列名);

删除主键
<span style="color: #0000ff;">alter <span style="color: #0000ff;">table 表名 <span style="color: #0000ff;">drop <span style="color: #0000ff;">primary <span style="color: #0000ff;">key;

组合索引:

将多个列组合成一个索引

索引名 表名(列名1,列名2);

组合索引的查询是取左的方式,例如查询 ?列1 and 列2 ,会使用索引,查询列1会使用索引,查询列2不会使用索引。

1.增加

表 (列名,列名...) 表 (列名,值...),(值,列名...) (列名,列名...) 表;

2.删除

......;

3.修改

name = 条件;

4.查看

列名,列名,列名 条件;

5.选择的条件方式

可以使用and, a name name 表 limit 表 limit ,; 从第三行开始的4行

?6.排序

; - ; - 列1 ,列2 ; - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序

7.分组

num num,nid,(),(score),(score),(score) num num (id) 除此之外, 必须在where之后, by之前

8.表的连接

A.nid 以左边的为基础,左边的表都显示,若B中没有对应关系的列则显示为null
<span style="color: #0000ff;">select
<span style="color: #000000;"> A.name,B.name
<span style="color: #0000ff;">from
A <span style="color: #808080;">left
<span style="color: #808080;">join
<span style="color: #000000;"> B
<span style="color: #0000ff;">on
A.nid <span style="color: #808080;">=
<span style="color: #000000;"> B.nid;

以右边的为基础,左边的表都显示,若A中没有对应关系的列则显示为null
<span style="color: #0000ff;">select<span style="color: #000000;"> A.name,B.name
<span style="color: #0000ff;">from A <span style="color: #808080;">right <span style="color: #808080;">join<span style="color: #000000;"> B
<span style="color: #0000ff;">on A.nid <span style="color: #808080;">=<span style="color: #000000;"> B.nid;

两个表互相约束,和上两个方法类似,但把有null的行都去掉了
<span style="color: #0000ff;">select<span style="color: #000000;"> A.name,B.name
<span style="color: #0000ff;">from A <span style="color: #0000ff;">inner <span style="color: #808080;">join<span style="color: #000000;"> B
<span style="color: #0000ff;">on A.nid <span style="color: #808080;">= B.nid

9.组合

column_name(s) column_name(s) 不去除重复
<span style="color: #0000ff;">SELECT
column_name(s) <span style="color: #0000ff;">FROM
<span style="color: #000000;"> table1
<span style="color: #0000ff;">UNION
<span style="color: #808080;">ALL

<span style="color: #0000ff;">SELECT
column_name(s) <span style="color: #0000ff;">FROM
<span style="color: #000000;"> table2;

组合后的列名为第一个select语句中的列名

10.视图

视图名 view_name 删除视图
<span style="color: #0000ff;">DROP
<span style="color: #0000ff;">VIEW
<span style="color: #000000;"> 视图名

修改视图
将视图名换一个表示的视图
<span style="color: #0000ff;">ALTER <span style="color: #0000ff;">VIEW 视图名称 <span style="color: #0000ff;">AS<span style="color: #000000;"> SQL语句;
无法通过对视图的更新来达成对真实表的更新

查询视图
可将视图看作一个表来查询

11.存储过程

创建存储过程:

delimiter

调用存储过程

call p1();

有参数的存储过程

i i3 i<span style="color: #0000ff;">set <span style="color: #008000;">@i1<span style="color: #808080;">=<span style="color: #800000; font-weight: bold;">1; <span style="color: #008080;">--<span style="color: #008080;">变量加@表示用户变量,不加表示局部变量
<span style="color: #0000ff;">set
<span style="color: #008000;">@i2
<span style="color: #808080;">=
<span style="color: #800000; font-weight: bold;">2
<span style="color: #000000;">;
call p1(
<span style="color: #800000; font-weight: bold;">2
,<span style="color: #008000;">@i1
,<span style="color: #008000;">@i2
<span style="color: #000000;">);
<span style="color: #0000ff;">select
<span style="color: #008000;">@i1
,<span style="color: #008000;">@i2
;

删除存储过程

存储过程名;

12.函数

内置函数:

MySQL提供了很多内置函数,具体可参考

自定义函数:

num ; num i1

删除函数:

函数名;

使用函数

name table1 nid查看返回值
<span style="color: #0000ff;">declare
<span style="color: #008000;">@i
<span style="color: #0000ff;">int
<span style="color: #000000;">;
<span style="color: #0000ff;">select
func(<span style="color: #800000; font-weight: bold;">2
) <span style="color: #0000ff;">into
<span style="color: #008000;">@i
; <span style="color: #008080;">--
<span style="color: #008080;">将一个表的信息复制到另一个表

<span style="color: #0000ff;">select
<span style="color: #008000;">@i
;

?13.事务

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

事务就是有多个操作,要么一起执行,要么就都不执行。

执行事务

START name_table(name)(; --提交事务

事务回滚

; --回滚到执行事务之前

事务与存储过程结合使用

handler p_return <span style="color: #0000ff;">DECLARE <span style="color: #0000ff;">exit handler <span style="color: #0000ff;">for<span style="color: #000000;"> sqlwarning
<span style="color: #0000ff;">BEGIN

<span style="color: #008080;">--
<span style="color: #008080;"> WARNING

<span style="color: #0000ff;">set
p_return <span style="color: #808080;">=
<span style="color: #800000; font-weight: bold;">2
<span style="color: #000000;">;
<span style="color: #0000ff;">rollback
<span style="color: #000000;">;
<span style="color: #0000ff;">END
<span style="color: #000000;">;
START
<span style="color: #0000ff;">TRANSACTION
<span style="color: #000000;">;
DELETE from name_table where name='aaa';insert into name_table(name)values('sfencs');

  p_return  

14.触发器

触发器的用途为用户对表进行增删改的操作的前或后,同时进行另一个操作。

创建触发器:

触发器名 BEFORE table1 插入后
<span style="color: #0000ff;">CREATE
<span style="color: #0000ff;">TRIGGER
触发器名 AFTER <span style="color: #0000ff;">INSERT
<span style="color: #0000ff;">ON
table1 <span style="color: #0000ff;">FOR
<span style="color: #000000;"> EACH ROW
<span style="color: #0000ff;">BEGIN
<span style="color: #000000;">
...
<span style="color: #0000ff;">END除此之外还有删除delete前后和更新update前后这里定义触发器时一般也需要使用
delimiter来改变语句结束符号



对于begin和end之间执行的语句,如果想根据想删除,插入,更新顶点数据进行判别,动态的执行相关语句时,那么就要用一种方式来表示数据,使用new和old来表示

当使用insert语句的时候,如果原表中没有数据的话,那么对于插入数据后表来说新插入的那条数据就是new

当使用delete语句的时候,删除的那一条数据相对于删除数据后表的数据来说就是old

当使用update语句的时候,当修改原表数据的时候相对于修改数据后表的数据来说原表中修改的那条数据就是old,而修改数据后表被修改的那条数据就是new

举例:old.name,就是原表中数据中的名字,new.id就是新数据中的id。

删除触发器:

触发器名;

?15.sql中的if语句

条件 ;

16.sql中的循环语句

;

repeat;

iterate loop_name; --回到loop开始的位置      leave loop_name; --跳出循环 loop;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读