最初学习mysql的一些操作留存

一:数据库的初始话操作

mysql -u root -p    //数据库的登陆
show databases;    //展现数据哭中存储的所有文件
use 数据库名;        //进入当前要错做的数据库中
creat database 数据库名;    //创建一个新的数据库文件
drop database 数据库名;    //删除已经存在数据库文件

二:数据库的表操作
//为当前选定的数据库创建一个表
 create table t_user(
 id int,
 name varchar(20),
 sal double(5,3),
 birthday datetime,
 hiredata timestamp
 );
 
 show tables;//查看所有表名
 desc 表名;    //查看表名中存放的数据
 drop table 表名;//删除选择的表
 alter table 表名 add 列名 类型;//给选定的表增加一行新的信息
 alter table t_user add newname varchar(20);
 
 alter table 表名 modify 列名 类型;//将原有的列类型进行修改
 alter table t_user modify newname photh;
 
 alter table 表名 change 旧的列名 新的列名 数据类型;//将列名更改
 alter table t_user change  newname image varchar(20);

 alter table 表名 drop 列名;
 alter table t_user drop image;
 
 rename table 旧表名 to 新表名;
 rename table t_user to t_empoyee;
 
 三:列的约束
         保证数据的完整性
         1、非空约束    not null 指定非空约素的列,再插入记录时,必须包含值。
         2、唯一约束 unique        该列的内容在表中,值是唯一的
         3、主键约束    primary key
                                                     当想要吧某一列的值,作为该列的唯一标识符,可以指定主键约素。
                                                     注意:一张表中只能有一个主键约素
 
 四:对表中的数据进行增删改查
         1、为表添加数据
             insert into 表名[(列名1,列名2)] values (值1,值2);
             
             insert into t_user(name,email) values('tom','tom@163.com');
             insert into t_user valuse ('神殇','1179672922');
         
         修改存储编码:
                 set character_set_client=gbk;
         修改结束数据
                 set character_set_results=gbk;
         
         2、修改表中存储的数据
            update 表名 set 列名='新的数据',列名='新的数据' while 条件
             update 表名 set name='新的数据' while id=3;
                     上面的翻译:当数据库中某项内容的id 为3的时候将这一项中的name存储的信息修改为‘新的数据’
             多项那内容修改:
                 update employee set salary=4000,job='sss' while name='zs';
             对未知属性修改
                 update employee set salary=salary+1000,job='ddd' while name='ww';
                 
        3、删除表记录
            delete from 表名 while 条件
            delete from emeployee while name='rose';//删除指定的表数据
            delete from employee;    //删除表中的所有数据-->注意这种删除不是在文件中完全删除,可以进行恢复
            实例:
                delete from employee while name="ww";
            删除整张表的数据:
                truncate table employee;    //-->注意这种删除是从硬盘上将表数据完全删除掉,不可恢复
            

。;        
        4、DQL语句(DML) 查询语句 --> 重点
            语法:
                select selection_list     要查询的列名称
                from table_list     要查询的表名称
                while condition        行条件
                group by grouping_columns     对结果分组
                having condition     分组后的行条件
                order by sorting_colums        对结果排序
                limit offset_start, row_count        结果限定
                
            自己使用实例:
                1、select * from 表名        // 查询表中的所有数据
                     select 列名,... from 表名//查询表中某一列或多列的数据
                条件查询:
                    条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
                    ?    =、!=、<>、<、<=、>、>=;
                    ?    BETWEEN…AND;
                    ?    IN(SET)/NOT IN(SET)    //set表示集合,代表多种条件的判断的集合
                    ?    IS NULL/IS NOT NULL
                    //---条件连接符
                    ?    AND; &&
                    ?    OR;  ||
                    ?    NOT; !
            例子:查询性别为女,并且年龄小于50的记录
                select * from stu where gender='female'  and age<50;
                
                模糊查找
                    where 字段 like '表达式';
                    % => 通配 通配任意个字符(指的是任意长度的任意一段字符)
                    _ => 通配 通配单个字符    (值得是一个长度的任意一个字符)
                    说明:like 条件后 根据模糊查询表达式,"_"==>代表一个任意字符
                
                排序
                    关键词:order by
                    升序:asc
                    降序:desc
                    语法:列名 order by 升降序
                    
                    
    limit mysql专属语言
        limit用于限定查询结果的起始行,以及总行数
        例子:
            查询5行记录,从0行开始
            select    * from emp limit 0,5;
            
            查询10行记录,从3行考试
            select * from emp limit 3,10;
            
            如果一页记录为5条,希望查看第3页记录:
                select * from limit 10,5;
                
                3.1查询姓名由5个字母构成的学生记录
    
    SELECT * FROM stu WHERE sname LIKE "_____";
    

3.2查询姓名由5个字母构成,并且第5个字母为“i”的学生记录

    SELECT * FROM stu WHERE sname LIKE "____i";

3.3 查询姓名以“z”开头的学生记录
说明: "%"该通配符匹配任意长度的字符.
    SELECT * FROM stu WHERE sname LIKE "z%";

3.4查询姓名中第2个字母为“i”的学生记录
    SELECT * FROM stu WHERE sname LIKE "_i%";


3.5 查询姓名中包含“a”字母的学生记录
    SELECT * FROM stu WHERE sname LIKE "%a%";


4.1  去重重复记录
    SELECT DISTINCT gender FROM stu;
    
4.2  查看雇员的月薪与佣金之和
    SELECT ename,sal+comm FROM emp;
    SELECT ename,sal+IFNULL(comm,0) AS "月收入" FROM emp;
    
4.3  给列名添加别名
    SELECT ename "姓名",sal+IFNULL(comm,0) "月收入" FROM em
    SELECT ename AS "姓名",sal+IFNULL(comm,0) AS "月收入" FROM emp;
    
5.1  查询所有学生记录,按年龄升序排序
    SELECT * FROM stu  ORDER BY age ASC;

5.2  查询所有学生记录,按照年龄降序排序    
    SELECT * FROM stu  ORDER BY age DESC;
    
5.3  查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序
    SELECT * FROM emp ORDER BY sal DESC , empno ASC;

SHOW DATABASES;
USE SECOND;
SHOW TABLES;
DESC emp;
SELECT * FROM emp;

6.1  COUNT
当需要总想统计时可以使用count().
    1>查询emp表中记录数:
        SELECT COUNT(*) FROM emp;
    
    2>查询emp表中有佣金的人数:
        SELECT COUNT(*)"数量" FROM emp WHERE comm IS NOT NULL AND comm>0;
    
    3>查询emp表中月薪大于2500的人数:
    
        SELECT COUNT(*)"人数" FROM emp WHERE sal>2500;
    4>统计月薪与佣金纸盒大于2500的人数:
        SELECT COUNT(*)"人数" FROM emp WHERE sal+IFNULL(comm,0) >2500;
        
    5>查询有佣金的人数并且有领导的人数:
        SELECT COUNT(*) FROM emp WHERE comm IS NOT NULL AND comm!=0 AND mgr IS NOT NULL;
        
6.2  SUM(计算总和)和 AVG(计算平均值)
当需要纵向求和使用 SUM()函数
    1>查询所有雇员月薪和:
        SELECT SUM(sal)"月薪和" FROM emp;
    2>查询所有雇员月薪和,以及所有雇员佣金和:
        SELECT SUM(sal),SUM(comm) FROM emp;
    3>查询所有雇员月薪+佣金和:
        SELECT SUM(sal)+SUM(comm)"总和" FROM emp;
    4>统计所有员工平均工资
        SELECT AVG(sal)平均工资 FROM emp;
        
6.3  MAX 和 MIN 
查询最高工资个最低工资
    SELECT MAX(sal),MIN(sal) FROM emp;
    
    
查询每个部门编号和每个部门的工资和
    SELECT deptno,SUM(sal) FROM emp GROUP BY deptno;
    
查询每个部门的编号及每个部门的人数:
    SELECT deptno,COUNT(empno) FROM emp GROUP BY deptno;
    
查询每个部门的编号及每个部门工资大于1500的人数
    SELECT deptno,COUNT(sal>1500) FROM emp GROUP BY deptno;
    SELECT deptno,COUNT(empno) FROM emp WHERE sal>1500 GROUP BY deptno ;
    
查询工资总和大于9000的部门编号及工资总和
    SELECT deptno,SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal)>9000;

posted @ 2019-05-10 14:48  邪爵神殇  阅读(220)  评论(0编辑  收藏  举报