1、登录连接数据库。 mysql -u root -p
2、显示帮助命令清单。 mysql> \h; //(加分号和不加分号结束都不影响命令执行) 3、清除当前输入的语句(命令)。 mysql> \c
4、查询当前安装的MySQL服务器的版本号。 mysql> select version();
5、查看MySQL服务器状态信息(包含版本号,下面两个命令执行效果相同)。 mysql> status; //(加分号和不加分号结束都不影响命令执行)
mysql> \s
6、退出数据库。 mysql> \q; //(加分号和不加分号结束都不影响命令执行,会返回一个Bye)
7、数据库的导入导出。 导出数据库:mysqldump -u 用户名 -p 数据库名>数据库名.sql 导入数据库:source 数据库名.sql 8、显示所有数据库。 mysql> show databases; //(注意,最后有个s)
9、选择数据库。 mysql> use 数据库名; //会返回Database changed
10、查看当前选择的数据库中的所有的表 mysql> show tables; //(注意,最后有个s)
11、查看当前选择的数据库。 mysql> select database(); 一、DDL:数据定义语言 (Data Definition Language) 作用:定义数据库或者表结构的。
操作的对象:数据库或表的结构的。
关键字:CREATE、 ALTER、 DROP 1、创建数据库。 mysql> create database 数据库名; //如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句执行失败。 2、删除数据库。 mysql> drop database 数据库名; 3、创建表结构。 mysql>create table 表名(列名 列的数据类型 [<列的完整性约束>],列名 列的数据类型 [<列的完整性约束>],......); deptno int(11) primary key, //部门编号,int型,主键约束 deptname varchar(12) unique //部门名称,varchar类型,唯一性约束 ); 附:常用约束: a)主键约束:primary key --非空且唯一,一张表就定义一个主键 b)主键自增长:auto_increment c)非空:not null --不允许插入null值,可定义多个非空约束 d)唯一性:unique --不允许重复,但可以为空,可定义多个唯一约束 e)默认值:default 默认值 --指定缺省值,在没有添加值得情况下使用default后指定的默认值 f)外键:foreign key(列名) references 外键表名(外键列名); //注意:有外键时,创建表,先创建父表,再创建子表;插入数据,先插入父表,再插入子表;删除数据,先删除子表中的数据,再删除父表中的数据。 4、查看表结构。(下面三种方式实现效果相同) mysql> desc 表名; //常用
mysql> describe 表名;
mysql> show columns from 表名; 5、修改表的名称。(下面两种写法都可以实现修改表名) mysql> alter table 原表名 rename to 新表名;
mysql> rename table 原表名 to 新表名; 6、修改表的编码字符集。 mysql>alter table 表名 character set 字符集; 7、向表中添加新的列。 mysql> alter table 表名 add <column> 列名 列的数据类型 [<列的完整性约束>];//column可省略 8、修改表中的某一列。 a)修改表中某一列的列名(同时可修改列的数据类型) mysql>alter table 表名 change 原列名 新列名 列数据类型;
b)修改表中某一列的数据类型 mysql>alter table 表名 modify 列名 列新的数据类型; 9、删除表中的某一列。 mysql>alter table 表名 drop <column> 列名; //column可省略 10、删除表。 mysql>drop table 表名;
mysql>truncate 表名; 二、DML: 数据操作语言(Data Manipulation Language)
作用:操作表中的数据的。
关键字:INSERT、 UPDATE 、DELETE
1、向表中插入数据(每一行数据就是一条记录),以下三种插入数据的方法皆可。 mysql>insert <into> 表名 values(列值1,列值2,......); //into可以省略,插入的顺序必须和建表的顺序对应。
mysql>insert <into> 表名 (列名1,列名2,......)values(列值1,列值2,......); //建议使用
mysql>insert <into> 表名 values(列值1,列值2,......),(列值1,列值2,......),......;//一次性插入多条数据 2、修改某一列的所有字段值为新的字段值。 mysql>update 表名 set 列名=新字段值;
mysql>update 表名 set 列名=新字段值,列名=新字段值...; 3、修改某一条记录的字段值。 mysql>update 表名 set列名=新字段值 where 列名=字段值;
mysql>update 表名 set 列名=新字段值,列名=新字段值... where 列名=字段值; 4、删除表中的某一条记录。 mysql>delete from 表名 where 列名=列值;
例:删除学生表(student)中名字(sname)为'张三'的学生的记录 mysql>delete from student where sname='张三'; 5、删除表。 mysql>delete from 表名;
附:drop、truncate、delete的区别? a)drop和truncate是DDL,而delete是DML。 b)truncate和delete只删除数据,不会删除表的结构,而drop会把数据和表结构都删除。 c)delete可以带where有条件的删除,可以回滚(rollback),但删除速度较truncate较慢。而truncate则不可以删除特定的数据,也不可以回滚(rollback),但删除速度比delete快。 三、DQL:数据查询语言(Data Query Language)
关键字:SELECT
1、查询表中所有的记录。 mysql> select * from 表名; //*指代表中所有的列
mysql> select 列1,列2,... from 表名; //将表中所有的列都写出来和上面效果相同。 2、查询表中的某一条记录。 mysql>select * from 表名 where 列名=字段值; 3、过滤表中重复的数据(关键字distinct) mysql>select distinct 列名 from 表名; //返回该字段下的所有字段值,若有相同字段值,则只返回一个。 4、排序(关键字order by)。 mysql>select * from 表名 order by 列名 asc; //升序(默认),asc可省略不写。
mysql>select * from 表名 order by 列名 desc; //降序
例:按照学生表(student)中学生成绩(grade)的由高到低顺序输出学生的学号(sno)、姓名(sname)和成绩(grade). mysql>select sno,sname,grade from student order by grade desc; 5、分页查询(关键字limit)。 mysql>select * from 表名 limit (pageNo-1)*pagesize,pagesize; // pageNo-->要查询的页数,pageSize-->每页显示的记录数
例:查询dept表中第一页(每页2条数据)的记录。 mysql>select * from 表名 limit 0,2; 6、模糊查询(关键字like)。 mysql>select * from 表名 where 列名 like ' % '; //%指代任意字符
例:查询学生表中姓名第二个字为阳的学生信息。 mysql>select * from student where sname like '_阳%'; //_指代一个字符 7、范围查询(关键字between .. and .. , in())。 mysql>select * from 表名 where 列名 between 字段值(小) and 字段值(大);//包含两端的字段值
mysql>select * from 表名 where 列名 in (字段值1,字段值2,......);
例如:查询学生表(student)中语文成绩chinese在80~90分之间的所有学生信息(包含80和90)
mysql>select * from student where chinese between 80 and 90;
例如:查询学生表(student)中数学成绩math为60分,70分,80分和90分的所有学生信息。
mysql>select * from student where math in (60,70,80,90); 8、使用别名。 mysql>select 字段名 <as> 别名,字段名 别名,... from 表名; //as可省略
例如:查询学生成绩表(sc)中学生姓名(sname)及总成绩,sname字段用姓名表示,所有科目得分总和用总分表示。
mysql>select sname as 姓名,chinese+math+english 总分 from sc; 9、分组查询(关键字group by)。 mysql>select 列名,count(列名) from 表名 group by 列名; having:对分组后的结果进行条件限制
10、表连接查询(同时涉及多个表的查询称为连接查询,用来连接两个表的条件称为连接条件)。 内连接:表1 join 表2 on 表1.列名=表2.咧名; mysql> select empno,empname,emp.deptno,deptname from emp join dept on emp.deptno=dept.deptno;
左外连接:表1 left join 表2 on 表1.列名=表2.列名;
表1作为主表,主表中的所有记录都会输出,和从表匹配不上的字段用null进行补齐。 右外连接:表1 right join 表2 on 表1.列名=表2.列名;
表2为主表,主表中的所有记录都会输出,和从表匹配不上的字段用null进行补齐。 11、表的复制。 mysql>create table 新表表名 select * from 被复制表表名; mysql>create table 新表表名 select 列名1,列名2,... from 被复制表表名;
mysql>create table 新表表名 select * from 被复制表表名 where 0=1;
12、聚合函数。 a)返回指定列非空值的个数 mysql>select count(列名) from 表名; b)返回指定列的最值
mysql>select max(列名) from 表名; mysql>select min(列名) from 表名; c)返回指定列的平均值
mysql>select avg(列名) from 表名; d)返回指定列的所有值之和
mysql>select sum(列名) from 表名;
|