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表改名为gradeinfo2.修改表字段的数据类型
修改grade表的course字段的数据类型改为varchar(20)3.修改字段名
修改字段名name改为names4.修改字段的排列位置
表的字段修改到第一个位置 字段修改到指定位置,将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字段,把苏苏改成苏小妹 将所有人的年龄增加 11.查找数据库列表
[ 第一种: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字段