您的位置:首页 > 移动开发 > Unity3D

快速上手MySql && MySql GUI工具 SQLyog Community (3)

2017-06-14 18:53 501 查看
(本节内容主要是DML语言)

/*
有关数据表的DML操作:

INSERT INTO

DELETE、TRUNCATE

UPDATE

SELECT(条件查询、查询排序、聚合函数、分组查询)

多表链接和子查询

INSERT语句

插入数据必须先掺入tb_emp,因为tb_emp有外键约束

*/

CREATE TABLE tb_dept(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(18) UNIQUE,

loc VARCHAR(18),

description VARCHAR(200)

);

CREATE TABLE tb_emp(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(18) NOT NULL,

sex VARCHAR(2) DEFAULT '男' CHECK(sex='男' OR sex='女'),

age INT CHECK(age > 18 OR age <60),

address VARCHAR(200),

email VARCHAR(100) UNIQUE,

dept_id INT,

CONSTRAINT FOREIGN KEY tb_emp_fk(dept_id) REFERENCES tb_emp(id)

);


#插入数据必须先掺入tb_emp,因为tb_emp有外键约束
#INSERT INTO table [(colunm[,column...])] VALUE(value [,value...]);
#1.指明字段进行插入,注意字段和值数量和类型都需要匹配
INSERT INTO tb_dept(NAME,loc,description) VALUES('开发部','广州','负责软件开发工作');

INSERT INTO tb_dept(NAME,loc,description) VALUES('开发部','广州');

INSERT INTO tb_dept(NAME,loc) VALUES('开发部','广州','负责软件开发工作');

#2.如果插入的values是所有字段,可以不用显示写插入的字段名,强烈不推荐,不影响自动增长
INSERT INTO tb_dept VALUES(2,'财务部','广州','负责财务工作');

INSERT INTO tb_dept(NAME,loc,description) VALUES('运维部','广州','负责运维工作');

#测试 auto_increment
#auto_increment记住曾经生成的值
INSERT INTO tb_dept(NAME,loc,description) VALUES('运维部','广州','负责运维工作');

#3.一次性插入多条记录 MySql特有
INSERT INTO tb_dept(NAME,loc,description) 
VALUES('财务部','广州','负责财务工作'),
('市场部','广州','负责市场工作'),
('采购部','广州','负责采购工作');

#4.可以从一张表中插入数据
#创建一张表和tb_dept表结构一样,这种方式建表,只是复制表结构,不复制约束
CREATE TABLE tb_dept2
SELECT * FROM tb_dept 

CREATE TABLE tb_dept2
SELECT * FROM tb_dept WHERE id = 99

INSERT INTO tb_dept2(id,NAME,loc,description)
SELECT id,NAME,loc,description FROM tb_dept

INSERT INTO tb_emp(NAME,age,address,email,dept_id)
VALUES('mary',26,'gz','mary@163.com',1)

#更新 UPDATE table SET column = value[,column=value] [WHEREcondition];
#where的时候建议使用主键或者unique主键最后,因为和业务无关
UPDATE tb_emp SET age=24 WHERE id =1 ;
UPDATE tb_emp SET age=24,sex='女' WHERE id =1 ;

#删除 DELETE [FROM] table [WHERE Econdition];
DELETE FROM tb_emp;#删除表所有数据(没有成功运行)
DELETE FROM tb_emp WHERE id=2;
DELETE FROM tb_emp WHERE id=3;

/*
#删除 DELETE [FROM] table [WHERE Econdition];
-删除不需要指列名,因为删除总是整行删除,where子句里是一个条件表达式,只有符合该条件的行才会被删除。
没有where子句意味着删除所有数据。
-删除可以一次删除多行,删除哪些行采用where子句限定。

*/
#TRUNCATE语句: 截断表,DDL语句,删除所有语句
TRUNCATE TABLE tb_emp;

/*删除三种方式
(1)delete删除数据,保留表结构,可以回滚,如果数据量大,很慢,
    回滚是因为备份了删除的数据(删除数据时有2个动作,删除与备份)
(2)TRUNCATE删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,
    速度相对快。(删除数据时只有一个动作,删除)
(3)DROP删除数据和表结构,删除速度最快
    (直接从内存抹去这一块数据)
*/

#数据库机制,auto_commit,值是true和false
#查询MySql自动提交设置(1自动提交,0手动提交)
SELECT @@autocommit;

#修改提交方式
SET autocommit=1;

INSERT INTO tb_emp(NAME,age,address,email,dept_id)
VALUES('mary',26,'gz','mary@163.com',1)




/*

最简单的SELECT语句

SELECT{*,column[alias],...}

FROMtable;

-说明:SELECT列名列表。*表示所有列。

       FROM提供数据源(表名/视图名)

       默认选择所有行

SELECT语句中的算术表达式

(1)对数值型数据列、变量、常量可以使用算数操作符创建表达式;

(2)对日期数据列、变量、常量可以使用部分算数操作符创建表达式;

(3)运算符不仅可以在列和常量之间进行运算,也可以在多列之间进行运算;

SELECT Ename,sal,sal*12 FROM tb_emp;

*/

SELECT{*,column[alias],...} FROMtable;

#查找 字段,字段 从 表

SELECT * FROM tb_dept #*代表所有的列

SELECT id FROM tb_dept #查询单个字段

#算术表达式

/*

乘除运算的优先级高于加减法

同级运算符的顺序是从左到右

表达式中使用括号可强行改变优先级的运算顺序

*/

#NULL 和 0还有空字符串不是一个概念

/*

定义字段的别名

.改变列的标题头

.用于表示计算结果的含义

.作为列的别名

.如果别名中使用特殊字符,或者是强制大小写敏感,或有空格,都可以通过为别名添加双引号实现。

重复记录

.缺省情况下查询显示所有行,包括重复行。

.使用DISTINCT关键字可以从查询结果中清除重复记录

.DISTINCT的作用是后面所有字段的组合

使用where子句限定返回的记录

-字符串和日期要用单引号括起来

比较运算符=、>=、<=、>、<、<>

其他运算符:between and(包含最小值和最大值)、IN、LIKE(模糊查询,注意:%表示零或多个字符;_表示一个字符)、使用IS NULL运算符      

逻辑运算符:and、or、not(优先级:括号最高)

对结果集排序 :order by 列名 asc/desc

*/


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: