鱼C论坛

 找回密码
 立即注册
查看: 2623|回复: 0

[学习笔记] Mysql

[复制链接]
发表于 2017-9-11 23:20:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 chun888 于 2017-9-12 12:52 编辑

环境变量:path:C --->  \Program Files (x86)\MySQL\MySQL Server 5.0\bin;

如果想字段里弄中文,或者识别中文就要改:
                                my.init  里面的default-character=gbk   和character-set-server=gbk 。数据库也可以右键里面改

*************************************
登陆:mysql -u root -p abc;
                名     密码


卸载:        1、停止mysql
        2、卸载mysql
        3、找到mysql安装目录下的my.ini                -->datadir='c:/programdata/mysql/mysqlserver5.5/data/'

①.数据库(DB)文件系统
②.数据库管理系统(DBMS)

SQL:结构化查询语言。

SQL优点:几乎所有重要的数据库管理系统都支持ssql。

SQL的分类:
        DDL:数据定义语言                DCL数据控制语言
        DML数据操作语言                        DQL数据查询语言
  --- DDL 用于描述数据库中要存储的现实世界实体语言。即创建数据库和表的结构。
  --- DML 数据操作语言,用来定义数据库记录。(数据)
  --- DCL 数据控制语言,用来定义访问权限和安全级别。
  --- DQL数据查询语言,用来查询记录。(数据)数据库执行DQL语句,不会对数据进行改变,而是让数据库发送结果集给客户端。返回的结果是一张虚拟表。



数据库系统 ==数据库(DB)+数据库管理系统(DBMS)


关键字概念:
        ①列:字段。        ②行:一条记录(实体)。       
       


*************************************

0、创建数据库
create database 数据库名;

1、查看当前数据库服务器中的所有数据库
show database;


2、删除前面创建的数据库
drop database 数据库名;

3、查看当前使用的数据库
select database();

4、把“数据库”的字符集修改为utf8
alter database 数据库名 character set utf8;

5、查看指定的数据库,并且查看字符集信息内容
show create database 数据库名;

6、切换数据库
use 数据库名;

7、创建表
create table 表名 (字段1 字段类型,字段2 字段类型,字段3 字段类型);

8、查询当前数据库的所有表
show tables;

9、查看表的字段信息
desc 表名;

10、添加列(字段)
alter table 表名 add 列名 列类型;

11、修改数据库
alter table 表名 modify 列名 修改类型;

12、删除只能删除一列
alter table 表名 drop 列名;

13、表名改为user
rename table 表名 to 修改后的名;

14、查询表中的所有数据
select *from 表名;

15、插入操作
insert into 表名(列名1,列名2) values(列值1,列值2);
insert into mo(class_id,class_name) values('2','2');

        --注意:列名与列值的类型、个数、顺序要一一对应
                可以把列名当做java中的形参把列值当做实参
                值不要超出列定义的长度
                如果插入空值,清使用null
                插入日期用字符一样

16、修改操作
update 表名 set 列名1=列值1,列名2=列值2.... where 列名=值;
        [将姓名为‘tom’的员工薪水修改为300元 ---> update emp set salary=300 where name='tom']

17、删除操作
delete from 表名 [where 列名 =值];        **整一行都删除**
        注意:删除表中名称为‘tom’的记录 -->delete from emp where name='tom';
                删除表中的所有记录 -->delete from emp;
                        使用truncate删除表中记录 --> truncate table emp;
                                delete删除表中的数据,表结构还在;删除互殴的数据可找回;
                                truncate删除是把表直接drop掉,然后在创建一个同样的新表,删除的数据不能找回,执行速度比delete快;

18、查询指定列
select 列1,列2 from 表;



=======================================================================================================
常用的数据类型:
                int整型。
               
                double浮点型(例如:double(5,2)表示最多5位,其中必须有2位小数)

                char:固定长度字符串类型:char(10)                                【不用带双引号】

                text:字符串类型

                blob:字节类型                                                        【带双引号】

                time:时间类型(hh.mm:ss)

                varchar:可变长度字符串类型

                date:日期类型,格式为yyy-mm-dd


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
条件查询介绍
        条件查询就是在查询时给出where子句,在where字句中可以使用如下:
                ①=、!=、<>、<、<=、>、>=;        ②IS NOT NULL;                ③in(set);
                ④is null;                        ⑤and;                        ⑥or;
                ⑦not;                                ⑧between...and;

⑧的用法:
        ①select *from 表名 where age>=20 and age<=40;
            ②select *from 表名 where age between 20 and 40;

①的用法:查询性别非男生的记录:
                ①select *from stu where gender!='male';
                ②select *from stu where gender<>='male';

②的用法:查询姓名不为null的学生记录
                select *from stu where name is not null;

查询性别为女,并且年龄>=50的记录
        ①select *from stu
        ②where gender='female'and age>50;

一样的结果,不一样的是第一条可以添加><= 第二条不可以。
        ①select *from stu where sid='s_lool' or sid='i';
        ②select *from stu where sid in('s_lool','i');

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
模糊查询
        当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字like

通配符:“_”代表任意一个字符        “%”代表任意0~n个字符

‘张%’ 《==》张三四,张三丰,...
‘_张’ 《==》我张,似张,...

语法:where 表名 like ();


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
字段控制查询
        字段重复数据
                去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如emp表中sal字段就存在相同的记录。当只查询emp表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用‘distinct’

语法:        select distinct 列 from 表名;

        select distinct 列,列 from 表名;
                   ↓
        两列中都相同才会去掉,如有一不相同都不去掉。

注意:任何数值与null相加减结果等于null

题:
        查看雇员的月薪8佣金之和       
        select ifnull(commm,0) from emp;
                        是  否

给列起别名
        select sal+ifnull(comm,0) as 别名 from 表名




。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
排序
              升                   降
order by 列名 asc(默认) desc
       
        ①查询所有学生记录,按年龄升序
        select *from 表名 order by 列名 asc;

        ②查询所有雇员,按月新降序,如果月薪相同时,按照编号升序排序。
        select *from 表名 order by 列,列 desc;



。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
集合函数
        和        平均        最大        最小        行数
        sum        avg        max        min        count

①集合函数是用来做纵向运算的函数;
              *代表所有
select count(age) from stu;

②查询相关关键字的顺序
select from where order by



。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
分组查询
        当前要分组查询时需要使用group by 子句,例如查询每个部门的工资和。这说明要使用部分来分组。

①查询男生人数和女生人数
        select *from stu where gender='male' or gender='female';
        select *from stu where gender is nut null group by gender;

②查询各部门的人数
        select deptno,count(*) from emp group by deptno;
                  |                                   |
        注意:凡和集合函数同时出现的列名,则一定要写在group by 之后。

③查询每个部门的部门编号和每个部门的工资和
        select deptno,sum(sal) from emp group by deptno;

④查询每个部门的部门编号以及每个部门的人数
        select deptno,count(*) from emp group by deptno;

⑤查询每个部门的部门编号以及每个部门工资大于1500的人数
        select deptno,count(*) from emp where sal>1500 group by deptno;

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
having子句
        用来作分组后的条件。
  -- having 与where的区别:
        1、having是在分组后对数据进行过滤。
           where是在分组对数据进行过滤。

        2、having后面可以使用分组函数(统计函数)
           where后面不可以使用分组函数。
        where是对分组前记录的条件,如果某行记录没有满足where子句的条件,那么这行记录不会参加分组,而having是对分组后数据的约束。
        ①查询工资总和大于9000的部门编号以及工资和:
        select 字段 ,sum(sal) from 表 group by deptno having sum(sal)>9000;
       
select 字段,sum(sal);

未看完


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

limit 方言
        limit用来限定查询结果的起始行,以及总行数。
select * from 表 limit 0,3 --第一个参数,从第几行查询,第二个参数,查几行。


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
数据的完整性
        作用:保证用户输入的数据保存到数据库是正确的。
        确保数据的完整性= 在创建表时给表中添加约束
  完整性的分类:
        实体完整性;行
        域完整性;  列
        引用完整性;

实体完整性
        实体:即表中的一行(一条记录)代表一个实体。
        实体完整性的作用:标识每一行数据不重复。

约束类型:①主键约束(primary key)、②唯一约束(unique)、③自动增长列(auto_increment)。
        -- 主键约束
                注意:每个表中要有一个主键。
                特点:数据唯一,且不能为null。

例如:
第一种添加方式:
        create table student(
                id int primary key,
                name varchar(50)
                );

第二种添加方式,此种方式优势在于,可以创建联合主键

【两个主键,且内容不能相同,但不能理解成两个主键,相当于1+1=联合主键】
  
        create table student(
                classid INT,
                id int,
                name varchar(50),
                primary key(id,classid)
                );

第三种添加方式:
        create table student(
                id int,
                name varchar(50)
                );
                alter table student add primary key(id);
                                        随起

-- 唯一约束
        唯一约束:不能重复,重复报错,可以空值。跟主键相同不能重复却不能像主键那样。
        create table student(
                id int primary key,
                name varchar(50) unique
                );


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
自动增长列 Mysql(auto_increment)
        sqlserver数据库(identity)                oracle数据库(sequence)

给主键添加自动增长的数值,列只能是整数类型
        create table student(
                id int primary key auto_increment,
                name varchar(50) unique
                );

本帖被以下淘专辑推荐:

  • · Mysql|主题: 1, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 05:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表