加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql 数据库基本操作设置

发布时间:2023-09-21 15:44:59 所属栏目:MySql教程 来源:
导读:数据库基础知识

创建和查看数据库

  create database 数据库名称; #创建数据库

  show databases; #查看数据库

drop database 数据库名称; #删除数据库
数据库基础知识
 
创建和查看数据库
 
  create database 数据库名称;    #创建数据库
 
  show databases;              #查看数据库
 
   drop database 数据库名称;     #删除数据库                
 
数据类型
 
常用数据类型 int,char,varchar,等等
 
创建数据表
 
创建数据表
 
    use 数据库名称;                                        #选择创建表的数据库
 
    create table 表名(id int(11),name varchar(11));        #创建表和字段名称
 
    desc 表名;                                              #查看数据表
 
    alter table 旧表名 rename to 新表名;                     #修改表名
 
   alter table 表名 change 旧字段名 新字段名 新数据类型;      #修改字段名
 
   alter table 表名 modify 字段名 数据类型;              #修改字段名的数据类型
 
   alter table 表名 add 新字段名 数据类型;               #添加字段
 
   alter table 表名 drop 字段名;                       #删除字段
 
   alter table 表名 modify 字段名 数据类型 first;         #修改字段的排列位置(排在第一个位置)
 
   alter table 表名 modify 字段名1 数据类型 after 字段名2;    #字段名1 放在字段名2 后面
 
   drop table 表名;                                       #删除数据表

表的约束(列举的约束条件都是针对表中字段进行限制,从而保证数据表中的正确性和唯一性)
 
  primary key    主键约束,用于唯一标识对应的记录
 
  foreign key    外键约束
 
  not null       非空约束
 
  unique      唯一性约束
 
  default      默认值约束
 
主键约束
 
create table table2(id int(11) primary key,    #单字段主键
 
            name varchar(11) not null,
 
            grade float);
 
create table table2(id int(11),
 
            name varchar(11),
 
            grade float,
 
            primary key(id,name));     #多字段主键
 
非空约束
 
create table table2(id int(11),
 
           name varchar(11) not null,  #非空约束           
 
           grade float);
 
唯一性约束
 
create table table2(id int(11),
 
             stu_id int unique,        #唯一性约束          
 
             grade float);
 
默认约束
 
create table table2(id int(11),
 
           name varchar(11),        
 
           grade float default 0,      #默认约束
 
           stu_id int);                  

 索引 (普通索引 - 唯一性索引 - 全文索引 - 单列索引 - 多列索引 - 空间索引)
 
unique 可选参数,表示唯一索引
 
fulltext 可选参数,表示全文索引
 
spatial 可选参数,表示空间索引
 
index 和 key,用来表示字段的索引,二者选一即可
 
别名 可选参数 表示创建的索引的名称
 
字段名 1 指定索引对应字段的名称
 
长度 可选参数 用于表示索引的长度
 
ASC 和 DESC 可选参数 其中 ASC 表示升序排列 DESC 表示降序排列
 
创建普通索引
 
create table t1(id int,
 
          name varchar(11),
 
          score float,
 
          index(id));  #在id上建立索引
 
show create table 表名 \G;      #查看表的结构
 
explain select * from 表名 where id=1 \G;   #查看索引是否被使用,当possible_keys和key的值都为id,说明索引已经存在
 
唯一性索引
 
create table t2(id int not null,
 
          name varchar(20) not null,
 
          score float,
 
          unique index unique_id(id asc));  #在id的字段上建立索引名为unique_id的唯一性索引,并且按照升序排列
 
全文索引
 
create table t3(id int not null,
 
          name varchar(20) not null,
 
          score float,
 
          fulltext index fulltext_id(name)    #在name字段上建立索引名为full_text的全文索引
 
          )engine=myisam;  #目前只有myisam存储引擎之v胡全文索引
 
单列索引
 
 create table t4(id int not null,
 
          name varchar(20) not null,
 
          score float,
 
          index single_name(name(20)))    #建立一个名为signal_name的单列索引,并且索引的长度为20
 
多列索引
 
create table t5(id int not null,
 
          name varchar(20) not null,
 
          score float,
 
          index muli(id,name));            #在id和name上建立一个muli的多列索引

使用create index 语句在已经存在的表上创建索引
 
create index index_id on t1(id);          #创建普通索引
 
create unique index unique_id on t1(id);   #创建唯一性索引
 
create index multidex on t1(id,name);      #创建多列索引

使用alter table 语句在已经存在的表上创建索引
 
  alter table t1 add index index_id (id);   # 创建普通索引
 
  alter table t1 add unique uniqueidx (id); #创建唯一性索引
 
  alter table t1 add index multidx (id,name)# 创建多列索引

 使用 alter table 删除索引
 
  alter table 表名 drop index 索引名;

 使用 drop index 删除索引
 
 drop index 索引名 on 表名;

数据库的增 删 改 查
 
#select * from 表名;  查看表中数据
 
添加数据
 
建表
 
create table student(id int(4) primary key auto_increment,    #id会自增
 
            name varchar(20) not null,
 
            grade float);
 
insert into student(id,name,grade)values(1,'zhangsan',98.5);   
 
insert into student (name,grade,id) values ('zhangsan',98.5,2);   # 注意:字段名和值对应
 
insert into student(id,name) values (1,'zhangsan');   # 为表的指定字段添加数据

insert 语句中不指定字段名
 
insert into 表名 values (值 1,值 2,。。。)           # 添加值的顺序必须按照表中定义的字段顺序
 
insert into student values(1,'zhangsan',98.5);    

insert 语句的其他用法
 
insert into 表名 set 字段名 1 = 值 1, [字段名 2 = 值 2,...]
 
insert into student set id=5,name='boya',grade=99;   # 添加一条记录
 
insert into student values
 
          (6,'a',99),
 
          (7,'b',99),
 
          (8,'c',99);                         # 同时添加多条记录,按表中定义的字段顺序
 
insert into student (name,id,grade) values           # 同时添加多条数据,对应字段名和值
 
          ('a',6,99),
 
          ('b',7,99),
 
          ('c',8,99);
 
 更新数据
 
update更新部分数据:
 
update student set name='asd',grade=89 where id=5;   #更新id=5的数据
 
update stedent set grade=100 where id<10;            #更新id<10的数据
 
update更新全部数据
 
update student set grade=100;                       #更新grade全部为100
 
 删除数据
 
delete from 表名 [where 条件表达式]
 
delete 删除部分数据
 
delete from student where id=1;    #删除id=1的数据
 
delete from student where id>6;    #删除id>6的数据
 
delete 删除全部数据
 
delete from student                #删除全部数据     
 
使用关键字truncate删除表中数据        #使用delete删除数据会留下记录,体现在删除数据之后的id会继续增加不会从1开始,truncate不会留下记录,从0开始,所以效率更高
 
truncate student;                 #删除全部数据
 
 查询数据

简单查询
 
在 select 语句中指定所有字段
 
select 字段名 1,字段名 2,。。。from 表名
 
select id name,grade,gender from student;

在 select 语句中使用 * 通配符代替所有字段
 
select * from 表名;
 
查询指定字段
 
select 字段名 1,字段名 2,。。。from 表名
 
select id,name from student;
 
按条件查询
 
select id,name from t where id=4;   # 查询 t 表中 id=4 的数据
 
select id,name,grade from t where grade>60;   # 查询表中 grade>60 的数据
 
带 in 的关键字查询

select id,name,grade,gender from t where id in (7,8,9);     # 查询 id,name,grade,gender 等数据 在 id 为 7,8,9
 
select id,name,grade,gender from t where id not in (7,8,9);     # 查询 id,name,grade,gender 等数据 除了 id 为 7,8,9

带 between and 关键字的查询
 
select id,name,grade,gender from t where id between 5 and 9;   # 查询 id,name,grade,gender 等数据 在 id 为 5-9 之间
 
select id,name,grade,gender from t where id not between 5 and 9;   # 查询 id,name,grade,gender 等数据 除了 id 为 5-9 之间

空值查询
 
select id,name,grade,gender from t where grade is null;       # 查询 id,name,grade,gender 等数据 在 grade 为 null 值

带 distinct 关键字的查询   
 
select distinct 字段名 from 表名;  
 
select distinct gender from t;         # 过滤掉重复的 gender 值
 
distinct 关键字作用于多个字段
 
select distinct gender,name from t;   # 过滤掉 gender 和 name 联合起来重复的值
 
带 like 关键字的查询
 
% 通配符
 
select id,name from t where name like"a%";    #查询字段中以字符 a 开头的 id 和 name 的值
 
select id,name from t where name like"d% h";    #查询字段中字符 d 开头,h 结尾的 id 和 name 的值
 
select id,name from t where name like"% h%";    #查询字段中含有 h 的  id 和 name 的值
 
select id,name from t where name not like"% h%";    #查询字段中不含有 h 的  id 和 name 的值
 
_通配符 (一个下划线只能匹配一个字符)
 
select id,name from t where name like"__gs";       # 查询字段中四个字节,后两位为 gs 的   id 和 name 的值
 
select id,name from t where name like"_ _gs";      #查询字段中带有一个空格 ,后两位为 gs 的  id 和 name 的值
 
匹配字符串总的 % 和_怎么办?
 
例子
 
%\%% 匹配字符串中带有 % 的
 
%\_% 匹配字符串中带有_的

 带 and 关键字的条件查询

select id,name,gender from t where id<9 and gender=' 女 ';  #匹配 id<9 且 gender = 女
 
select id,name,gender from t where id in (1,2,3,4) and name like '% ng' and grade<80; #匹配 id 为 1,2,3,4 且 name 的最后两个字符是 ng 且 grade<80
 
 带 or 的关键字的多条件查询

select id,name,gender from t where id<9 or gender=' 女 ';  #匹配 id<9 或 gender = 女

or 和 and 一起用的情况
 
select id,name,gender from t where gender=' 女 ' or gender=' 男’ and grade=100;  #匹配 gender = 女 或者 gender = 男的且 grade=100

高级查询

count 函数
 
select count (*) from 表名;
 
select count (*) from t;    #查询表中有多少条数据

sum 函数
 
select sum (字段名) from 表名;
 
select sum (grade) from t;    #计算 grade 字段的总和
 
avg 函数
 
select avg (字段名) from 表名;
 
select avg (grade) from t;  #计算 grade 字段的平均值

max 和 min 函数
 
select max 或者 min (字段名) from 表名;
 
select max 或者 min (grade) from t;  #查询 grade 字段最大值或者最小值
 
对查询结果排序

select * from t order by grade;        #对 t 表中的 grade 进行排序,默认升序排列  
 
select * from t order by grade asc;    #对 t 表中的 grade 进行排序,升序排列     从小到大
 
select * from t order by grade desc;   # 对 t 表中的 grade 进行排序,降序排列     从大到小

分组查询

单独使用 group by
 
select * from t group by gender;   # 查询对 gender 字段中不同的值进行分类,然后显示每个类的其中一组数据
 
group by 和 聚合函数一起使用
 
select count (*),gender from t group by gender;     # 对分类过后的数据统计并返回 gender 的几种情况

group by 和 having 关键字一起使用   #having 和 where 关键的作用相同,区别在于 having 关键字之后可以跟聚合函数,where 关键字不能
 
select sum (grade),gender from t group by gender having sum (grade)<300;  #对于分组后的结果进行过滤   查询 gender 分组过后 grade 字段值之和小于 300 的

使用 limit 限制查询结果

select * from t limit 4;      #查询前四条记录
 
select * from t order by grade desc limit 4,4;  #最后跟了两个参数,第一个表示偏移量为 4,即从第五条记录开始查询,第二表示返回几条记录  desc 表示 grade 字段从高到低排列
 
函数
 
select concat (id,'_',name,'_',grade,'_',gender) from t;        #查询 t 表中的记录,将个字段的值用下划线连接起来
 
select id,if (gender=' 男 ',1,0) from t;                        #查询 t 表中 id 和 gender 的字段值,如果 gender 的字段值是男,返回 1,否则返回 0
 
为表和字段取别名
 
select * from 表名 [as] 别名;
 
select * from t as s where s.gender=' 女 ';   # 为 t 表取别名为 s   s.gender 表示 t 表中 gender 的字段值
 
为字段取别名
 
select 字段名 [as] 别名 [, 字段名 [as] 别名,... ] from 表名;
 
select name as n,gender g from t;       # 将 name 字段和 gender 字段取别名分别为 n 和 g    查询结果也会显示 n 和 g
 
多表操作
 
外键
 
创建两种数据表
 
create table grade(id int(4) not null primary key,
 
            name varchar(36));
 
create table student(sid int(4) not null primary key,
 
            sname varchar(36),
 
            gid int(4) not null);
 
为表添加外键约束
 
alter table student add constraint fk_id foreign key (gid) references grade (id);   # 为 student 表添加外键约束  grade 的 id 为主键 student 的 gid 为外键
 
删除外键约束
 
alter table 表名 frop foreign key 外键名;
 
alter table student drop foreign key fk_id;    #删除 student 表中的外键约束
 
操作关联表
 
添加数据
 
insert into grade (id,name) values (1,' 软件一班 ');
 
insert into grade (id,name) values (2,' 软件二班 ');
 
insert into student (sid,sname,gid) values (1,' 王红 ',1);
 
insert into student (sid,sname,gid) values (2,' 李强 ',1);
 
insert into student (sid,sname,gid) values (3,' 赵四 ',2);
 
insert into student (sid,sname,gid) values (4,' 李五 ',2);
 
select sname from student where gid=1;         # 查询 gid 为 1 的学生姓名   student 和 grade 表之间有联系   gid 的 1 表示的是软件一班
 
删除数据  注意:一定要先删除从表中的数据,然后删除主表中的数据 不然会报错
 
连接查询
 
交叉连接   select * from 表 1 cross join 表 2;   # 表一和表二分别有 4 条数据  交叉查询后有 16 条数据 4*4=16
 
内连接   select 查询字段 from 表 1 [inner] join 表 2 on 表 1. 关系字段 = 表 2. 关系字段;  #关系字段相等的才会显示

外连接 (左连接,右连接)
 
复合条件连接查询:
 
子查询:
 
带 in 关键字的查询:
 
带 exists 关键字的查询:
 
带 any 关键字的子查询:
 
带 all 关键字的子查询:
 
带比较运算符的子查询:
 
事物存储与过程
 
事物管理
 
存储过程的创建
 
存储过程的使用
 
视图
 
视图概述
 
视图管理
 
数据库的高级操作
 
数据备份与还原
 
用户管理
 
权限管理
 
 
 
 

(编辑:聊城站长网)

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

    推荐文章