head first系列真是好书。
==================================================================
数据库是保存表和其他相关SQL结构的容器
数据库内的信息组成了表
列是存储在表中的一块数据
行是一组某个事物的列的集合
行列构成了表
********************************
CREATE DATABASE database_name
USE database_name
CREATE TABLE table_name
(
column1 VARCHAR(10),
column2 VARCHAR(4)
);
DESC table_name;
DROP TABLE table_name
********************************
CHAR 取出来都是固定的长度 255
INT INTEGER整数,可以为负。
BLOB 大文本数据
DATE 日期
VARCHAR 文本数据 可调整长度 255
DEC DECIMAL 小数 DEC(6.2) 总位数,小数点后位数
DATETIME 日期和时间
**********************************
INSERT INTO table_name
(column_name1,column_name2)
VALUES
('value1','value2');
可以
1.改变列顺序 (只要列名与数值对应即可)
2.省略列名 (数值顺序与创建表时的列顺序完全相同即可)
3.省略部分列 (只有部分列名与对应的数据)
**********************************
CREATE TABLE table_name
(
column1 VARCHAR(10)
NOT NULL,
column2 DEC(3.2) NOT NULL
DEFAULT 1.00
);
*****************************************
SELECT * FROM table_name
where column_name = 'value'
AND
INT = 0;
DEC INT 不需要用单引号,其他需要
\' or '' 来替代 VALUE中的引号
SELECT column1,column2
FROM table_name
WHERE column_name = 'value'
OR
INT
<> 0
OR
name
IS NULL
OR
some
LIKE '%CA'
OR
some
LIKE '_im'
OR
int
BETWEEN 30 AND 60
OR
name
IN ('name1','name2')
ORhttp://lautherf.iteye.com/admin/blogs/1622447/edit
name
NOT IN ('name3');
//
WHERE NOT name BETWEEN value1 AND value2
WHERE NOT name LIKE '%XX'
WHERE name IS NOT NULL
WHERE NOT name IS NULL
****************************************
DELETE FROM table_name
WHERE
column = 'value'
UPDATE table_name
SET column1 = 'value1',column2 = 'value2'
WHERE column3 = 'value3';
UPDATE table_name
SET column = 'value',int = int
+ 1;
*****************************************
原子性数据
1NF (first normal form) 原子,主键
1.每个数据行必须包含有原子性的值
2.每个数据行必须有独一无二的识别项,人称主键(Primary key)
::::主键不能为NULL;插入新记录时必须指定主键值;主键必须简洁;主键值不能改变
*****************************************
SHOW CREATE TABLE table_name;
******************************************
CREATE TABLE table_name
(
contact_id INT NOT NULL
AUTO_INCREMENT,
PRIMARY KEY (contact_id)
);
******************************************
ALTER TABLE table_name
ADD COLUMN column_name INT NOT NULL AUTO_INCREMENT
FIRST,
ADD COLUMN1 column1 VARCHAR(10)
AFTER column_name,
ADD PRIMARY KEY (content_id);
:: FIRST LAST
:: FIFTH SECOND
:: BEFORE AFTER
*******************************************
ALTER TABLE table_name
RENAME TO table_name2;
ALTER TABLE table_name2
CHANGE COLUMN column_name1 column_name2 INT NOT NULL AUTO_INCREMENT
ADD PRIMARY KEY(column_name2);
ALTER TABLE table_name
MODIFY COLUMN column_old
VARCHAR(20);
ALTER TABLE table_name
DROP COLUMN column_name;
*********************************************
SELECT RIGHT(column,2) FROM table_name
SELECT LEFT(column,2) FROM table_name
SELECT SUBSTRING_INDEX(column,',',1) FROM table_name
UPPER(string) LOWER(string)
REVERSE(string)
LTRIM(string) RTRIM(string)
LENGTH(string)
***********************************************
UPDATE table_name
SET column_name =
CASE
WHEN column1 = value1 THEN newvalue1
WHEN column2 = value2 THEN newvalue2
ELSE newvalue3
END
*************************************************
SELECT column
FROM table
WHERE
title LIKE 'A%'
ORDER BY column2 DESC;
//ASC DESC
SELECT SUM(col)
FROM table
WHERE col = 'value'
GROUP BY col
ORDER BY col;
//AVG(col) MAX(col) MIN(col) COUNT(col)
***************************************************
SELECT DISTINCT col
FROM table
ORDER BY col
LIMIT 2;
//LIMIT 0,4
****************************************************
外键 是表中的某一列,它引用到另一个表的主键,可以NULL,不唯一
约束 constraint
CREATE TABLE table (
int_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
interest VARCHAR(50) NOT NULL,
contact_id INT NOT NULL,
CONSTRAINT my_contacts_contacts_contact_id_fk
FOREIGN KEY (contact_id)
REFERENCES my_contacts (contact_id)
);
数据模式 一对一 一对多 多对多
*******************************************************
组合键 就是由多个数据列构成的主键,组合各列后形成具有唯一性的主键
T.x -> T.y
x影响y y依赖x
传递函数依赖 任何非键列于另一个非键列有关联
部分函数依赖 非主键的列依赖于组合主键的某个部分
********************************************************
第二范式 2NF
1. 达成1NF
2.没有部分函数依赖
第三范式 3NF
1.达成2NF
2.没有传递函数依赖
********************************************************
CREATE TABLE profession
(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
profession VARCHAR(20)
)
AS
SELECT profession FROM table
GROUP BY profession
ORDER BY profession;
AS 输出通道
SELECT profession AS mc_prof
FROM my_contact AS mc
GROUP BY mc_prof
ORDER BY mc_prof;
**********************************************************
SELECT t.boy,b.boy
FROM toys AS t
CROSS JOIN
boys AS b;
//交叉联接 全联接
SELECT boys.boy,toys.toy
FROM boys
INNER JOIN
toys
ON boys.toy_id = toys.toy_id;
ORDER BY boys.boy;
//内联接
SELECT boys.boy,toys.toy
FROM boys
NATURE JOIN
toys;
//自然联接 无ON 无条件联接 共享列名
******************************************
SELECT col1,col2
FROM table
WHERE col = (SELECT col FROM table );
包含查询 或 外层查询 子查询
SELECT mc.first_name,mc.last_name,
(SELECT state
FROM zip_code
WHERE mc.zip_code = zip_code) AS state
FROM my_contacts mc;
***********************************************
SELECT g.girl,t.toy
FROM girls g
LEFT OUTER JOIN toy t
ON g.toy_id = t.toy_id;
g-t
//左外联接 主表 join 附表 附表可为NULL
SELECT title FROM table
UNION
SELECT title FROM table1
UNION
SELECT title FROM table2
ORDER BY title;
//UNION ALL 所有的值 可重复
SELECT title FROM job_current
INTERSECT
SELECT title FROM job_desired;
//INTERSECT EXCEPT
*****************************************
http://www.iteye.com/topic/465807
左联接以左表为主 left join 或者 left outer join
右联接以右表为主 right join 或 right outer join
全联接以项多的表为主 full join 或者 full outer join
内联接以以两表都有的项为主 inner join 或者 join
交叉连接以符合WHERE条件的笛卡尔积组成 cross join 不带 where 条件的
笛卡尔积联接 无WHERE的交叉联接
自联接表示从属,上下级关系
******************************************
CREATE TABLE table
(
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
coin CHAR(1) CHECK (coin IN('P','N','D','Q'))
*******************************************
CREATE VIEW view AS
SELECT * FROM table;
************************
事务
SELECT * FROM
(SELECT col FROM table WHERE col = 'value' AS table_name);
ACID
ATOMICITY 原子性 不能只执行一部分事务
CONSISTENCY 一致性 事务完成后应保持数据库一致
ISOLATION 隔离性 每次的事务应看到同一个数据库
DURABILITY 持久性 事务完成后能够正确的保存在数据库中,免受断电等危害
START TRANSACTION;
COMMIT;
ROLLBACK;
***********************************************
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('XXXX');
CREATE USER name IDENTIFIED BY 'XXXX';
GRENT SELECT ON table_name TO someone;
REVOKE SELECT ON table_name FROM someone;
REVOKE SELECT ON table_name FROM someone CASCADE; 取消传递的权限
CREATE ROLE data_entry;
GRENT SELECT,INSERT ON some_table TO data_entry;
GRENT data_entry TO someone;
GRENT data_entry TO someone WITH ADMIN OPTION; 允许赋予别人
REVOKE data_entry FROM someone CASCADE;
REVOKE data_entry FROM someone RESTRICT; 收到错误信息,如已经赋权给别人
DROP ROLE data_entry ;
分享到:
相关推荐
### Head First SQL 笔记概览 #### 第一章 创建与管理数据库 - **创建数据库** 使用 `CREATE DATABASE` 语句可以创建一个新的数据库。语法格式如下: ```sql CREATE DATABASE database_name; ``` - **使用...
### Head First SQL 阅读笔记关键知识点梳理 #### 数据库与表的概念 - **数据库**: 它是存储表及其他 SQL 结构的容器。数据库的主要功能是管理数据,确保数据的完整性、一致性和安全性。 - **表**: 表是数据库内...
这本书以易理解的图文并茂的形式,深入浅出地讲解了这两个重要技术。 Servlet是Java编程语言中的一个接口,用于扩展服务器的功能,特别是Web服务器。它允许程序员创建动态、交互式的HTTP服务。Servlet可以处理...
SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。 多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号...
### Head First C# 中文版 第一章:高效构建可视化应用程序 #### 1. 引言 本章节主要介绍了如何利用C#与Visual Studio IDE快速地构建高效的可视化应用程序。通过结合这两种工具,开发者能够将更多的时间和精力投入...
pandas 和 numpy 笔记 在数据科学和机器学习中,pandas 和 numpy 是两种非常重要的库,它们提供了强大的数据处理和分析功能。下面是对 pandas 和 numpy 的一些重要知识点的总结。 数据导入 pandas 提供了多种方式...
环境高级编程、深入理解计算机系统。 参考 鸟哥的 Linux 私房菜。 网络 :cloud: 参考 谢希仁的计算机网络、计算机网络 自顶向下方法、TCP/IP 详解。 参考 图解 HTTP,更多的是参考网上的文档,比如 MDN、维基百科等...
### LotusDomino学习笔记知识点概览 #### 1. 选取视图的列的内容 (@Trim @DbColumn) - **@Trim**: 是一个内置的LotusScript函数,用于去除字符串两端的空白字符。 - **@DbColumn**: 此函数用于获取指定列的信息。...
环境高级编程、深入理解计算机系统。 参考 鸟哥的 Linux 私房菜。 网络 :cloud: 参考 谢希仁的计算机网络、计算机网络 自顶向下方法、TCP/IP 详解。 参考 图解 HTTP,更多的是参考网上的文档,比如 MDN、维基百科等...
Head First 串讲笔记.pdf可能以易于理解的方式阐述了这些概念。 3. **JSTL**:JSTL是JavaServer Pages Standard Tag Library的缩写,它提供了用于处理常见任务的标签,比如XML处理、SQL查询、国际化和格式化。...
3. **工具书**:经典的Java教材,如《Thinking in Java》、《Head First Java》等,提供了全面而深入的理论知识。 4. **在线视频**:通过观看教学视频,可以直观地看到代码的编写和执行过程,加深理解。 在...