sql学习笔记
SQL
从命令行中连接mysql:
1 [root@host]# mysql -u root -p 2 Enter password:******
数据类型:
CHARACTER/CHAR:必须是事先设定好的长度。(要加单引号)
INT/INTEGER:整数或者负数
BLOB:大量文本数据。(要加单引号)
DATE:记录日期,通常是将来的日期。(要加单引号)
VARCHAR:储存文本数据,最大长度255个字符。(要加单引号)
DATETIME/TIMESTAPE:记录日期和时间,通常是当前时间。(要加单引号)
TIME:记录时间
DEC/DECIMAL:提供数值空间,直到装满为止。(数字个数,小数点个数)
基本命令:
CREATE DATABASE:使用这条语句设置装有表的数据库
USE DATABASE:进入数据库以设置需要的表
CREATE TABLE:开始设置表
DESC:查看表结构
DROP TABLE:删除出错的表
INSERT:插入数据
1 INSERT INTO table_name (col_name1,col_name2,...) 2 VALUES (value1,value2,...);
NULL:未定义的值,不等于0,也不等于空值。没有在INSERT语句中赋值的列默认为NULL。可以把列改为不接受NULL值,在创建表时使用关键之NOT NULL。
DEFAULT:可用于日后输入缺乏部分数据的记录时自动填入默认值。
SELECT *:用于选择表中的所有列。
WHERE:设定特定的搜索条件,只会返回符合条件的行
SELECT:只选择需要看到的列
1 SELECT col_name1,col_name2 2 FROM table_name 3 WHERE condition
BETWEEN:选择一个范围内的值。
LIKE 搭配 % 或 _:使用LIKE搭配通配符,可搜索部分文本字符串。
1 WHERE location LIKE '%CA'; //找以CA结尾的地点 2 '_CA'; //一个未知字符的替身
转义:语句中的单引号应该转义
1 'Annika\'s diary'
结合查询:AND / OR
IS NULL:因为null!=null 因此用IS NULL来查找NULL。
1 WHERE 2 col_name IS NULL
IN:关键字IN,加上括号围起的值的集合,只要列值匹配集合中的任何值,立即返回该行或者该列(NOT IN相反)
1 WHERE 2 col_name IN (value1,value2);
NOT:not一定要跟在WHERE后,或者AND/OR后
DELETE:删除一行数据
1 DELETE FROM table_name //单独这一行可以删除表中的每一行 2 WHERE 3 col_name = 'value';
UPDATE:改变数据
1 UPDATE table_name 2 SET 3 col_name = 'new_value' 4 second_name = 'new_value' 5 //如果不加WHERE,SET提到的每行都会被修改为新值 6 WHERE colname = 'old_value';
SET:更新数值,而且可以做简单的运算
SHOW CREATE TABLE + table_name:返回可以重建表但没有数据的CREATE TABLE语句,这样可以查看表的创建方式
PRIMARY KEY:设定主键
AUTO_INCREMENT:让SQL软件自动为该列填入数字
ADD:添加
ALTER:更新表
1 > ALTER TABLE my_contacts 2 -> ADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST, 3 -> ADD PRIMARY KEY (contact_id);
ATOMIC DATA:数据原始性。列中的数据已经拆解成查询所需的最小单位,就是具有原子性
-
规则1:具有原子性意味着在同一列中不会存放多个类型相同的数据
-
规则2:具有原子性意味着不会用多个列来存储类型相同的数据