Dev_Nick

导航

MySQL--数据库、数据表和数据的管理

数据库的管理

1、连接数据库指令:

$ mysql -u root -p   --用root用户登录数据库

提示密码后,输入密码,完成输入。

2、查看数据库指令:

mysql> show databases; --显示当前用户下的所有数据库

3、创建数据库指令:

mysql> create database test
    -> default character set utf8; --创建数据库名为test的数据库,默认字符集为utf-8

4、修改数据库指令(一般只修改数据库的默认字符集)

mysql> alter database test default character set gbk;     --修改数据库test的默认字符集为gbk

5、查看数据库的字符集

mysql> show create database test; --查看数据库的test的字符集

6、删除数据库指令:

mysql> drop database test; --删除数据库,数据库的名字为test

数据表的管理

1、查看数据库中含有的表

mysql> show tables;

2、创建表的指令:--创建表的时候要先切换到对应的数据库。

2.1 切换数据库指令:

mysql> use test; --切换到test数据库

2.2 创建表指令:

mysql> create table student(
    -> id int,
    -> name varchar(20),
    -> age int
    -> ); --创建student表,表中含有id,name,age三个字段。

3、查看表的详情指令:

mysql> desc student; --查看student表的表结构

4、修改表的指令:

4.1 修改表名:

mysql> alter table student rename to teacher; --把student表名改为teacher

4.2 添加表中的字段:

mysql> alter table teacher add column gender varchar(2); --在teacher表中添加gender字段

4.3 修改字段的名:

mysql> alter table teacher change gender tgender varchar(20); --把teacher表中的gender字段名改为 tgender,数据类型也改成了20个字符。

4.4 修改字段的数据类型:

mysql> alter table teacher modify tgender varchar(2); --把teacher表中的tgender的数据类型改为varchar(2)

4.5 删除字段

mysql> alter table teacher drop tgender; --删除teacher表中的tgender字段。

5、删除表

mysql> drop table teacher; --删除teacher表

数据的操作

1、插入数据

mysql> insert into student values(1,'zhangsan',20); --按照列全部插入
mysql> insert into student(id,name,age) values(1,'lisi',30); --插入指定列数据

注意:插入的时候一定要values的一定要和前面的列名一一对应,类名可以省略,省略之后代表插入所有列的数据。

2、修改数据

mysql> update student set id=2 where name='lisi';  --把名字为lisi的id给我2;

3、删除数据

mysql> delete from student; --删除表中的所有数据
mysql> delete from student where id=2--根据条件删除数据
mysql> TRUNCATE TABLE student; --删除表中的所有数据

truncate table 和 delete from的区别:

truncate table:

  1):不可以带条件删除

  2):即可以删除表的数据,也可以删除表的约束

  3):使用truncate table删除的数据不能回滚
delete from:

  1):可以带条件删除

  2):只能删除表的数据,不能删除表的约束

  3):使用delete from删除的数据可以回滚(事务)

4、查看数据

4.1 查询所有列

mysql> select * from student; --查看表中的所有数据。

4.2 查询指定列

mysql> select id,name from student; --查看指定列数据。

4.3 查询是添加常量列

mysql> select id,name,age,'one levele' as 'garde' from student; --增加grade列并赋值为one levele

4.4 查询是合并列

SELECT id,NAME,(servlet+jsp) AS '总成绩' FROM student; --合并servlet 和jsp 为一列

注意:合并列只能是数值类型。

4.5 去重查询

SELECT DISTINCT gender FROM student;
-- 另一种语法
SELECT DISTINCT(gender) FROM student;

4.6 条件查询--where关键字代表条件的开始

mysql> select * from student where name='zhangsan'; --根据条件查询所有列

查询时可以多条件查询:

1)逻辑条件查询: and、or

SELECT * FROM student WHERE id=2 AND NAME='李四'; -- 交集
SELECT * FROM student WHERE id=2 OR NAME='张三'; -- 并集

2)比较条件 :>   <   >=  <=  =  <>(不等于)     between and (等价于>= 且 <=)

SELECT * FROM student WHERE jsp>=75 AND jsp<=90;
-- 另一个语法
SELECT * FROM student WHERE jsp BETWEEN 75 AND 90; -- (包前包后)

SELECT * FROM student WHERE gender<>'';

3)判空条件:is null / is not null / =''  / <>''

SELECT * FROM student WHERE address IS NULL ;
-- 判断空字符串
SELECT * FROM student WHERE address='';

SELECT * FROM student WHERE address IS NULL OR address=''; -- (包括null和空字符串)

4) 模糊查询--like

   通常使用以下替换标记:
     % : 表示任意个字符
     _ : 表示一个字符

-- 需求: 查询姓‘张’的学生
SELECT * FROM student WHERE NAME LIKE '李%';

-- 需求: 查询姓‘李’,且姓名只有两个字的学生
SELECT * FROM student WHERE NAME LIKE '李_';

5) 聚合查询 --sum()  avg()  max()  min()  count()

-- 需求:查询学生的servlet的总成绩 (sum() :求和函数)
SELECT SUM(servlet) AS 'servlet的总成绩' FROM student;

-- 需求: 查询学生的servlet的平均分
SELECT AVG(servlet) AS 'servlet的平均分' FROM student;

-- 需求: 查询当前servlet最高分
SELECT MAX(servlet) AS '最高分' FROM student;

-- 需求: 查询最低分
SELECT MIN(servlet) AS '最低分' FROM student;

-- 需求: 统计当前有多少学生(count(字段))
SELECT COUNT(*) FROM student;

SELECT COUNT(id) FROM student;

注意:count()函数统计的数量不包含null的数据,使用count统计表的记录数,要使用不包含null值的字段。

一般聚合查询会和分组(group by)一块使用。

6)分页查询 --limit(开始行号,每页显示行数)

-- 需求: 查询第1,2条记录(第1页的数据)
SELECT * FROM student LIMIT 0,2;
-- 查询第3,4条记录(第2页的数据)
SELECT * FROM student LIMIT 2,2;
-- 查询第5,6条记录(第3页的数据)
SELECT * FROM student LIMIT 4,2;
-- 查询第7,8条记录 (没有记录不显示)
SELECT * FROM student LIMIT 6,2;

注意:

  分页规律公式:SELECT * FROM student LIMIT (当前页-1)*每页显示多少条,每页显示多少条;

7)排序查询 -- order by 字段 asc/desc

-- asc: 顺序,正序。数值:递增,字母:自然顺序(a-z)
-- desc: 倒序,反序。数值:递减,字母:自然反序(z-a)

-- 默认情况下,按照插入记录顺序排序
SELECT * FROM student;

-- 需求: 按照id顺序排序
SELECT * FROM student ORDER BY id ASC;
SELECT * FROM student ORDER BY id; -- 默认正序

SELECT * FROM student ORDER BY id DESC;-- 反序

-- 注意:多个排序条件
-- 需求: 按照servlet正序,按照jsp的倒序
SELECT * FROM student ORDER BY servlet ASC,jsp DESC;

8) 分组查询 -- group by 字段

-- 需求: 查询男女的人数
-- 预期结果:
  --  男   3
  --- 女   2
  -- 1) 把学生按照性别分组(GROUP BY gender)
  -- 2) 统计每组的人数(COUNT(*))
SELECT gender,COUNT(*) FROM student GROUP BY gender;

9) 分组条件查询 group by 字段 having 条件

-- 需求: 查询总人数大于2的性别
-- 1) 查询男女的人数
-- 2)筛选出人数大于2的记录(having)
--- 注意: 分组之前条件使用where关键字,分组之前条件使用having关键字
SELECT gender,COUNT(*) FROM student WHERE GROUP BY gender HAVING COUNT(*)>2;

 

posted on 2017-03-31 16:09  Dev_Nick  阅读(318)  评论(0编辑  收藏  举报