09js、MySQL相关-2018/07/19
-
1.js的dom
- 理解一下文档对象模型:html文件加载到内存之后会形成一颗dom树,根据这些节点对象可以进行脚本代码的动态修改;在dom树当中 一切皆为节点对象
- dom方法和属性
- getElementsById
- getElementsByName
- getElementsByTagName//获取给定标签名的所有元素,返回数组
- hasChildNodes
- nodeName:一个字符串,其内容是给定节点的名字,只读属性
- nodeType只读属性
- nodeValue
- replaceChild 把父节点的一个子节点替换,返回已被替换的指针(获取父parentNode子childNodes)
- getAttribute返回一个给定元素的一个给定属性节点的值
- setAttribute输入name和value
- createElements被创建的元素的名字
- createTextNode创建一个文本节点并返回
- appendChild插入节点
- insertBefore
- nextSibling下一个兄弟
- removeChild
- innerHTML
-
2.sql分类
- DDL 定义数据库对象(库表列)
- 关键字:create、alter、drop
- DML 数据操作语言-表
- 关键字insert、update,delete
- 字符串类型和日期类型都要用单引号括起来
- DQL 查询数据
- DCL 控制,定义权限
- DDL 定义数据库对象(库表列)
-
3.操作数据库
- 创建:create database mydb1;
- 查询:show database....;
- 删除:drop database mydb1;
- 修改:alter database
- 切换:Use mydb1;
- 查看当前数据库:select database();
-
4.操作表
- 创建:create table 表名(字段1 字段类型,字段2 字段类型...);
- int
- double:double(5,2)表示最多5位有2位小数
- char:固定长度字符串;char(10)表示可以写10个字符
- varchar:可变长度字符串;
- text:字符串类型;存大数据的;
- blob:字节类型
- date:日期类型;格式:yyy-mm-dd;
- time:时间类型;格式:hh:mm:ss;
- timestamp:时间戳类型,会自动赋值
- datetime:日期时间类型
- 查看当前数据库的所有表:show tables;
- 查看表的所有字段:desc 表名;
- 添加一个列:alter table 表名 add 字段1 字段类型;
- 修改字段类型:alter table 表名modify 字段1 字段类型;
- 删除列,一次只能删一列:alter table 表名 drop 字段1;
- 改表名:rename table emp to user;
- 改字段名:alter table user change name username varchar(100);
- 删除表:drop table user;
- 创建:create table 表名(字段1 字段类型,字段2 字段类型...);
-
5.操作数据
- 插入:INSERT INTO 表名(id,name,gender...)VALUES(1,'zhangsan','female'...);
- 修改:UPDATE 表名 SET 列名1=列值1,列名2=列值2 .... WHERE 列名=值
- 删除:DELETE FROM 表名 WHERE 列名=值
-
6.DQL数据查询语言
- 查询返回的结果集是一张虚拟表
- SELECT 列名 FROM表名
- 查询所有列SELECT * FROM stu;
- 查询指定列SELECT sid, sname, age FROM stu;
- 条件查询:在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
- =、!=、<>不等于、<、<=、>、>=;
- BETWEEN…AND;
- IN(set);
- IS NULL; IS NOT NULL
- AND;
- OR;
- NOT;
- e.g.:查询学号为S1001,S1002,S1003的记录 SELECT * FROM stu WHERE sid IN ('S1001','S1002','S1003');
- 模糊查询:关键字like
- select * from book where bname like 'b'
- 通配符:(1)_:任意一个字符(2)%:任意0~n个字符
- 字段控制查询:
- 去除重复记录:SELECT DISTINCT sal FROM emp;
- 查看雇员的月薪与佣金之和:
- SELECT *,sal+IFNULL(comm,0) FROM emp;(使用了把NULL转换成数值0的函数IFNULL)
- SELECT *, sal+IFNULL(comm,0) AS total FROM emp;(起名为total,as也可以省略)
- 排序:
- 升序:SELECT *FROM stu ORDER BY sage ASC;(默认)
- 降序:SELECT *FROM stu ORDER BY age DESC;
- 聚合函数:聚合函数是用来做纵向运算的函数:
- COUNT():统计指定列不为NULL的记录行数;
- SELECT COUNT(*) FROM emp;
- MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
- MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
- SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
- AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
- COUNT():统计指定列不为NULL的记录行数;
- 分组查询:GROUP BY,HAVING子句
- 注:凡和聚合函数同时出现的列名,一定要写在group by 之后
- 查询每个部门的部门编号以及每个部门工资大于1500的人数:
- SELECT deptno, SUM(sal) FROM emp WHERE sal>1500 GROUP BY deptno;
- 查询工资总和大于9000的部门编号以及工资和:
- SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;
- 注:having与where的区别:
- 1.having是在分组后对数据进行过滤;where是在分组前对数据进行过滤
- 2.having后面可以使用聚合函数(统计函数);where后面不可以使用聚合函数。
- LIMIT方言:用来限定查询结果的起始行,以及总行数。
- 查询10行记录,起始行从3开始。SELECT * FROM emp LIMIT 3, 10;
- 第一个参数是开始的行数,第二个是要查询的总行数
- 查询顺序:select -> from -> where -> group by -> having -> order by -> limit
- 7.数据的完整性作用:保证用户输入的数据保存到数据库中是正确的。确保数据的完整性 , 在创建表时给表中添加约束。
-
8.实体完整性
- 作用:标识每一行数据不重复。
- 主键约束(primary key)每个表都要有一个主键。特点:数据唯一,且不能为null
- 第一种添加方式:CREATE TABLE student(Id int primary key,Name varchar(50));
- 第二种:CREATE TABLE student(id int,Name varchar(50),Primary key(id,name));(id,name同时相同时才报错)
- 第三种: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);
- 自动增长列(auto_increment)
- CREATE TABLE student(Id int primary key auto_increment,Name varchar(50));
-
9.域完整性
- 域完整性约束:数据类型 非空约束(not null) 默认值约束(default)
- 作用:限制此单元格的数据正确,不对照此列的其它单元格比较
- 非空约束:not null
- CREATE TABLE student(Id int pirmary key,Name varchar(50) not null);
- 默认值约束 default
- CREATE TABLE student(Id int pirmary key,Name varchar(50) not null,Sex varchar(10) default ‘男’); insert into student1 values(2,'jerry',default);
-
10.引用完整性
- 外键约束:FOREIGN KEY
- 第一种:
create table score(
id int,
score int,
sid int , // 外键列的数据类型一定要与主键的类型一致
CONSTRAINT //外键的名称
foreign key (sid) references student(id)
);//父表要有主键 - 第二种:ALTER TABLE score1 ADD CONSTRAINT fkstuscore FOREIGN KEY(sid) REFERENCES stu(id)
-
11.表与表之间的关系
- 多对多
- 一对多
- 一对一
-
12.多表查询
- 合并结果集
- 作用:合并结果集就是把两个select语句的查询结果合并到一起
- UNION:去除重复记录,例如:SELECT * FROM t1 UNION SELECT * FROM t2;
- UNION ALL:不去除重复记录,例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。
- 要求:被合并的两个结果:列数、列类型必须相同。
- 连接查询
- 使用主外键关系做为条件来去除无用信息
- SELECT emp.ename,emp.sal,emp.comm,dept.dname FROM emp,dept WHERE emp.deptno=dept.deptno;可以指定要查询的列
- 内连接
- SELECT * FROM emp e INNER JOIN dept d ON e.deptno=d.deptno WHERE...;
- 外连接
- 查询出的结果存在不满足条件的可能。
- SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.deptno=d.deptno;
- 左连接是先查询出左表(即以左表为主),然后查询右表,右表中满足条件的显示出来,不满足条件的显示NULL。同样也有右连接。
- 自然连接:可以自然保留相同的
- SELECT * FROM emp NATURAL JOIN dept;
- 子查询
- SELECT * FROM emp WHERE deptno=(SELECT deptno FORM emp WHERE ename='SCOTT');
- 一个select语句中包含另一个完整的select语句
- 自连接:自己连接自己,起别名
- SELECT e1.empno , e1.ename,e2.mgr,e2.ename FROM emp e1, emp e2 WHERE e1.mgr = e2.empno AND e1.empno = 7369;
- 合并结果集
-
13.MySQL的函数
-
14.备份
- 生成SQL脚本,导出数据;mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径
- 执行SQL脚本,恢复数据;mysql –u用户名 –p密码 数据库<要执行脚本文件路径