zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    C#获取Excel Sheet名称,对特殊字符、重名进行了处理
    10个你必须知道的jQueryMobile代码片段
    HTML 5 学习之应用程序缓存
    JS取地址栏参数的两种方法
    关于AJAX+HTML5+ASHX进行全静态页面的数据交互
    重病后的重生
    非常值得学习的java 绘图板源代码
    C#开发者通用性代码审查清单
    【week3】四人小组项目—东师论坛
    【week2】结对编程-四则运算 及感想
  • 原文地址:https://www.cnblogs.com/nicker/p/6651909.html
Copyright © 2011-2022 走看看