MySQL常用操作

    xiaoxiao2022-07-12  139

    一.增

    1.创建数据库

    [create database 数据库名字 ]

    2.创建表名

    [not null 非空 unique 唯一 primary key 主键 auto_uncrement 自增 constraint worker_fk foreign key(d_id) 存在外键约束worker表中的d_id字段 references department(d_id) 依赖department表的d_id字段(department为父表) create table student(num int(10) not null unique primary key, name varchar(20) not null, sex varchar(4) not null, address varchar(50)); ]

    [grade表的外检s_num字段依赖于student表的num字段,默认的存储引擎为InnoDB ]

    3.增加字段

    3.1 表的第一个位置增加字段

    3.2 表的指定位置之后增加字段

    3.2.1 在student表添加phone字段,数据类型为int(10)

    5.表中插入数据

    方式一:insert into 表名(id,name,age,info) values(1,‘Green’,21,‘Lawyer’);方式二:insert into person values(2,‘aaa’,18,‘MAN’); 插入多条数据

    6.索引

    创建普通索引

    创建唯一索引

    结果可以看到,ID字段上已经建立idex2_id的索引,这里的id字段可以没有唯一性索引,也可以创建唯一索引,但是这样可以达不到查询速度的目的。

    创建全文索引

    如果表的存储引擎不是MyISAM,系统会提示:ERROR 1214(HY000):The used table type doesn’t support FULLTEXT indexes,.目前只支持MyISAM

    创建单条索引

    subject 字段长度为20,而index4——st索引长度只有10,这样做的目的还是为了提高查询速度

    创建多条索引

    name和sex字段上已经建立了一个名为index5_ns的单列索引,多列索引中,只能查询条件中使用了这些字段中第一个字段时,索引才会被使用,用wxplain语句可以查看索引的使用情况,如果只是有name字段作为查询条件进行查询,显示结果如下:

    possible_key和key的值都是index5_ns,额外信息(Extra)显示正在使用索引,这说明name字段进行索引时,索引index5已经被使用,如果只使用sex字段查询条件进行查询,显示结果如下:

    possible_key和key的值都是NULL,额外信息(Extra)显示正在使用where条件查询,为未使用索引。

    创建空间索引

    值得注意的是,space字段是非空的,而且数据类型是GEOMETRY类型,这个类型是空间数据类型,空间类型包括geometry、point、linestring和polygon类型

    在已经存在的表上创建索引

    普通索引

    唯一索引

    index8_id为索引的名词,unique用来设置索引为唯一性索引,表car中的num字段可以有唯一性约束,也可以没有。

    创建全文索引

    创建单列索引

    创建多列索引

    二.改

    1.修改表名

    将grade表改名为gradeinfo

    2.修改表字段的数据类型

    修改grade表的course字段的数据类型改为varchar(20)

    3.修改字段名

    修改字段名name改为names

    4.修改字段的排列位置

    表的字段修改到第一个位置

    字段修改到指定位置,将s_num字段的位置改到course字段前面

    5.更改表的存储引擎

    执行alter table 语句更改存储引擎

    6.修改数据表以及字段的编码

    数据表编码修改:alter table table DEFAULT CHARACTER SET utf8;

    字段编码修改:alter table tablename convert to character set utf8;

    7.update更新语句

    替换person1表中的name字段,把苏苏改成苏小妹

    将所有人的年龄增加 1

    三.查

    1.查找数据库列表

    [ 第一种:show tables;]

    [ 第二种:select table_name from information_schema.tables where table_schema=‘当前库名’;]

    2.查询数据表的所有数据

    select * from 表名

    可以改变字段显示的顺序,例如,可以将d_id字段显示为最后一列

    3.查询表的结构

    A表存储引擎(ENGINE)为InnoDB

    .使用show语句查询MySQL支持的存储引擎

    4.使用where语句查询表中的数据

    BINARY 关键字

    带in关键字查询

    not in关键字查询

    between and 关键字查询

    not between and关键字查询

    5.like语句

    ’北京%’ 以北京开头的数据记录

    ’%5’ 表示address中以“5”结尾的所有数据行;

    ’%5%’ 表示address中“5”这一个字的所有数据行;

    ‘a’ //三位且中间字母是a的‘_飞’ //两位且结尾字母是飞的,例如:张飞

    ‘Ar_c’ 表示name中以“Ar_c”开头的所有数据行

    not like关键字查询 6.find_in_set、locate语句

    find_in_set是精确匹配,字段值以英文”,”分隔, 注意 find_in_set 是全表扫描的

    locate语句后面设置<0, >0 , =0的区别:

    and的多条件查询

    使用<,=运算符,其中=号可以用like替换

    使用in,between,and和like关键字,还使用了通配符%,结果中显示的记录同时满足这3个条件表达式

    or的多条件查询

    多条件满足其中一条,就可以被查询出来 使用or关键字查询employee表中的记录,查询条件为num取值(1.2.3)这个集合中,或者age从24-25这个范围,或者homeaddr的取值中包含’北京市‘,只要满足这三个条件中的任何一个,这样的记录将被查询出来。

    and和or一起使用时,and要比or先运算

    7.不重复查询 8.对查询结果排序

    从son表中查询出age小于24的记录,按照id字段降序的顺序进行排列

    9.分组查询

    group by关键字与group_concat()函数一起使用

    group by关键字与count()集合函数一起使用

    group by 和having使用:employee表的sex字段进行分组查询,显示记录数大于等于3的分组

    group by 和with rollup使用,使用count()计算每组的记录数

    使用group_concat()函数查看每组的name字段的值,并加上with rollup

    limit限制查询结果的数量

    0为第一条数据,3为显示三条数据

    10.使用集合函数查询

    count()函数

    sum()函数

    计算表中某人的总成绩 select 字段名1,sum(字段2) from 表名 where 字段1=值; 统计各分组的总成绩 select 字段名1,sum(字段2) from 表名 group by 字段名1

    AVG()函数

    计算表中平均年龄

    计算表中不同名称的平均值

    select 字段名1,AVG(字段名2) from 表名 group by 字段名1;

    max()函数

    计算表中的最大年龄

    计算不同名称的最高值

    select 字段1,字段2,max(字段3) from grade group by course;

    min()

    计算表中的最小年龄

    计算表中不同名称的最小值

    select 字段1, min(字段2) from grade group by 字段1;

    11.连接查询/子查询/合并查询

    11.1 内连接查询

    11.2外连接查询

    11.2.1 做连接查询 11.2.2 右连接查询 内连接查询以升序方式显示

    11.3子查询

    带in关键字的子查询

    带比较运算符的子查询

    查询一等奖的学生 查询哪些部门没有为年龄24岁的员工 <>和!=是等价的

    带exists关键字的子查询

    exists表示存在,查询为d_id为1003的记录 使用exists和and使用

    带any关键词 any表示满足其中任意条件,可通过该条件来执行外层查询语句 带all关键字的子查询 all表示满足所有条件,才可以执行外层查询语句

    11.4 合并查询结果

    union连接查询两表之间的所有值

    union all查询结果合并在一起

    11.5 为表和字段取别名

    为表取别名

    为字段取名 11.6 正则表达式查询

    以特定字符或字符串开头的记录

    以特定字符或字符串结尾的记录

    用符号‘.’来代替字符串中的任意一个字符

    匹配指定字符中的任意一个

    使用[]可以指定集合的区间,如[A-Z]

    匹配指定字符以外的字符

    匹配指定字符串

    四.删 1.删除数据库 drop database <数据库名>;

    2.删除数据库表 DROP TABLE 表名 ;

    3.删除被其他表关联的父表 drop table 表名(删除失败的话,需要先删除表的外键约束) 删除grade表的外键约束 删除失败,结果显示为外键约束现在了本次操作,为了更改存储引擎,先将外键约束删除 alter table 表名 drop foreign key 别名执行成功,为了确认外键是否删除,执行show create table来查看 show create table 表名\G(查询表的外键别名)

    4.删除表内数据 delete from 表名 where 删除条件;

    5.删除字段 删除student中的address字段

    最新回复(0)