当前位置:首页>软件介绍>MySQL个人学习笔记 查询:
     
MySQL个人学习笔记

        一、mysql常见的数据类型: 

        int(8) 整形, 

        float(5,1) 浮点型,规定插入的值不超过5位数字,小数点后面带两位数字且小数点超出后会四舍五入, 

        double(5,2)一样是浮点型 

        decimal(5,2) 一样是浮点型。 

        char(8)字符型, 

        varchar(8)可变字符型。 

        date,values(‘2014-04-23’)或(20104423) 

        time,values(‘12:30:50’)或(123050) 

        year,values(2014) 

        datetime,values(‘1993-03-12 12:30:12‘)或(012) 

        null 类型。表示什么都没有。 null 不等于 ' ' ~~~。 

        二、mysql常见的运算符: 

        +、-、*、/、%、 

        <,>,=,>=,<=,!=,<=>(用于安全等于null值。no <=> null) 

        NOT 或 !,AND 或 && ,OR 或 ||, 

        三、mysql常见的函数: 

        ABS(X)返回x的绝对值。 

        CURDATE() 返回当前的日期 2014-04-23 

        CURTIME() 返回当前的时间 19:17:13 

        NOW() 返回当前的日期和时间 2014-04-23 19:17:48 

        聚合函数:AVG(COLUME) 求该列的平均值, COUNT(COL) 计算列中非null的行数,MIN(COL) 求该列的最小值,MAX(COL) 求该列的最大值, SUM(COL) 求该列值的和,COUNT(*) 计算表中所有的行数,包括null值。 

        四、数据库和表: 

        1、创建数据库。 create database db1; 或着 create databse if not exists db1; 

        2、选择需要的数据库。 use db1; 

        3、删除数据库。 drop database db1; 或者 drop databse if exists db1; 

        4、创建表:create table table_name (name char(2),id int(2),....) type=xxxx; 

        4.1 字段约束: 

        首先 null 不等于 ' ' 

        null: 

        当某列的约束为null时,该字段的值可以插入null,表示没有数据 。建表时系统默认是null; 

        not null: 

        当某列的约束为not null时,说明该字段不能插入null值,但可以插入' '值; 

        defualt: 

        当某列的约束为default('**')时,若没有对该列插入任何数据,则默认是'*'这个值~ 但如果某列没有定义约束default的时候,系统默认是default(null);所以,此时插入数据则该数据的值为 null; 

        unique:(创建unique时,自动加了index) 

        (他是属于键key的一种)当某列的约束为unique时,则要求插入该列的数据值不能一样,连' '这个值都不能一样~但可以插入多个null值(没定义 not null的情况下),并且不会报错。系统默认不会加unique这个约束。可以在定义列的同时一起定义,也可以在最后定义。 

        语法:create table t(id int(2) ,unique key unique_name(id)); 

        auto_increment: 

        auto_increment修饰符只适用于int类型的字段。表明Mysql应该自动为该字段生成一个数(从 1 开始,每加一个数据该值 +1),意味着,我们插入数据时,不用为该字段插入数据,系统自动会帮我们添加,即使该字段被not null约束。 注意,一个表只能有一个auto_increment字段,而且该字段必须被定义为 键(可以是primary key、或unique键 )。 

        primary key: 

        (他是属于键key的一种,但他是主键)primary key = not null + unique~ 所以在创建primary key的时候,即使不加入not null,和unique来约束,也能有这两个的约束效果。 

        如: create table test (name int(8) primary key);就可以实现主键的功能。但一般书上都是这样写的 : 

        create table test (name int(8) not null primary key); 

        主键约束不仅仅可以约束一个单独字段,还可以约束多字段的组合。 

        如 : create table test (host int(8) not null,port int(8) not null,primary key(host,key));这样的话使表可以允许主机ip或port端口重复,但不允许ip和port同时重复。 可以看出,primary key 可以在定义列的同时一起定义,也可以在最后定义。 

        index: 

        把某列拿出来,单独储存,这样以后查找会直接定位查找,这样查询速度比较快。语句:

        INDEX index_name(name);为name这个字段创建了名为index_name的索引。也可以INDEX (name),这样的话为name这个字段创建了名为name的索引。 

        foreign key:(创建时,自动加了index) 

        在mysql中使用外键的表类型必须是innodb。其他类型的会自动忽略外键这个功能。设置了外键,则想向该外键插入值的时候,必须是被参照的键存在的值。 

        自动更新和删除值: 

        在定义外键的语句后加入 ON DELETE :XXX .XXX有四个值:cascade 删除包含与已删除键值有参照关系的所有记录、set null 删除包含与已删除键值有参照关系的所有记录并用null值来替换、restricr 拒绝删除要求(系统默认)、no action 什么也不做。ON DELETE restricr 系统默认。 

        在定义外键的语句后加入 ON UPDATE: xxxx.XXX有四个值 (和on delete一样。):cascade 更新包含与更新键值有参照关系的所有记录、set null 更新包含与已更新键值有参照关系的所有记录并用null值来替换、restricr 拒绝更新要求(系统默认)、no action 什么也不做。ON update restricr 系统默认。 

        外键定义,一般是在最后定义,如: 

        constraint fk_name foregin key (fk_id_colum) references table2 (id); 

        4.2 表的类型。 

        MyISM ISAM HEAP innoDB..等等。系统默认的是 innoDB.只有innoDB才有外键功能。 

        5、修改表: 

        基本命令:alter table table_name action action1,action action 2,....; 

        添加/删除列:alter table member add id varchr(9) not null;alter table drop name; 

        添加/删除的主键:alter table member add primary key(id);alter table t4 drop primary key; 

        设置/删除的默认值约束:alter table member alter age set/drop default 1; 

        加入/删除索引:alter table t1 add/drop index (index_id) ; 

        添加/删除unique键:alter table t4 add unique key (myname);alter table t1 drop index id ;(创建unique时,自动加了index)。 

        如果这个键已经存在相同的值,可加入ignore来删除相同数据,并保留第一条数据。

        alter ignore table user change name name int(1) unique; 

        设置新加入列的位置:alter table member add age int(8) AFTER id/FIRST; 

        重新命名表:alter table member rename to new_name; 

        //修改已经存在字段的名字和数据类型:alter table member Change name New_name char(9) auto_increment unique; 

        添加/删除auto_increment:(需要是键)。alter movie change id int(3) not null auto_increment ;ALTER TABLE t1 CHANGE id id INT(3) NOT NULL ; 

        添加/删除外键:alete table t1 add constraint fk_name foregin key (fk_id_colum) references table2 (id); 

        alter table t2 drop foreign key fk_name;注意你删除的是index还是foreign key name;你创外键的时候,他会自动帮你加入index。要搞清楚那个名是index的name还是foreign key的name; 

        action可选:ADD 加入新的列或新的约束,DROP ,ALTER,CHANGE 只能修改已经存在的列名字和类型和已存在的 not null,及其auto _increment约束,但不能修改已存在的 primary key 和unique这两个主键,但可以新加入这两个主键.MODIFY 和change区别很小,modify不会修改字段名。 

        6.删除表: 

        drop table t1; drop table if exists t1; 

        7.获得数据库、表、字段和索引的信息。 

        show databases; 

        show tables; 

        describe t1; 

        show index from t1; 

        show create table t9;. 

        五、使用数据: 

        5.1 /插入记录: 

        insert into table_name (name,id) values ('ab',123),('abccc',456); 

        可以插入计算或者函数:如 insert into grade (math,english,total,time) values (50,50,math+english,now()); 

        相当于math=50,english=50了。 

        可以使用default值,如 insert into grade (math,english) values(50,default); 

        使用autoincrement字段:插入的时候,不用写出来,系统会自动添加。insert into grade (math,english) values(50,default);它的id会自动加的、 使用unique字段:插入的值如果已经存在,则可以这样处理:在insert 后加入 

        action. 

        action有三个取值:ignore(忽略此操作,什么都不干) / on duplicate key update(只更新部分)/replace(删除旧的记录,新的完全取代) 

        如:insert ignore into t1(id,name)values(1,'q'); 

        insert into t1(id,name)values(1,'q')on duplicate key uodate 

        name='new'; 

        replace into t1 values (1,'new') ; 

        使用null值::insert ignore into t1(id,name)values(1,null); 

        5.2/更新记录: 

        update table-name set id=1,name=2,where age=18; 

        跟插入记录差不多,插入记录用法都可以在更新记录这里用。 

        5.3删除记录。 

        delete from table_name where id = 1; 

        删除表的所有记录: 

        delete from table-name; 

        5.4检索记录: 

        select col1,col2 from table-name where id =1; 

        col1,col2 名字是什么 ,返回结果的第一行就显示什么名字。 

        可以使用内函数: 

        如:select max(math),min(english) from grade; 

        若:select max(math),english from grade; 则返回math和english的最大值,而不是一个最大值+一堆数据。 

        5.5为表和列取别名: 

        select mmmmm as m, qqqqqq as q from tabel_name; 

        selcte m , q from table_name as t where t.m >10; 

        5.6对查询结果进行分组: 

        select age from student group by age; 

        聚合函数可以英语有记录组成的每个单独组。 

        selecte age ,count(*) from student group by age; 

        selecte age ,avg(age) from student group by age; 

        可以想group by 添加asc和desc关键字来以升序和降序为结果集排序。 

        selecte age ,avg(age) from student group by age desc/asc; 

        5.7 对查询结果进行排序。 

        ( 你不加order by 来排序的话,数据会显示实际在表中的顺序) 

        select idt3 from t3 order by idt3 desc{降序}/asc(升序); 

        同时进行多个排序: 

        select name,age from t1 order by name desc,age asc. 

        


面向对象的软件架构设计-汽车货款计算软件汽车4S店管理-软件才是关键
汽车制造业软件和IT解决方案汽车电子基础软件
汽车检测软件滤波汽车维修管理软件介绍
汽车4s管理软件怎么选如何利用汽车维修管理软件完善汽修厂前台接待规范
汽车美容管理软件功能分析汽车会员积分管理软件
汽车租赁软件汽车整车构造虚拟教学软件
汽修/汽配/汽车美容软件汽车快修服务软件
汽车4S店管理软件汽车构造仿真教学软件
信息发布:广州名易软件有限公司 http://www.myidp.net
  • 名易软件销售服务
  • 名易软件销售服务
  • 名易软件技术服务

  • MySQL个人学习笔记