一、数据库操作
- 登录数据库:mysql -u root -p 密码
- 创建数据库:create database 数据库名称;
- 选择数据库:use 数据库名称;
- 查看所有数据库:show database;
- 删除数据库:
二、表格操作
- 查寻数据库所有表格:show tables;
- 创建表格:create table 表名(字段名1 字段类型 约束条件,字段名2.............);
- 增加表格字段:alter table 表名 add(字段名1 字段类型 约束条件............);
- 修改字段名:alter table 表名 chanage 旧字段名 新字段名 新数据类型;
- 删除表格字段:alter table 表名 drop 字段名;
- 修改字段类型:
- 增加字段约束条件:
- 删除字段约束条件:
- 删除表格:drop table 表名 restrict(删除无限制条件的的表)/cascade(删除表的同时删除有关联的内容一起被删除);
三、索引操作(index):
- 查看表中已经存在的索引:show index from 表名;
- 创建:Create uinque index 索引名 on 表名(列名);
- 修改索引名:alter index 旧索引名 rename to 新索引名;
- 删除:drop index 索引名 on 表名
四、查寻基本操作
- 数据查询一般格式:select 查寻内容 from 表名或者视图名 where 限制条件 group by 列名 order by 列名
- 查询内容:所有(*),字段名称,聚集函数。
- from中内容:表名、视图名、嵌套语句。
- 限制条件:条件表达式,嵌套语句、
- group by含义:结果按照列名进行分组即列值相等的为一组。并且group by 自带having即只有满足条件的才能输出。
- order by含义:结果按列值进行升序(asc)或降序(desc)输出。
- 单表查询
- 选择表中若干列: select 列1,列2 from 表名
- 查寻全部列: select * from 表名
- 查寻经计算的值: select 2014-列名 from 表名
- 消除重复行: select distinct 列名 from 表名
- 查寻满足条件的元组:select 列名 from 表名 where 条件
- order by 子句:可以设置多个列
- 聚集函数:(where子句中不能使用)
- count(*) 统计元组个数
- count(列名) 统计一列中值的个数
- sun(列名) 计算一列值的总和(必须是数值型的)
- avg(列名) 计算一列的平均值(必须是数值型的)
- max(列名) 求一列的最大值
- min(列名) 求一列的最小值
- group by 子句 having(条件)
- 连接查询
- 等值与非等值连接查寻 where语句中:select * from 表1,表2 where 表1.列1=表2.列2
- 自身连接 首先为表取两个表名first,second:select first.列名,second.列名 from 表名 first,表名 second where first.列名=second.列名
- 外连接(左连接:列出左边所有关系,若右边无对应则以空值的形式输出) select * from 表1 left outer join 表2 on/using(表1.列1=表2.列2);我们也可用利用using去除结果中的重复值;
- 多表连接 主要是利用and和偶or连接
- 嵌套查询
- 带有in的子查询(有内往外逐级输出)
- 带有比较运算符的子查询:注意子查询结果只有一个是可用=代替in
- 带有any或all的子查询:
- >any 大于子查询结果的某个值
- >all 大于子查询结果的某些值
- <any 小于子查询结果的某个值
- <all 小于子查询结果的某些值
- >=any 大于子等于查询结果的某个值
- >=all 大于子等于查询结果的某些值
- <=any 小于等于子查询结果的某个值
- <=all 小于等于子查询结果的某些值
- =any 等于子查询结果的某个值
- =all 等于子查询结果的某些值
- !=any 不等于子查询结果的某个值
- !=all 不等于子查询结果的某些值
- 带有exists的子查询:他不返回任何数据,只产生true和false;主要是用来判断子查询结果是否为空
- 集合查寻
- 并交差(union intersect except) 例如 select *from 表名 where 条件 union select *from 表名 where 条件
- 基于派生表的查寻 select sname from 表1,(select sno from 表2 where cno='1') as 派生表名 where 条件 ;as为的意思即(select sno from 表2 where cno='1')关系的表名为 派生表名。
五、数据更新操作
- 插入数据
- 插入元组(一次仅能插入一个元组) insert into 表名(对应列名) values(对应值); 若无指定列名,新插入的元组必须在没个属性列上均有值。
- 插入子查询结果(一次操作可插入多个元组) insert into 表1(对应列1) select 对应列1 from 表2 ......
- 修改数据
- 修改某一元组值 update 表名 set 列=某某(修改部分) where 条件
- 修改多个元组值(某列同时增减某个数) update 表名 set 列名=列名+1
- 带子查询的修改语句 update 表名 set 列名=某某 where 条件
- 删除数据
- 删除某一元组值 delete from 表名 where条件
- 删除多个元组值 清空表(delete from 表名)
- 带子查询的删除语句 delete from 表名 where 列名 in (子查询)
六、视图操作
- 创建视图 create view 视图名(列名) as 子查询(为哪个表的哪些字段建立视图),例如:create view 视图名as select * from 表名 where条件 with check option ;如加上with check option这句话,我们以后对视图操作时 必须满足定义的where 条件。
- 删除视图 drop view 视图名
- 查询视图 与表格一致
- 更新视图 不常用
- 视图与表的区别
七、用户授权操作
八、数据库完整性操作
注:
- 查看mysql版本,cmd进入mysql下的bin目录:mysql --help | find "Distrib"或者mysql -V。
- 基本语法:
- create 创建; drop 删除; alter 修改;
- table 表格 ; index索引; view 视图; schema 模式。
- 条件:
- 比较大小 > < = >= <= !=或<> !>(不大于) !<(不小于)。
- 确定范围 between ..(下界)...and...(上界). not between.......and......。
- 确定集合 in 属性值属于指定集合的元组 例如:select * from 表名 where 列名 in ('值1','值2','值3')。
- 字符匹配 like %代表任意长度 _代表单个字符 例如:select * from 表名 where 列名 like '_刘%'(如何查找字符含有_或%,此时要使用\来转换)。
- 涉及空值的查询(例如查寻没有参加考试的学生) select * from 表名 where 列名 is NULL; 注意is不能用=代替。
- 多重条件查询 and >or 例如 :select * from 表名 where 列名1=' ' and 列名2=' '。
- order by和group by 只能对最终结果进行操作,不能用于子查询中。
- 派生表是指当子查询出现在from中,子查询会临时生成一个表叫派生表